Ошибка 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 только для определенных маршрутов, после этого коннектор начинает работать.

Другие вопросы по тегам