翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 が返すメッセージのリスト。提供する contentType
が PlainText
、CustomPayload
、または SSML
の場合、顧客に返すメッセージを content
フィールドに書き込みます。提供する contentType
が ImageResponseCard
の場合、imageResponseCard
フィールドにカードの詳細を入力します。メッセージを指定しない場合、Amazon Lex V2 はボットの作成時に定義された適切なメッセージを使用します。
dialogAction.type
が ElicitIntent
または 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 – ユーザーに送信するメッセージ。メッセージタイプが
PlainText
、CustomPayload
、またはSSML
の場合、このフィールドを使用してください。 -
imageResponseCard — ユーザーに表示する応答カードの定義が含まれます。メッセージタイプが
ImageResponseCard
の場合、このフィールドを使用してください。次のフィールドを含む構造にマップします。-
title — レスポンスカードのタイトル。
-
subtitle — ボタンを選択するようユーザーに求めるプロンプト。
-
imageUrl — カードの画像へのリンク。
-
buttons — ボタンに関する情報を含む構造のリスト。各構造には、表示するテキストを含む
text
フィールドと、顧客がそのボタンを選択した場合に Amazon Lex V2 に送信される値を含むvalue
フィールドが含まれます。最大 3 つのボタンを含めることができます。
-
顧客への応答に必要な要求固有の属性を含む構造。詳細については、「Lex V2 ボットのリクエスト属性の設定」を参照してください。このフィールドはオプションです。
応答内の必須フィールド
最低でも、Lambda 応答には sessionState
オブジェクトを含める必要があります。その中で、dialogAction
オブジェクトを提供し、type
フィールドを指定します。提供する dialogAction
の type
によっては、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
オブジェクトには intent
の name
も含める必要があります。
{`
"sessionState": {
"dialogAction": {
"slotToElicit": "OriginCity"
,
"type": "ElicitSlot"
},
"intent": {
"name": "BookFlight"
}
}
}
ConfirmIntent は、顧客のスロット値と、そのインテントを達成する準備ができているかどうかを確認します。sessionState
オブジェクトの intent
の name
と、確認する slots
を含める必要があります。また、messages
フィールドには、ユーザーにスロット値の確認を求めるメッセージを少なくとも 1 つ含める必要があります。メッセージに「はい」か「いいえ」の応答を求める必要があります。ユーザーの応答が「はい」であった場合、Amazon Lex V2 はインテントの confirmationState
を Confirmed
に設定します。ユーザーの応答が「いいえ」であった場合、Amazon Lex V2 はインテントの confirmationState
を Denied
に設定します。
{
"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
オブジェクトには intent
の name
と state
を含める必要があります。互換性のあるインテントステートはFailed
、Fulfilled
、および InProgress
です。
"sessionState": {
"dialogAction": {
"type": "Close"
},
"intent": {
"name": "BookFlight"
,
"state": "Failed | Fulfilled | InProgress"
}
}