支援終止通知:2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Lambda 函數從 Amazon Lex V1 遷移至 Amazon Lex V2
Amazon Lex V2 僅允許一個 Lambda 函數用於機器人中的每個語言。Lambda 函數及其設定會針對您在執行時間使用的機器人別名進行設定。
如果針對意圖啟用對話方塊和履行程式碼掛鉤,則會針對該語言中的所有意圖叫用 Lambda 函數。
Amazon Lex V2 Lambda 函數的輸入和輸出訊息格式與 Amazon Lex V1 不同。這些是 Lambda 函數輸入格式的差異。
-
Amazon Lex V2 會將
currentIntent和alternativeIntents結構取代為interpretations結構。每個解釋都包含意圖、意圖的 NLU 可信度分數,以及選用的情緒分析。 -
Amazon Lex V2 會將 Amazon Lex V1
activeContextssessionAttributes中的 移至統一sessionState結構。此結構提供有關對話目前狀態的資訊,包括原始請求 ID。 -
Amazon Lex V2 不會傳回
recentIntentSummaryView。請改用sessionState結構中的資訊。 -
Amazon Lex V2 輸入在
bot屬性localeId中提供botId和 。 -
輸入結構包含
inputMode屬性,可提供輸入類型的相關資訊:文字、語音或 DTMF。
以下是 Lambda 函數輸出格式的差異:
-
Amazon Lex V1 中的
activeContexts和sessionAttributes結構會取代為 Amazon Lex V2 中的sessionState結構。 -
recentIntentSummaryView不包含在輸出中。 -
Amazon Lex V1
dialogAction結構分為兩個結構,dialogAction這是sessionState結構的一部分,messages當dialogAction.type是 時,這是必要的ElicitIntent。Amazon Lex 會從此結構選擇訊息,以向使用者顯示。
當您使用 Amazon Lex V2 APIs 建置機器人時,每個語言的每個機器人別名只有一個 Lambda 函數,而不是每個意圖的 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 |
N/A |
機器人
在 Amazon Lex V2 中,機器人和別名具有識別符。機器人 ID 是 Codehook 輸入的一部分。別名 ID 已包含在內,但不包含別名名稱。Amazon Lex V2 支援相同機器人的多個地區設定,因此包含地區設定 ID。
| V1 結構 | V2 結構 |
|---|---|
|
機器人 |
機器人 |
|
bot.name |
bot.name |
|
N/A |
bot.id |
|
bot.alias |
N/A |
|
N/A |
bot.aliasId |
|
bot.version |
bot.version |
|
N/A |
bot.localeId |
目前意圖
sessionState.intent 結構包含作用中意圖的詳細資訊。Amazon Lex V2 也會傳回interpretations結構中所有意圖的清單,包括替代意圖。解譯清單中的第一個元素一律與 相同sessionState.intent。
| V1 結構 | V2 結構 |
|---|---|
|
currentIntent |
sessionState.intent OR 解釋 【0】.intent |
|
currentIntent.name |
sessionState.intent.name OR 解釋【0】.intent.name |
|
currentIntent.nluConfidenceScore |
interpretations【0】.nluConfidence.score |
對話方塊動作
confirmationStatus 欄位現在是sessionState結構的一部分。
| V1 結構 | V2 結構 |
|---|---|
|
currentIntent.confirmationStatus |
sessionState.intent.confirmationState OR interpretations【0】.intent.confirmationState |
|
N/A |
sessionState.intent.state OR 解釋 【*】.intent.state |
Amazon Kendra
kendraResponse 欄位現在是 sessionState和 interpretations結構的一部分。
| V1 結構 | V2 結構 |
|---|---|
|
kendraResponse |
sessionState.intent.kendraResponse OR 解釋 【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 在sessionState.intent結構內提供單一slots物件,其中包含解析的值、解譯值,以及使用者所說內容的原始值。Amazon Lex V2 也支援多值插槽,方法是將 設定為 slotShapeList並設定values清單。value 欄位支援單一值插槽,其形狀假設為 Scalar。
| V1 結構 | V2 結構 |
|---|---|
|
currentIntent.slots |
sessionState.intent.slots OR 解釋【0】.intent.slots |
|
currentIntent.slots[*].value |
sessionState.intent.slots[*].value.interpretedValue OR interpretations【0】.intent.slots【*】.value.interpretedValue |
|
N/A |
sessionState.intent.slots[*].value.shape OR interpretations【0】.intent.slots【*】.shape |
|
N/A |
sessionState.intent.slots[*].values OR interpretations【0】.intent.slots【*】.values |
|
currentIntent.slotDetails |
sessionState.intent.slots OR 解釋【0】.intent.slots |
|
currentIntent.slotDetails[*].resolutions |
sessionState.intent.slots[*].resolvedValues OR interpretations【0】.intent.slots【*】.resolvedValues |
|
currentIntent.slotDetails[*].originalValue |
sessionState.intent.slots[*].originalValue OR 解釋【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 |
|
N/A |
inputMode |
|
N/A |
originatingRequestId |
回應
下列欄位已在 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 |
對話方塊動作
dialogAction 結構已移至 sessionState 結構。您現在可以在對話方塊動作中指定多個訊息,而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 |
messages |
|
dialogAction.message.contentType |
messages【*】.contentType |
|
dialogAction.message.content |
messages【*】.content |
|
dialogAction.responseCard |
messages【*】.imageResponseCard |
|
dialogAction.responseCard.version |
N/A |
|
dialogAction.responseCard.contentType |
messages【*】.contentType |
|
dialogAction.responseCard.genericAttachments |
N/A |
|
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 |
|
N/A |
sessionState.intent.slots[*].value.shape |
|
N/A |
sessionState.intent.slots[*].values |
其他
sessionAttributes 結構現在是sessionState結構的一部分。結構recentIntentSummaryReview已移除。
| V1 結構 | V2 結構 |
|---|---|
|
sessionAttributes |
sessionState.sessionAttributes |
|
recentIntentSummaryView |
N/A |