私はlex sms chatbotを作成し、Twilio SMSチャンネルに公開しました。私のJavaのlambda fulfillment handleRequest関数の中で、私は2つのパラメータを受け取る:InputオブジェクトとContext。入力にはいくつかのタイプのシステム生成userIdがありますが、Twilioからの着信SMSメッセージの電話番号が必要です。Amazon LexはTwilioからJavaラムダ関数ハンドラで着信SMS番号を取得しますか?
私は、これらの指示に従ってウェブフックを経由レックスを呼び出すようにTwilioを設定した:
http://docs.aws.amazon.com/lex/latest/dg/twilio-bot-association.html#twilio-bot-assoc-create-assoc
私はレックスとTwilioの間にシステムに作成ウェブフックのコールバックURLを使用していますし、私自身のレックスを書く避けたいです可能であれば、ゲートウェイAPIとラムダとの間を移動します。
私はこれをLexに送るTwilioの設定が不足していると思いますか?私はTwilMLアプリケーションなど何も設定していない。ちょうどレックスのwebhookコールバックURLにSMS番号をリンクしている。着信SMS番号を取得する以外はすべて正常に動作します。
UPDATE:
私はJavaのラムダ関数に私の入力オブジェクトおよびコンテキストを持つあらゆる可能性を使い果たし。私はJavaのtwilioからペイロードに乗る方法がないと思う。私は入力ストリームハンドラに切り替えようとしましたが、ここに書かれているドキュメントの入力フォーマットしかありませんでした:http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html
私は弾丸を噛んで自分のゲートウェイAPIとノードハンドラを構築しなければなりませんでした。これはlexの前に座ってtwilioをlexの入力形式に変換し、その逆の応答を返します。それは着信電話番号でuserIdを更新します。
このチュートリアルでは、これを行うには非常に有用であった:
https://aws.amazon.com/blogs/ai/integrate-your-amazon-lex-bot-with-any-messaging-service/
ただ一つの追加のフィールドを取得するために多くの作業でしたが、それは私に簡単に将来的にSMSプロバイダを切り替えるための柔軟性を提供しません。
Lexの例では、 "input object"がラムダ 'event'構造体であるNodeで比較すると分かりませんが、' event'オブジェクトには 'body-json'が含まれていますTwilioの元のJSONリクエストボディで、内部属性が「From」です。だからレックスは数字を "知っている"わけではありませんが、明らかにそれを通しています。残りの部分は少し暗いですが、Twilioを送信しないように誤って設定することは考えられません。あなたがする必要があるものがあなたに届くように思われます。たぶんそれはあなたに追いつく何かを与えるでしょう。 –
マイケルに感謝します。私はちょうどlexとtwilioとgateway apiの間にレイヤーを作成することに決めました。 1つの余分なフィールドのための多くの仕事(着信SMS番号) – Mattbob