我试图根据 Twilio 的示例(https://github.com/TwilioDevEd/ipm-quickstart-node)制作一个简单的聊天应用程序。我能够快速启动并运行它。
我想修改一下
- 每当用户通过 Web 界面 ( ) 发送消息时
http://localhost:3000
,它都会触发 Twilio 的 webhook。 - 此 Webhook PING 映射到 AWS Lambda 函数的 AWS API 端点。
- 这个 AWS Lambda 函数接收 Channel Sid,进行身份验证,然后简单地回复“你说什么?”
我已正确设置我的 AWS Lambda 和 AWS API Gateway。
这是我的 Lambda 代码示例:
'use strict';
var TWILIO = require('twilio');
var AccessToken = require('twilio').AccessToken;
var IpMessagingGrant = AccessToken.IpMessagingGrant;
var http = require("http");
module.exports.handler = function(event, context, cb) {
var accountSid = 'TWILIO-ACCOUNT-SID';
var authToken = 'TWILIO-AUTH-TOKEN';
var IpMessagingClient = TWILIO.IpMessagingClient;
var client = new TWILIO.IpMessagingClient(accountSid, authToken);
var service = client.services('TWILIO-SERVICE-SID');
service.channels(event.ChannelSid).messages.create({
body: 'what say you ?',
from: FROM
}).then(function(response) {
console.log("this is success");
console.log(response);
//return context.done();
return context.succeed(response);
//return cb(null, response);
}).fail(function(error) {
console.log("this is failure");
console.log(error);
//return context.done();
return context.fail(JSON.parse(error.errorMessage));
//return cb(null, error);
});
};
在客户端,Twilio 给了我一个50056
错误(https://www.twilio.com/docs/api/errors/50056),上面写着“Webhook 取消了对命令的处理”。根据文档,我的函数可能没有返回HTTP 200
状态,这没有意义,因为当我尝试使用 PostMan 对其进行 ping 操作时,我确实收到了 200 状态代码。
检查 AWS Cloudfront 日志,如果我尝试通过 Web 界面聊天触发 AWS Lambda 函数,甚至没有调用 Lambda 函数。
另一方面,如果我尝试通过 PostMan 等工具 PING 这个 AWS Lambda 函数,AWS Cloudfront 日志显示该函数已被调用,尽管由于 Channel Sid 不是正确的,因此不会做出任何回复。
我该如何解决50056
错误?或者 Twilio 的 IP 消息传递 webhook 是否可能不允许 PINGing AWS API 端点?
谢谢!