Ошибка ERR_INVALID_ARG_TYPE при отправке сообщения от бота Viber на botbuilder-viber
Проблема в npm-модуле
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" должен быть одним из типа string, 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 / li b / 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 [as 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" должен быть одним из типа string, 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 / li b / 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 [as 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)
1 ответ
Я добавил bodyparser только для определенных маршрутов, после этого коннектор начинает работать.