Twilio客户端错误:使用AWS Lambda / AWS API网关进行Twilio IP消息传递

时间:2016-06-19 17:12:33

标签: node.js amazon-web-services lambda twilio twilio-api

我试图根据Twilio的例子(https://github.com/TwilioDevEd/ipm-quickstart-node)创建一个简单的聊天应用程序。我能够快速启动并运行。

我想修改一下

  1. 每当用户通过网络界面发送消息时( http://localhost:3000),它会触发Twilio的webhook。
  2. 此webhook PING是映射到AWS Lambda的AWS API端点 功能。
  3. 此AWS Lambda函数接收Channel Sid, 验证,并简单回复"你说什么?"
  4. 我已正确设置AWS Lambda和AWS API网关。

    以下是我的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等工具对此AWS Lambda函数进行PING,则AWS Cloudfront日志会显示该函数已被调用,但由于Channel Sid不正确,因此不会进行任何回复。 / p>

    如何解决50056错误?或者,Twilio的IP消息传递webhooks是否可能不允许PINGing AWS API端点?

    谢谢!

1 个答案:

答案 0 :(得分:2)

回答我自己的问题: - 如果我将Twilio webhook更改为GET请求,它就可以了!

所以我怀疑AWS Lambda没有快速响应POST请求,或者Twilio的webhook对POST请求的期望也非常快。