如何使用初始化/驗證或實現 AWS Lambda 函數來變更 Amazon Lex 機器人的流程?

2 分的閱讀內容
0

我想要使用初始化/驗證或實現AWS Lambda 函數來變更 Amazon Lex 機器人的流程。我該如何使用 Amazon Lex 主控台完成此操作?

簡短描述

您可以使用初始化/驗證或實現 AWS Lambda 程式碼掛鉤來變更 Amazon Lex 機器人的對話流程。Amazon Lex 主控台提供 dialogAction 欄位,可在 Amazon Lex 與您的使用者互動時指示其應採取的下一個動作。此欄位向 Amazon Lex 說明在其回覆用戶端後預期的使用者反應。

type欄位會指出機器人的下一個動作路線。也會決定 Lambda 函數必須提供的其他欄位,以做為 dialogAction 值的一部分。可分為五種類型:

  1. ElicitIntent:告知 Amazon Lex,表示預期使用者將回應包含意圖的話語。
  2. ElicitSlot:告知 Amazon Lex,表示預期使用者在回應中提供一個槽值。
  3. Close:告知 Amazon Lex 不用期望來自使用者的回應。例如,「已接到您的披薩訂單」不需要回應。
  4. ConfirmIntent:告知 Amazon Lex,表示預期使用者會給出「是」或「否」的答案,以確認或拒絕目前的意圖。
  5. Delegate:指示 Amazon Lex 根據機器人組態選擇下一個動作路線

解決方案

**注意:**本文中的步驟使用 Amazon Lex 主控台 V2 版。如果您目前正在使用 V1 版,請在瀏覽窗格中選擇 Switch to the new Lex v2 console (切換至新的 Lex v2 主控台)。

Lambda response syntax (Lambda 回應語法) 會指定 Amazon Lex 預期的來自您 Lambda 函數的回應格式。

檢閱下列有關回應欄位的資訊:

  • sessionState – 此欄位為必填項目。其描述了與使用者對話的當前狀態。結構的實際內容取決於對話動作的類型。
  • dialogAction – 此欄位決定 Amazon Lex 應採取的動作類型以回應 Lambda 函數。類型欄位永遠為必填項目。只有當 dialogAction.type 為 ElicitSlot 時,才需要 slotToElicit 欄位。
  • intent – Amazon Lex 使用的意圖的名稱。當 dialogAction.type 為 Delegate 或 ElicitIntent 時,不需要此欄位。
  • state – 此欄位為必填項目。只有當 dialogAction.type 為 Delegate 時,狀態才能是 ReadyForFulfillment。
  • messages – 如果 dialogAction.type 為 ElicitIntent 時,此欄位為必填項目。其描述 Amazon Lex 顯示給客戶的一則或多則訊息,以便進行下一輪對話。如果您未提供訊息,則 Amazon Lex 會使用您在建立機器人時定義的適當訊息。如需詳細資訊,請參閱訊息資料類型。
  • contentType – 此描述了要使用的訊息的類型。
  • content – 如果訊息類型為 PlainText、CustomPayload 或 SSML,則此欄位會包含要傳送給使用者的訊息。
  • imageResponseCard – 如果訊息類型為 imageResponseCard,則此欄位會包含要顯示給使用者的回應卡定義。如需詳細資訊,請參閱 ImageResponseCard 資料類型。

使用 ElicitSlot 類型變更對話流程

若要使用 ElicitSlot 類型變更對話流程,請以下列格式傳遞來自 Lambda 程式碼掛鉤的回應:

{
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "<slot-name-to-elicit>",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "<intent-name-to-elicit>",
            "state": "<state>"
        }
    }
}

在傳回回應後,Amazon Lex 會引發一個屬於 intent-name-to-elicit 意圖、名為 slot-name-to-elicit 的插槽。

使用 ElicitIntent 類型變更對話流程

若要使用 ElicitIntent 類型變更對話流程,請以下列格式傳遞來自 Lambda 程式碼掛鉤的回應:

   {
     "sessionState": {
         "dialogAction": {
             "type": "ElicitIntent"
         }
     },
     "messages": [{
         "contentType": "<content-type>",
         "content": "<message>"
     }]
 }

在傳回此回應後,會將在訊息佔位符中指定的訊息顯示給使用者。下一個使用者輸入將被視為意圖話語,會叫用 NLuConfidence 分數最高的意圖。


相關資訊

回應格式

amazon-lex-v2-dialogation

AWS 官方
AWS 官方已更新 2 年前