如何在Twilio Whatsapp API中为Azure Node.js机器人配置端点URL?

时间:2019-03-26 10:06:43

标签: node.js azure twilio botframework twilio-api

我已经使用Bot Framework创建了一个Node.js机器人并将其部署到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());

用于从Twilio向手机号码发送传出WhatsApp消息的代码:

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 INhttps://msbotnew1.azurewebsites.net/api/messages

当从whatsapp发送短信时,我在Bot应用程序输出中收到以下错误:

ERROR: ChatConnector: receive - invalid request data received.

我尝试了各种无效的端点URL组合,例如https://msbotnew1.azurewebsites.net/smshttps://msbotnew1.azurewebsites.net/api/messages/sms https://msbotnew1.azurewebsites.net/api/sms

如何获取正确的终结点URL,以使用Twilio将来自Whatsapp手机的传入消息发送到Azure node.js机器人?

1 个答案:

答案 0 :(得分:0)

不幸的是,由于Twilio尚未完全开发其Whatapps通道,因此您无法将Whatapps连接到TwiML App,该TwiML App将消息正确路由到Microsoft BotFramework。但是,Microsoft BotFramework当前正在努力将Whatsapp添加为官方频道,这意味着您可以添加频道而不必通过Twilio。该GitHub Issue正在跟踪Whatsapp功能请求。

如果您不能等待Microsoft将Whatsapp添加为渠道,我建议您使用Twilio节点包和DirectLine将消息从Whatsapp路由到您的机器人。

有关如何为BotFramework配置Twilio的更多详细信息,请查看文档中的分步操作guide

希望这会有所帮助!