1

Twilio の例 ( https://github.com/TwilioDevEd/ipm-quickstart-node )に基づいて簡単なチャット アプリを作成しようとしていました。これをすばやく起動して実行できます。

そのように少し修正したい

  1. ユーザーが Web インターフェース ( ) 経由でメッセージを送信するたびに、 http://localhost:3000Twilio の Webhook がトリガーされます。
  2. この Webhook は、AWS Lambda 関数にマッピングされた AWS API エンドポイントを PING します。
  3. この 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 から「Webhook がコマンドの処理をキャンセルしました」という50056エラー ( https://www.twilio.com/docs/api/errors/50056 ) が表示されます。ドキュメントによると、関数がHTTP 200ステータスを返さない可能性がありますが、PostMan を使用して ping を実行しようとすると 200 ステータス コードを受け取るため意味がありません。

AWS Cloudfront のログを確認すると、Web インターフェイス チャットを介して AWS Lambda 関数をトリガーしようとしても、Lambda 関数は呼び出されませんでした。

一方、PostMan などのツールを使用してこの AWS Lambda 関数を PING しようとすると、AWS Cloudfront ログは関数が呼び出されたことを示しますが、チャネル Sid が正しいものではないため、応答は行われません。

50056エラーを解決するにはどうすればよいですか? それとも、Twilio の IP Messaging Webhook が AWS API エンドポイントへの PING を許可していない可能性はありますか?

ありがとう!

4

1 に答える 1

2

私自身の質問への回答: - Twilio Webhook をGETrequest に変更すると、機能します!

したがって、AWS Lambda が POST リクエストにそれほど迅速に応答しないか、Twilio の Webhook が POST リクエストに対しても非常に高速であることを期待していると思われます。

于 2016-06-20T02:31:26.933 に答える