本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解 Amazon Lex V2 機器人工作階段
當使用者開始與機器人的對話時,Amazon Lex V2 會建立工作階段 。在應用程式與 Amazon Lex V2 之間交換的資訊會構成對話的工作階段狀態。當您提出請求時,工作階段會以您指定的識別符來識別。如需工作階段識別符的詳細資訊,請參閱 RecognizeText或 RecognizeUtterance操作中的 sessionId
欄位。
您可以修改在應用程式與機器人之間傳送的工作階段。例如,您可以修改包含工作階段自訂資訊的工作階段屬性,也可以設定解釋下一個表達用語的對話方塊內容,來變更對話流程。
有三種方法可以更新工作階段狀態。
-
將工作階段資訊內嵌,作為呼叫的一部分傳遞至
RecognizeText
或RecognizeUtterance
操作。 -
使用 Lambda 函數搭配
RecognizeText
或RecognizeUtterance
操作,該操作會在每次對話後呼叫。如需詳細資訊,請參閱整合 AWS Lambda 功能到你的機器人。另一個是使用API應用程式中的 Amazon Lex V2 執行期來變更工作階段狀態。 -
使用可讓您管理與機器人對話的工作階段資訊的操作。操作包括PutSession操作、GetSession操作和DeleteSession操作。您使用這些操作取得您使用者的機器人工作階段資訊,並對狀態進行細微控制。
當您想要取得工作階段目前的狀態時,請使用 GetSession
操作。操作會傳回工作階段的目前狀態,包括與使用者的對話方塊狀態、為目前意圖設定的任何工作階段屬性和插槽值,以及 Amazon Lex V2 已識別為符合使用者表達式之可能意圖的任何其他意圖。
此 PutSession
操作可讓您直接運用目前的工作階段狀態。您可以設定工作階段,包括機器人接下來執行的對話方塊動作類型,以及 Amazon Lex V2 傳送給使用者的訊息。如此一來,您可以控制與機器人的對話流程。將對話方塊動作type
欄位設定為 Delegate
,讓 Amazon Lex V2 決定機器人的下一個動作。
您可以使用 PutSession
操作來建立包含機器人的新工作階段,並設定機器人開始時的意圖。您也可以使用 PutSession
操作,來將一種意圖變更成另一種意圖。建立工作階段或變更意圖時,您也可以設定工作階段狀態,例如槽值和工作階段屬性。完成新的意圖時,您可以選擇重新啟動先前的意圖。
來自 PutSession
操作的回應包含如 RecognizeUtterance
操作的相同資訊。正如您會對 RecognizeUtterance
操作的回應一樣,您可以使用此項資訊向使用者提示下一筆資訊。
使用 DeleteSession
操作移除現有工作階段,並重新啟動新的工作階段。例如,當您正在測試機器人時,您可以使用 DeleteSession
操作從機器人移除測試工作階段。
工作階段操作會與您的履行 Lambda 函數搭配使用。例如,如果您的 Lambda 函數傳回Failed
為履行狀態,您可以使用 PutSession
操作,將對話方塊動作類型設定為 close
,並將對話方塊動作類型設定為 和 fulfillmentState
ReadyForFulfillment
以重試履行步驟。
以下是您可以使用工作階段操作進行的一些動作:
-
讓機器人開始對話,而非等候使用者。
-
在對話期間切換意圖。
-
回到先前的意圖。
-
在互動的過程中間開始或重新開始對話。
-
驗證槽值並讓機器人針對無效的值重新提示。
以下進一步說明上述各個動作。
啟動新的工作階段
如果您想要讓機器人開始與您的使用者對話,則可以使用 PutSession
操作。
-
建立無槽的歡迎意圖及提示使用者的結論訊息,以陳述意圖。例如,「您想要訂購什麼? 您可以說「訂購飲料」或「訂購披薩」。
-
呼叫
PutSession
操作。將意圖名稱設為歡迎意圖的名稱,然後將對話方塊動作設為Delegate
。 -
Amazon Lex 將回應您的歡迎意向提示,以開始與使用者的對話。
切換意圖
您可以使用 PutSession
操作,來將一種意圖切換成另一種意圖。您也可以使用它切回上一個意圖。您可以使用 PutSession
操作來設定工作階段屬性或新意圖的槽值。
-
呼叫
PutSession
操作。將意圖名稱設為新意圖的名稱,然後將對話方塊動作設為Delegate
。您也可以設定新意圖所需的任何槽值或工作階段屬性。 -
Amazon Lex 將使用新意圖開始與使用者的對話。
恢復先前的意圖
若要繼續先前的意圖,請使用 GetSession
操作來取得意圖狀態,請執行所需的互動,然後使用 PutSession
操作將意圖設定為其先前的對話方塊狀態。
-
呼叫
GetSession
操作。儲存意圖的狀態。 -
執行另一個互動,例如實現不同的意圖。
-
使用先前意圖儲存的資訊,呼叫
PutSession
操作。這將把在對話中同一處的先前意圖傳回給使用者。
在某些情況下,可能需要繼續您使用者與機器人的對話。例如,假設您已建立客服機器人。您的應用程式會判斷使用者是否需要與客服代表談話。與使用者交談後,客服代表可以連同收集到的資訊,將對話轉回機器人。
若要繼續工作階段,請使用與下列相似的步驟:
-
您的應用程式會判斷使用者是否需要與客服代表交談。
-
使用
GetSession
操作來取得意圖目前的對話方塊狀態。 -
客服代表與使用者交談,並解決問題。
-
使用
PutSession
操作來設定意圖的對話方塊狀態。這可能包括設定槽值、設定工作階段屬性或變更意圖。 -
機器人繼續與使用者對話。
驗證插槽值
您可以使用用戶端應用程式驗證對您機器人所做的回應。如果回應無效,您可以使用 PutSession
操作來從您的使用者取得新的回應。例如,假設您的訂花機器人只能賣鬱金香、玫瑰花及水仙花。如果使用者訂購康乃馨,您的應用程式可以執行下列動作:
-
檢查從
PostText
或PostContent
回應傳回的槽值。 -
如果槽值無效,則呼叫
PutSession
操作。您的應用程式應清除槽值,請設定slotToElicit
欄位,然後將dialogAction.type
值設為elicitSlot
。或者,如果您想要變更 Amazon Lex 用來引發插槽值的訊息,您可以設定message
和messageFormat
欄位。