Amazon Lex V2 を使用している場合は、代わりに Amazon Lex V2 ガイドを参照してください。
Amazon Lex V1 を使用している場合は、ボットを Amazon Lex V2 にアップグレードすることをお勧めします。V1 には新機能を追加されませんので、すべての新しいボットには V2 を使用することを強くお勧めします。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Lex V1 から Amazon Lex V2 への Lambda 関数の移行
Amazon Lex V2 では、ボット内の言語ごとに Lambda 関数を 1 つだけ許可します。Lambda 関数とその設定は、実行時に使用するボットエイリアスに対して構成されます。
インテントでダイアログとフルフィルメントコードのフックが有効になっている場合、その言語のすべてのインテントに対して Lambda 関数が呼び出されます。
Amazon Lex V2 Lambda 関数は、Amazon Lex V1 とは異なる入出力メッセージ形式を持っています。Lambda 関数の入力形式の違いは次のとおりです。
-
Amazon Lex V2 では、
currentIntent
とalternativeIntents
の構造がinterpretations
の構造に置き換えられます。各解釈には、インテント、インテントに対する NLU 信頼度スコア、およびオプションのセンチメント分析が含まれます。 -
Amazon Lex V2 では、Amazon Lex V1の
activeContexts
、sessionAttributes
が統一されたsessionState
構造に移行されます。この構造は、発信元のリクエスト ID など、会話の現在の状態に関する情報を提供します。 -
Amazon Lex V2 は
recentIntentSummaryView
を返しません。代わりにsessionState
構造の情報を使用してください。 -
Amazon Lex V2の入力では、
bot
属性にbotId
とlocaleId
を用意しています。 -
入力構造には、入力のタイプ (テキスト、スピーチ、DTMF) に関する情報を提供する
inputMode
属性が含まれています。
Lambda 関数の出力形式の違いは次のとおりです。
-
Amazon Lex V1 の
activeContexts
およびsessionAttributes
構造は、Amazon Lex V2 のsessionState
構造に置き換えられています。 -
recentIntentSummaryView
は出力には含まれません。 -
Amazon Lex V1
dialogAction
構造は、sessionState
構造の一部であるdialogAction
と、dialogAction.type
がElicitIntent
の時に必要となるmessages
の 2 つの構造に分かれています。Amazon Lex は、この構造からユーザーに表示するメッセージを選択します。
Amazon Lex V2 API でボットを構築する場合、インテントごとに Lambda 関数を用意するのではなく、言語別にボットのエイリアスごとに 1 つの Lambda 関数しか用意しません。別の機能を引き続き使用する場合は、インテントごとに個別の機能を有効にするルーター機能を作成できます。次に、アプリケーションで使用または変更できるルーター機能を示します。
import os import json import boto3 # reuse client connection as global client = boto3.client('lambda') def router(event): intent_name = event['sessionState']['intent']['name'] fn_name = os.environ.get(intent_name) print(f"Intent: {intent_name} -> Lambda: {fn_name}") if (fn_name): # invoke lambda and return result invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event)) print(invoke_response) payload = json.load(invoke_response['Payload']) return payload raise Exception('No environment variable for intent: ' + intent_name) def lambda_handler(event, context): print(event) response = router(event) return response
更新されたフィールドのリスト。
次の表は、Amazon Lex V2 Lambda リクエストとレスポンスの更新されたフィールドに関する詳細情報を示しています。これらのテーブルを使用して、バージョン間のフィールドをマッピングできます。
リクエスト
以下のフィールドが Lambda 関数リクエスト形式で更新されました。
アクティブコンテキスト
これで、activeContexts
構造は sessionState
構造の一部になりました。
V1 構造 | V2 構造 |
---|---|
activeContexts |
sessionState.activeContexts |
activeContexts[*].timeToLive |
sessionState.activeContexts[*].timeToLive |
activeContexts[*].timeToLive.timeToLiveInSeconds |
sessionState.activeContexts[*].timeToLive.timeToLiveInSeconds |
activeContexts[*].timeToLive.turnsToLive |
sessionState.activeContexts[*].timeToLive.turnsToLive |
activeContexts[*].name |
sessionState.activeContexts[*].name |
activeContexts[*].parameters |
sessionState.activeContexts[*].contextAttributes |
代替インテント
インデックス 1 から N までの解釈リストには、Amazon Lex V2 によって予測された代替インテントのリストとその信頼スコアが含まれています。recentIntentSummaryView
は Amazon Lex V2 のリクエスト構造から削除されました。recentIntentSummaryView
から詳細を確認するには、GetSession オペレーションを使用します。
V1 構造 | V2 構造 |
---|---|
alternativeIntents |
interpretations[1:*] |
recentIntentSummaryView |
該当なし |
ボット
Amazon Lex V2 では、ボットとエイリアスには識別子があります。ボット ID はコードフック入力の一部です。エイリアス ID は含まれますが、エイリアス名は含まれません。Amazon Lex V2 は同じボットに対して複数のロケールをサポートしているため、ロケール ID が含まれます。
V1 構造 | V2 構造 |
---|---|
ボット |
ボット |
bot.name |
bot.name |
該当なし |
bot.id |
bot.alias |
該当なし |
該当なし |
bot.aliasId |
bot.version |
bot.version |
該当なし |
bot.localeId |
現在のインテント
sessionState.intent
構造には、アクティブインテントの詳細が含まれています。Amazon Lex V2 は、代替インテントを含め、interpretations
構造内のすべてのインテントのリストも返します。解釈リストの最初の要素は常に sessionState.intent
と同じです。
V1 構造 | V2 構造 |
---|---|
currentIntent |
sessionState.intent OR interpretations[0].intent |
currentIntent.name |
sessionState.intent.name OR interpretations[0].intent.name |
currentIntent.nluConfidenceScore |
interpretations[0].nluConfidence.score |
ダイアログアクション
これで、confirmationStatus
フィールドは sessionState
構造の一部になりました。
V1 構造 | V2 構造 |
---|---|
currentIntent.confirmationStatus |
sessionState.intent.confirmationState OR interpretations[0].intent.confirmationState |
該当なし |
sessionState.intent.state OR interpretations[*].intent.state |
Amazon Kendra
kendraResponse
フィールドは sessionState
および interpretations
構造の一部になりました。
V1 構造 | V2 構造 |
---|---|
kendraResponse |
sessionState.intent.kendraResponse OR interpretations[0].intent.kendraResponse |
感情
sentimentResponse
構造は新しい interpretations
構造に移動されました。
V1 構造 | V2 構造 |
---|---|
sentimentResponse |
interpretations[0].sentimentResponse |
sentimentResponse.sentimentLabel |
interpretations[0].sentimentResponse.sentiment |
sentimentResponse.sentimentScore |
interpretations[0].sentimentResponse.sentimentScore |
スロット
Amazon Lex V2 は、解決された値、解釈された値、およびユーザーが発言内容の元の値を含む単一の slots
オブジェクトを sessionState.intent
構造内に提供します。Amazon Lex V2 では、slotShape
を List
として設定し、values
リストを設定することで、複数値のスロットもサポートしています。value
フィールドでは単一値スロットがサポートされており、その形状は Scalar
になるとみなされています。
V1 構造 | V2 構造 |
---|---|
currentIntent.slots |
sessionState.intent.slots OR interpretations[0].intent.slots |
currentIntent.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue OR interpretations[0].intent.slots[*].value.interpretedValue |
該当なし |
sessionState.intent.slots[*].value.shape OR interpretations[0].intent.slots[*].shape |
該当なし |
sessionState.intent.slots[*].values OR interpretations[0].intent.slots[*].values |
currentIntent.slotDetails |
sessionState.intent.slots OR interpretations[0].intent.slots |
currentIntent.slotDetails[*].resolutions |
sessionState.intent.slots[*].resolvedValues OR interpretations[0].intent.slots[*].resolvedValues |
currentIntent.slotDetails[*].originalValue |
sessionState.intent.slots[*].originalValue OR interpretations[0].intent.slots[*].originalValue |
その他
Amazon Lex V2 sessionId
フィールドは、Amazon Lex V1 の userId
フィールドと同じです。Amazon Lex V2 では、発信者の inputMode
(テキスト、DTMF、または音声) も送信します。
V1 構造 | V2 構造 |
---|---|
userId |
sessionId |
inputTranscript |
inputTranscript |
invocationSource |
invocationSource |
outputDialogMode |
responseContentType |
messageVersion |
messageVersion |
sessionAttributes |
sessionState.sessionAttributes |
requestAttributes |
requestAttributes |
該当なし |
inputMode |
該当なし |
originatingRequestId |
レスポンス
以下のフィールドが Lambda 関数レスポンスメッセージ形式で更新されました。
アクティブコンテキスト
sessionState
構造に移動した activeContexts
構造。
V1 構造 | V2 構造 |
---|---|
activeContexts |
sessionState.activeContexts |
activeContexts[*].timeToLive |
sessionState.activeContexts[*].timeToLive |
activeContexts[*].timeToLive.timeToLiveInSeconds |
sessionState.activeContexts[*].timeToLive.timeToLiveInSeconds |
activeContexts[*].timeToLive.turnsToLive |
sessionState.activeContexts[*].timeToLive.turnsToLive |
activeContexts[*].name |
sessionState.activeContexts[*].name |
activeContexts[*].parameters |
sessionState.activeContexts[*].contextAttributes |
ダイアログアクション
sessionState
構造に移動した dialogAction
構造。1 つのダイアログアクションで複数のメッセージを指定できるようになり、genericAttachments
構造は imageResponseCard
構造になりました。
V1 構造 | V2 構造 |
---|---|
dialogAction |
sessionState.dialogAction |
dialogAction.type |
sessionState.dialogAction.type |
dialogAction.slotToElicit |
sessionState.intent.dialogAction.slotToElicit |
dialogAction.type.fulfillmentState |
sessionState.intent.state |
dialogAction.message |
メッセージ |
dialogAction.message.contentType |
messages[*].contentType |
dialogAction.message.content |
messages[*].content |
dialogAction.responseCard |
messages[*].imageResponseCard |
dialogAction.responseCard.version |
該当なし |
dialogAction.responseCard.contentType |
messages[*].contentType |
dialogAction.responseCard.genericAttachments |
該当なし |
dialogAction.responseCard.genericAttachments[*].title |
messages[*].imageResponseCard.title |
dialogAction.responseCard.genericAttachments[*].subTitle |
messages[*].imageResponseCard.subtitle |
dialogAction.responseCard.genericAttachments[*].imageUrl |
messages[*].imageResponseCard.imageUrl |
dialogAction.responseCard.genericAttachments[*].buttons |
messages[*].imageResponseCard.buttons |
dialogAction.responseCard.genericAttachments[*].buttons[*].value |
messages[*].imageResponseCard.buttons[*].value |
dialogAction.responseCard.genericAttachments[*].buttons[*].text |
messages[*].imageResponseCard.buttons[*].text |
dialogAction.kendraQueryRequestPayload |
dialogAction.kendraQueryRequestPayload |
dialogAction.kendraQueryFilterString |
dialogAction.kendraQueryFilterString |
インテントとスロット
dialogAction
構造の一部であったインテントフィールドとスロットフィールドが sessionState
構造の一部になりました。
V1 構造 | V2 構造 |
---|---|
dialogAction.intentName |
sessionState.intent.name |
dialogAction.slots |
sessionState.intent.slots |
dialogAction.slots[*].key |
sessionState.intent.slots[*].key |
dialogAction.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue |
該当なし |
sessionState.intent.slots[*].value.shape |
該当なし |
sessionState.intent.slots[*].values |
その他
これで、sessionAttributes
構造は sessionState
構造の一部になりました。recentIntentSummaryReview
構造は削除されました。
V1 構造 | V2 構造 |
---|---|
sessionAttributes |
sessionState.sessionAttributes |
recentIntentSummaryView |
該当なし |