Amazon Lex V1 から Amazon Lex V2 への Lambda 関数の移行 - Amazon Lex V1

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 では、currentIntentalternativeIntents の構造が interpretations の構造に置き換えられます。各解釈には、インテント、インテントに対する NLU 信頼度スコア、およびオプションのセンチメント分析が含まれます。

  • Amazon Lex V2 では、Amazon Lex V1の activeContextssessionAttributes が統一された sessionState 構造に移行されます。この構造は、発信元のリクエスト ID など、会話の現在の状態に関する情報を提供します。

  • Amazon Lex V2 は recentIntentSummaryView を返しません。代わりに sessionState 構造の情報を使用してください。

  • Amazon Lex V2の入力では、bot 属性に botIdlocaleId を用意しています。

  • 入力構造には、入力のタイプ (テキスト、スピーチ、DTMF) に関する情報を提供する inputMode 属性が含まれています。

Lambda 関数の出力形式の違いは次のとおりです。

  • Amazon Lex V1 の activeContexts および sessionAttributes 構造は、Amazon Lex V2 の sessionState 構造に置き換えられています。

  • recentIntentSummaryView は出力には含まれません。

  • Amazon Lex V1 dialogAction 構造は、sessionState 構造の一部である dialogAction と、dialogAction.typeElicitIntent の時に必要となる 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 では、slotShapeList として設定し、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

該当なし