Twilio の例 ( https://github.com/TwilioDevEd/ipm-quickstart-node )に基づいて簡単なチャット アプリを作成しようとしていました。これをすばやく起動して実行できます。
そのように少し修正したい
- ユーザーが Web インターフェース ( ) 経由でメッセージを送信するたびに、
http://localhost:3000
Twilio の Webhook がトリガーされます。 - この Webhook は、AWS Lambda 関数にマッピングされた AWS API エンドポイントを PING します。
- この 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 を許可していない可能性はありますか?
ありがとう!