使用 node.js 处理入站 Twilio 消息
Posted
技术标签:
【中文标题】使用 node.js 处理入站 Twilio 消息【英文标题】:Handling inbound Twilio messages using node.js 【发布时间】:2016-07-24 18:09:03 【问题描述】:我正在阅读与 SMS 消息响应相关的 Twilio 文档 (https://www.twilio.com/help/faq/why-does-my-twilio-number-respond-with-thanks-for-the-message-configure-your-numbers-sms-url-to-change-this-message) 的部分内容,并且正在尝试构建一个 node.js 应用程序,该应用程序将允许我使用编程响应来响应入站 SMS 消息。
我一直在尝试模拟这个处理类似问题 (How can I respond to incoming Twilio calls and SMS messages using node.js?) 的 SO 帖子,并具有以下代码:
var AUTH_TOKEN = "*********************";
var twilio = require('twilio');
var express = require('express');
var http = require('http');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded());
app.post('/welcome/sms/reply/', function(req, res)
//Validate that this request really came from Twilio...
if (twilio.validateExpressRequest(req, AUTH_TOKEN))
var twiml = new twilio.TwimlResponse();
twiml.say('Hi! Thanks for checking out my app!');
res.type('text/xml');
res.send(twiml.toString());
else
res.send('you are not twilio. Buzz off.');
);
http.createServer(app).listen(3000);
通过 REST 客户端调用 POST 请求 /welcome/sms/reply 会产生 else 语句,我不知道为什么,因为 AUTH_TOKEN 正是我在我的帐户仪表板中拥有的。
【问题讨论】:
【参考方案1】:这里是 Twilio 开发者宣传员。
如果您尝试使用 REST 客户端调用您自己的端点并且您正在验证请求 (twilio.validateExpressRequest
),那么您将需要构建您的请求 same as Twilio does。至关重要的是,这包括一个 X-Twilio-Signature
标头,请在该链接上阅读更多内容以获取更多详细信息。
如果您使用 Twilio 测试您的代码,它应该可以工作并且是一个有效的请求。
【讨论】:
感谢 Phil - 原来我没有在我的 Twilio 帐户中设置 ngrok 并正确更改请求 URL,所以一旦我修复了一切正常。【参考方案2】:在合并 ngrok + Express 时,请参阅这篇文章作为参考。 https://www.twilio.com/blog/2015/09/monitoring-call-progress-events-with-node-js-and-express.html
【讨论】:
以上是关于使用 node.js 处理入站 Twilio 消息的主要内容,如果未能解决你的问题,请参考以下文章
如何从 twilio 跟踪用户消息和用户电话号码到我们的应用程序