Как настроить URL-адрес конечной точки в Twilio Whatsapp API для бота Azure Node.js? - PullRequest
0 голосов
/ 26 марта 2019

Я создал бот Node.js с использованием Bot Framework и развернул его в Azure.По умолчанию конечная точка обмена сообщениями бота для бота Azure msbotnew1 будет

https://msbotnew1.azurewebsites.net/api/messages

Я могу общаться с ботом с помощью Web Chat, а также я могу отправлять исходящие сообщения WhatsApp сTwilio на мой номер телефона.

Код для установки конечной точки обмена сообщениями Azure:

var restify = require('restify');
var builder = require('botbuilder');
var botbuilder_azure = require("botbuilder-azure");
var request = require("request");
var twilio = require("twilio");
var fs = require('fs');

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
   console.log('%s listening to %s', server.name, server.url); 
});

// Create chat connector for communicating with the Bot Framework Service
var connector = new builder.ChatConnector({
    appId: process.env.MicrosoftAppId,
    appPassword: process.env.MicrosoftAppPassword,
    openIdMetadata: process.env.BotOpenIdMetadata 
});

// Listen for messages from users 
server.post('/api/messages', connector.listen());

Код для отправки исходящих сообщений WhatsApp из Twilio на номер мобильного телефона:

var twilio = require("twilio");

const accountSid = process.env.accountSid;
const authToken = process.env.authToken;
const client = require('twilio')(accountSid, authToken);

client.messages
        .create({
                body: 'Hello there!',
                from: 'whatsapp:+14155238886',
                to: process.env.whatsappToNumber
        })
        .then(message => console.log(message.sid))
        .done();

Но для входящих сообщений на этой странице должен быть задан URL входящей конечной точки:

https://www.twilio.com/console/sms/whatsapp/sandbox

Входящая конечная точка на вышеуказанной странице устанавливается следующим образом:

WHEN A MESSAGE COMES IN: https://msbotnew1.azurewebsites.net/api/messages

Я получаю следующую ошибку в выводе приложения Bot, когда входящее сообщение было отправлено с помощью whatsapp:

ERROR: ChatConnector: receive - invalid request data received.

Iпробовал различные комбинации URL-адресов конечных точек, которые не работают, например https://msbotnew1.azurewebsites.net/sms, https://msbotnew1.azurewebsites.net/api/messages/sms https://msbotnew1.azurewebsites.net/api/sms

Как получить правильный URL-адрес конечной точки для отправки входящих сообщений с мобильного телефона Whatsappв бот Azure node.js с использованием Twilio?

1 Ответ

0 голосов
/ 27 марта 2019

К сожалению, поскольку Twilio еще не полностью разработал свой канал Whatapps, вы не можете подключить Whatapps к приложению TwiML, которое должным образом направляет сообщения в Microsoft BotFramework. Тем не менее, Microsoft BotFramework в настоящее время работает над добавлением Whatsapp в качестве официального канала, что означает, что вы можете добавить канал без необходимости прокладывать маршрут через Twilio. Запрос функции WhatsApp отслеживается с помощью этого GitHub Issue .

Если вы не можете дождаться, когда Microsoft добавит Whatsapp в качестве канала, я бы порекомендовал использовать пакет узлов Twilio и DirectLine для маршрутизации сообщений из Whatsapp на вашего бота.

Подробнее о настройке Twilio для BotFramework см. В пошаговом руководстве в документации.

Надеюсь, это поможет!

...