从 Viber 机器人向 botbuilder-viber 发送消息时出错 ERR_INVALID_ARG_TYPE
Error ERR_INVALID_ARG_TYPE when sending message from Viber bot to botbuilder-viber
npm-module 中的问题
https://www.npmjs.com/package/botbuilder-viber
平台
操作系统:Ubuntu
节点版本:9.3.0
NPM 版本:5.5.1.
代码
var viber = require('botbuilder-viber');
var express = require('express');
var bodyParser = require('body-parser');
var viberOptions = {
Token: '***',
Name: '***',
AvatarUrl: '***'
}
var viberChannel = new viber.ViberEnabledConnector(viberOptions);
var expressApp = express();
expressApp.listen(process.env.port || process.env.PORT || 3978, function() {
console.log("Express server is running.");
});
expressApp.use(bodyParser.urlencoded({ extended: false }));
expressApp.use(bodyParser.json());
bot.connector(viber.ViberChannelId, viberChannel);
expressApp.use('/viber/webhook', viberChannel.listen());
预期行为
没有错误
实际行为
当我从我的 viber 机器人发送消息时出错(每次重复两次)。
TypeError [ERR_INVALID_ARG_TYPE]: "data" 参数必须是字符串、TypedArray 或 DataView 类型之一
在 Hmac.update (internal/crypto/hash.js:53:11)
在 MessageValidator._calculateHmacFromMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:17:54)
在 MessageValidator.validateMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:11:30)
在 _app.use (/app/node_modules/viber-bot/lib/middleware.js:61:32)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在 textParser (/app/node_modules/body-parser/lib/types/text.js:60:7)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在 expressInit (/app/node_modules/express/lib/middleware/init.js:40:5)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在查询时 (/app/node_modules/express/lib/middleware/query.js:45:5)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在 Function.handle (/app/node_modules/express/lib/router/index.js:174:3)
TypeError [ERR_INVALID_ARG_TYPE]: "data" 参数必须是字符串、TypedArray 或 DataView 类型之一
在 Hmac.update (internal/crypto/hash.js:53:11)
在 MessageValidator._calculateHmacFromMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:17:54)
在 MessageValidator.validateMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:11:30)
在 _app.use (/app/node_modules/viber-bot/lib/middleware.js:61:32)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在 textParser (/app/node_modules/body-parser/lib/types/text.js:60:7)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在 expressInit (/app/node_modules/express/lib/middleware/init.js:40:5)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在查询时 (/app/node_modules/express/lib/middleware/query.js:45:5)
在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13)
在 /app/node_modules/express/lib/router/index.js:284:7
在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
接下来 (/app/node_modules/express/lib/router/index.js:275:10)
在 Function.handle (/app/node_modules/express/lib/router/index.js:174:3)
在此连接器开始工作后,我仅将 bodyparser 添加到特定路由。
npm-module 中的问题
https://www.npmjs.com/package/botbuilder-viber
平台
操作系统:Ubuntu
节点版本:9.3.0
NPM 版本:5.5.1.
代码
var viber = require('botbuilder-viber');
var express = require('express');
var bodyParser = require('body-parser');
var viberOptions = {
Token: '***',
Name: '***',
AvatarUrl: '***'
}
var viberChannel = new viber.ViberEnabledConnector(viberOptions);
var expressApp = express();
expressApp.listen(process.env.port || process.env.PORT || 3978, function() {
console.log("Express server is running.");
});
expressApp.use(bodyParser.urlencoded({ extended: false }));
expressApp.use(bodyParser.json());
bot.connector(viber.ViberChannelId, viberChannel);
expressApp.use('/viber/webhook', viberChannel.listen());
预期行为
没有错误
实际行为
当我从我的 viber 机器人发送消息时出错(每次重复两次)。
TypeError [ERR_INVALID_ARG_TYPE]: "data" 参数必须是字符串、TypedArray 或 DataView 类型之一 在 Hmac.update (internal/crypto/hash.js:53:11) 在 MessageValidator._calculateHmacFromMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:17:54) 在 MessageValidator.validateMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:11:30) 在 _app.use (/app/node_modules/viber-bot/lib/middleware.js:61:32) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在 textParser (/app/node_modules/body-parser/lib/types/text.js:60:7) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在 expressInit (/app/node_modules/express/lib/middleware/init.js:40:5) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在查询时 (/app/node_modules/express/lib/middleware/query.js:45:5) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在 Function.handle (/app/node_modules/express/lib/router/index.js:174:3)
TypeError [ERR_INVALID_ARG_TYPE]: "data" 参数必须是字符串、TypedArray 或 DataView 类型之一 在 Hmac.update (internal/crypto/hash.js:53:11) 在 MessageValidator._calculateHmacFromMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:17:54) 在 MessageValidator.validateMessage (/app/node_modules/viber-bot/lib/message/message-validator.js:11:30) 在 _app.use (/app/node_modules/viber-bot/lib/middleware.js:61:32) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在 textParser (/app/node_modules/body-parser/lib/types/text.js:60:7) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在 expressInit (/app/node_modules/express/lib/middleware/init.js:40:5) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在查询时 (/app/node_modules/express/lib/middleware/query.js:45:5) 在 Layer.handle [作为 handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 在 trim_prefix (/app/node_modules/express/lib/router/index.js:317:13) 在 /app/node_modules/express/lib/router/index.js:284:7 在 Function.process_params (/app/node_modules/express/lib/router/index.js:335:12) 接下来 (/app/node_modules/express/lib/router/index.js:275:10) 在 Function.handle (/app/node_modules/express/lib/router/index.js:174:3)
在此连接器开始工作后,我仅将 bodyparser 添加到特定路由。