將 Lambda 函數從 Amazon Lex V1 遷移到 Amazon Lex V2 - Amazon Lex V1

如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 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 移動activeContextssessionAttributes在 Amazon Lex V1 到統一的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 V1dialogAction 結構分為兩個結構,dialogAction這是sessionState結構的一部分,messages這是必要的dialogAction.typeElicitIntent。Amazon Lex 從這個結構中選擇訊息來顯示給使用者。

使用 Amazon Lex V2 API 建立機器人時,每種語言的每個機器人別名只有一個 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 結構 v1 結構

主動式環境

工作階段狀態. 主動上下文

主動式上下文 [*]。 timeToLive

工作階段狀態。主動式上下文 [*]。 timeToLive

主動式上下文 [*]。 timeToLive。 timeToLiveInSeconds

工作階段狀態。主動式上下文 [*]。 timeToLive。 timeToLiveInSeconds

主動式上下文 [*]。 timeToLive。 turnsToLive

工作階段狀態。主動式上下文 [*]。 timeToLive。 turnsToLive

主動式上下文 [*]. 名稱

工作階段狀態. 主動式上下文 [*]. 名稱

主動式上下文 [*]. 參數

工作階段狀態. 主動式上下文 [*]. 上下文屬性

替代意圖

索引 1 到 N 的解釋清單包含 Amazon Lex V2 預測的替代意圖清單,以及其可信度分數。recentIntentSummaryView已從 Amazon Lex V2 中的請求結構中移除。若要查看中的詳細資訊recentIntentSummaryView,請使用GetSession作業。

v1 結構 v1 結構

替代意圖

解釋 [1:*]

recentIntentSummary檢視

N/A

機器人

在 Amazon Lex V2 中,機器人和別名具有識別碼。機器人 ID 是程式碼掛接輸入的一部分。別名 ID 會包含在內,但不包含別名名稱。Amazon Lex V2 支援相同機器人的多個語言環境,因此包含地區設定 ID。

v1 結構 v1 結構

機器人

機器人

機器人名

機器人名

N/A

機器人識別碼

機器人別名

N/A

N/A

不良病毒

機器人版

機器人版

N/A

植物学

目前的意圖

sessionState.intent構包含使用中意圖的詳細資訊。Amazon Lex V2 也會傳回interpretations結構中所有意圖的清單,包括替代意圖。解釋列表中的第一個元素始終與相同sessionState.intent

v1 結構 v1 結構

currentIntent

會話狀態。意圖或解釋 [0]. 意圖

目前意圖名稱

工作階段狀態。意圖名稱或解釋 [0]。

currentIntent。 nluConfidenceScore

解釋 [0]. 無信心. 得分

對話框動作

confirmationStatus欄位現在是sessionState結構的一部分。

v1 結構 v1 結構

目前意圖. 確認狀態

會話狀態. 意圖. 確認狀態或解釋 [0]. 意圖.

N/A

會話狀態。意圖。狀態或解釋 [*] .intent.state

Amazon Kendra

kendraResponse欄位現在是sessionStateinterpretations結構的一部分。

v1 結構 v1 結構

kendraResponse

會話狀態. 意圖. 肯德拉響應或解釋 [0].

Inmo

sentimentResponse構即會移至新interpretations結構。

v1 結構 v1 結構

sentimentResponse 持

詮釋 [0]. Intion

情緒支持. 情緒標籤

解釋 [0]. 情緒自發. 情緒

情緒支持。感情分數

解釋 [0]. 情緒自發. 情緒分數

Amazon Lex V2 在sessionState.intent結構內提供單一slots物件,其中包含已解析的值、解譯值和使用者所說的原始值。Amazon Lex V2 也透過設定slotShapeList和設定values清單來支援多值插槽。單值槽由value字段支持,它們的形狀被假定為Scalar

v1 結構 v1 結構

目前意向插槽

會話狀態. 意圖插槽或解釋 [0].

目前意圖。插槽 [*]. 值

值. 解釋值或解釋 [0]. 意圖插槽 [*]. 值.

N/A

插槽 [*]. 值. 形狀或解釋 [0]. 意圖插槽 [*].

N/A

插槽 [*]. 值或解釋 [0]. 意圖插槽 [*].

目前意圖。插槽詳細資訊

會話狀態. 意圖插槽或解釋 [0].

目前意圖。插槽詳細資訊 [*].

插槽 [*]. 解析值或解釋 [0]. 意圖插槽 [*]. 已解析值

目前意圖。插槽詳細資訊 [*]. 原始值

插槽 [*]. 原始值或解釋 [0]. 意圖插槽 [*]. 原始值

其他

Amazon Lex V2sessionId 欄位與亞 Amazon Lex V1 中的userId欄位相同。Amazon Lex V2 還發送呼叫者inputMode的:文本,DTMF 或語音。

v1 結構 v1 結構

userId

sessionId

inputTranscript

inputTranscript

invocationSource

invocationSource

outputDialogMode

responseContentType

messageVersion

messageVersion

sessionAttributes

階段作業狀態. 工作階段屬性

requestAttributes

requestAttributes

N/A

輸入模式

N/A

originatingRequestId

回應

Lambda 函數回應訊息格式中的下列欄位已變更。

使用中內容

activeContexts構已移至結sessionState構。

v1 結構 v1 結構

主動式環境

工作階段狀態. 主動上下文

主動式上下文 [*]。 timeToLive

工作階段狀態。主動式上下文 [*]。 timeToLive

主動式上下文 [*]。 timeToLive。 timeToLiveInSeconds

工作階段狀態。主動式上下文 [*]。 timeToLive。 timeToLiveInSeconds

主動式上下文 [*]。 timeToLive。 turnsToLive

工作階段狀態。主動式上下文 [*]。 timeToLive。 turnsToLive

主動式上下文 [*]. 名稱

工作階段狀態. 主動式上下文 [*]. 名稱

主動式上下文 [*]. 參數

工作階段狀態. 主動式上下文 [*]. 上下文屬性

對話框動作

dialogAction構已移至結sessionState構。您現在可以在對話方塊動作中指定多個訊息,而genericAttachments結構現在就是結imageResponseCard構。

v1 結構 v1 結構

dialogAction

工作階段狀態. 對話

對話動作. 類型

工作階段狀態. 對話. 類型

dialogAction。 slotToElicit

會話狀態。意圖。對話。 slotToElicit

對話. 類型. 履行狀態

工作階段狀態. 意圖. 狀態

對話動作. 訊息

messages

對話動作. 訊息. 內容類型

訊息 [*]. 內容類型

對話動作. 訊息. 內容

消息 [*]. 內容

對話. 回應卡

消息 [*]。 imageResponseCard

對話. 回應卡. 版本

N/A

對話. 回應卡. 內容類型

訊息 [*]. 內容類型

對話框. 回應卡. 一般附件

N/A

對話框. 回應卡. 一般附件 [*]. 標題

消息 [*]。 imageResponseCard. 標題

對話. 回應卡. 一般附件 [*].

消息 [*]。 imageResponseCard. 字幕。

對話框. 回應卡. 一般附件 [* imageUrl

消息 [*]。 imageResponseCard. imageUrl

對話框. 回應卡. 一般附件 [*]. 按鈕

消息 [*]。 imageResponseCard. 按鈕。

一般附件 [*]. 按鈕 [*].

消息 [*]。 imageResponseCard. 按鈕 [*]. 值

通用附件 [*]. 按鈕 [*].

消息 [*]。 imageResponseCard. 按鈕 [*]. 文字

dialogAction。 kendraQueryRequest酬載

dialogAction。 kendraQueryRequest酬載

dialogAction。 kendraQueryFilter字符串

dialogAction。 kendraQueryFilter字符串

意圖和槽

屬於dialogAction結構一部分的意圖和槽欄位現在已成為sessionState結構的一部分。

v1 結構 v1 結構

對話動作. 意圖名稱

工作階段狀態. 意圖名稱

對話. 插槽

工作階段狀態. 意圖槽

對話。插槽 [*]. 鍵

工作階段狀態。意圖插槽 [*] .key

對話框. 插槽 [*]. 值

工作階段狀態。意圖插槽 [*]. 值.

N/A

工作階段狀態。意圖插槽 [*].

N/A

工作階段狀態. 意圖插槽 [*]. 值

其他

sessionAttributes構現在是結sessionState構的一部分。結recentIntentSummaryReview構已經移除。

v1 結構 v1 結構

sessionAttributes

階段作業狀態. 工作階段屬性

recentIntentSummary檢視

N/A