eclipse AWS SDKでJava8を使用して、私のlex intelentの実行時にフックされるラムダ関数を作成してアップロードしました。 LambdaはJSONリクエストと解析を受信することに問題はありません。 はその後、私は、単純な「閉じる」dialogAction応答をフォーマットし、lexとlexのコンソールでテストボットページから、次のエラーを受け取るために送り返す:AWS Lexがラムダ関数からInvalid Responseを受け取ります - IntentResponseのインスタンスを構築できません
すぐフォーマットに問題があるようですAn error has occurred: Received invalid response from Lambda:
Can not construct instance of IntentResponse:
no String-argument constructor/factory method to deserialize
from String value
('{"dialogAction
{"type":"Close","fulfillmentState":"Fulfilled","message":
{"contentType":"PlainText","content":"Thanks I got your info"}}}')
at [Source: "{\"dialogAction\":
{\"type\":\"Close\",\"fulfillmentState\":\"Fulfilled\",\"message\":
{\"contentType\":\"PlainText\",\"content\":\"Thanks I got your
info\"}}}";line: 1, column: 1]
(行1、列1)、私のJSON文字列は私には大丈夫です。 handleRequestのJava機能で出力文字列を返す前に、私はCloudWatchのログにそれを書いていますし、次のように書いている:私が試した
{
"dialogAction": {
"type": "Close",
"fulfillmentState": "Fulfilled",
"message": {
"contentType": "PlainText",
"content": "Thanks I got your info"
}
}
}
もの:
- メッセージ要素を削除する必要はありません。
- sessionAttributesなどの必須ではないプロパティを追加すると、 responseCa RDなど
- は、ドキュメント
でサンプル応答形式のメッセージからJSONをハードコーディングする単一引用符
このスレッドは、同じ問題に対処しているようです:https://stackoverflow.com/questions/44756575/jackson-json-deserialization-for-amazon-lex-aws-lambda-hook –
これは似ていますが、私のLexがLambdaからの応答を処理しているのではなく、Lexからの要求を処理しているLambda(これは私ができる)です。 – Mattbob