如何使用初始化/驗證或履行 Lambda 函數來變更 Amazon Lex 機器人的對話流程?

1 分的閱讀內容
0

我想使用初始化/驗證或履行 AWS Lambda 函數來變更 Amazon Lex 機器人的對話流程。

解決方法

注意:本文中的範例會使用 Amazon Lex 主控台第 2 版。如果您使用第 1 版,則請在導覽窗格中選擇切換到新的 Lex 第 2 版主控台

Lambda 回應語法會指定 Amazon Lex 預期 Lambda 函數回應的格式。請確定包含回應中必要的欄位

使用 ElicitSlot 類型來變更對話方塊流程

若要使用 ElicitSlot 類型來變更對話方塊流程,請使用下列格式來傳遞 Lambda 程式碼勾點的回應:

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

傳回回應之後,Amazon Lex 會引發稱為 slot-name-to-elicit 的插槽,該插槽屬於 intent-name-to-elicit 意圖。

例如,您有 CreateUser 意圖,該意圖具有提示使用者名稱的插槽。使用 Lambda 函數檢查使用者名稱是否已存在。如果使用者名稱存在,則為相同的意圖再次引發使用者名稱插槽。

使用 ElicitIntent 類型來變更對話方塊流程

若要使用 ElicitIntent 類型來變更對話方塊流程,請使用下列格式來傳遞 Lambda 程式碼勾點的回應:

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

Amazon Lex 傳回回應後,使用者會看到訊息預留位置中指定的訊息。將下一個使用者輸入視為意圖言論,並調用最高 nluConfidence 分數的意圖。

例如,如果您的機器人實現了使用者的意圖,則會將機器人置於接聽狀態。然後,使用者可以提供另一個言論來調用另一種意圖。

使用委派類型來變更對話方塊流程

當您指定新意圖時,您可以使用委派類型來變更意圖的起點。若要使用委派類型,請使用下列格式來傳遞 Lambda 程式碼勾點的回應:

{
    'sessionState': {
        'dialogAction': {
            'type': 'Delegate'
        },
        'intent': {
            'name': '<intent-name-to-elicit>',
            'state': 'InProgress'
        }
    }
}

例如,您的機器人有意圖 ABC。如果使用者對意圖 A 中的插槽提供回應,則 Lambda 函數會檢查使用者輸入。然後,該函數會調用意圖 BC

相關資訊

GitHub 網站上的 amazon-lex-v2-dialogation

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