応答形式の準備 - Amazon Lex

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

応答形式の準備

Lambda 関数を Amazon Lex V2 ボットに統合する 2 番目のステップは、Lambda 関数応答のフィールドを理解し、操作するパラメータを決定することです。次の JSON オブジェクトは、Amazon Lex V2 に返される一般的な形式の Lambda レスポンスを示しています。

{ "sessionState": { // see セッション状態 for details about the structure }, "messages": [ { "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content": string, "imageResponseCard": { "title": string, "subtitle": string, "imageUrl": string, "buttons": [ { "text": string, "value": string }, ... ] } }, ... ], "requestAttributes": { string: string, ... } }

応答の各フィールドは次の通りです。

ユーザーと返したい Amazon Lex V2 ボット間の会話の状態。構造の詳細については、「セッション状態」を参照してください。このフィールドは常に必須です。

会話の次のターンに Amazon Lex V2 が返すメッセージのリスト。提供する contentTypePlainTextCustomPayload、または SSML の場合、顧客に返すメッセージを content フィールドに書き込みます。提供する contentTypeImageResponseCard の場合、imageResponseCard フィールドにカードの詳細を入力します。メッセージを指定しない場合、Amazon Lex V2 はボットの作成時に定義された適切なメッセージを使用します。

dialogAction.typeElicitIntent または ConfirmIntent の場合、messages フィールドは必須です。

リスト内の各項目は次の形式の構造であり、ユーザーに返すメッセージに関する情報が含まれています。以下がその例です。

{ "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content": string, "imageResponseCard": { "title": string, "subtitle": string, "imageUrl": string, "buttons": [ { "text": string, "value": string }, ... ] } }

各フィールドの説明を以下に示します。

  • [ContentType] — 使用するメッセージのタイプ。

    CustomPayload — アプリケーションのデータまたはメタデータを含むようにカスタマイズできる応答文字列。

    ImageResponseCard — ユーザーが選択できるボタン付きの画像。詳細については、「ImageResponseCard」を参照してください。

    PlainText — プレーンテキスト文字列。

    SSML — 音声応答をカスタマイズするための音声合成マークアップ言語を含む文字列。

  • content – ユーザーに送信するメッセージ。メッセージタイプが PlainTextCustomPayload、または SSML の場合、このフィールドを使用してください。

  • ImageResponseCard — ユーザーに表示する応答カードの定義が含まれます。メッセージタイプが ImageResponseCard の場合、このフィールドを使用してください。次のフィールドを含む構造にマップします。

    • title — レスポンスカードのタイトル。

    • subtitle — ユーザーがボタンを選択するように求めるプロンプト。

    • imageUrl — カードの画像へのリンク。

    • buttons — ボタンに関する情報を含む構造のリスト。各構造には、表示するテキストを含む text フィールドと、顧客がそのボタンを選択した場合に Amazon Lex V2 に送信される値を含む value フィールドが含まれます。最大 3 つのボタンを含めることができます。

顧客への応答に必要な要求固有の属性を含む構造。詳細については、「リクエスト属性を設定する」を参照してください。このフィールドはオプションです。

応答内の必須フィールド

最低でも、Lambda 応答には sessionState オブジェクトを含める必要があります。その中で、dialogAction オブジェクトを提供し、type フィールドを指定します。提供する dialogActiontype によっては、Lambda 応答に他の必須フィールドがある場合があります。これらの要件は、最小限の実例とともに次のように説明されています。

Delegate は、Amazon Lex V2 が次のアクションを決定できるようにします。その他に必須フィールドはありません。

{ "sessionState": { "dialogAction": { "type": "Delegate" } }

ElicitIntent は、顧客にインテントを表明するよう促します。インテントを誘発するには、messages フィールドに少なくとも 1 つのメッセージを含める必要があります。

{ "sessionState": { "dialogAction": { "type": "ElicitIntent" }, "messages": [ { "contentType": PlainText, "content": "How can I help you?" } ] }

ElicitSlot は、顧客にスロット値を入力するよう求めます。dialogAction オブジェクトの slotToElicit フィールドにはスロットの名前を含める必要があります。sessionState オブジェクトには intentname も含める必要があります。

{` "sessionState": { "dialogAction": { "slotToElicit": "OriginCity", "type": "ElicitSlot" }, "intent": { "name": "BookFlight" } } }

ConfirmIntent は、顧客のスロット値と、そのインテントを達成する準備ができているかどうかを確認します。sessionState オブジェクトの intentname と、確認する slots を含める必要があります。また、messages フィールドには、ユーザーにスロット値の確認を求めるメッセージを少なくとも 1 つ含める必要があります。メッセージに「はい」か「いいえ」の応答を求める必要があります。ユーザーの応答が「はい」であった場合、Amazon Lex V2 はインテントの confirmationStateConfirmed に設定します。ユーザーの応答が「いいえ」であった場合、Amazon Lex V2 はインテントの confirmationStateDenied に設定します。

{ "sessionState": { "dialogAction": { "type": "ConfirmIntent" }, "intent": { "name": "BookFlight", "slots": { "DepartureDate": { "value": { "originalValue": "tomorrow", "interpretedValue": "2023-05-09", "resolvedValues": [ "2023-05-09" ] } }, "DestinationCity": { "value": { "originalValue": "sf", "interpretedValue": "sf", "resolvedValues": [ "sf" ] } }, "OriginCity": { "value": { "originalValue": "nyc", "interpretedValue": "nyc", "resolvedValues": [ "nyc" ] } } } } }, "messages": [ { "contentType": PlainText, "content": "Okay, you want to fly from {OriginCity} to \ {DestinationCity} on {DepartureDate}. Is that correct?" } ] }

Close は、インテントの達成プロセスを終了し、これ以上ユーザーからの応答が予想されないことを通知します。sessionState オブジェクトには intentnamestate を含める必要があります。互換性のあるインテントステートはFailedFulfilled、および InProgressです。

"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name": "BookFlight", "state": "Failed | Fulfilled | InProgress" } }