如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 V2。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 2b (選用):檢閱輸入型資訊流程的詳細資訊 (主控台)
本節說明用戶端與 Amazon Lex 之間由用戶端使用 PostText
API 傳送請求時的資訊流程。如需詳細資訊,請參閱PostText。
-
使用者輸入:我想要訂花
-
用戶端 (主控台) 傳送以下 PostText 請求給 Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "I would like to order some flowers", "sessionAttributes": {} }請求 URI 和本文都向 Amazon Lex 提供信息:
-
請求 URI — 提供機器人名稱 (
OrderFlowers
)、bot 別名 ($LATEST
) 和使用者名稱 (識別使用者的隨機字串)。末尾的text
表示其為PostText
API 請求 (而非PostContent
)。 -
請求本文 – 包含使用者輸入 (
inputText
) 和空的sessionAttributes
。用戶端發出第一次請求時,沒有工作階段屬性。稍後將由 Lambda 函數起始這些屬性。
-
-
從中
inputText
,Amazon Lex 檢測到意圖(OrderFlowers
)。此意圖沒有任何用於初始化和驗證使用者輸入或履行的程式碼掛接 (也就是 Lambda 函數)。Amazon Lex 選擇其中一個意圖的插槽(
FlowerType
)來引出價值。其亦將選取槽 (整個意圖組態) 的其中一個值引出提示,然後傳回以下回應給用戶端。主控台向使用者顯示回應中的訊息。用戶端顯示回應中的訊息。
-
-
使用者輸入:玫瑰
-
用戶端 (主控台) 傳送以下 PostText 請求給 Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "roses", "sessionAttributes": {} }請求內文中的
inputText
會提供使用者輸入。sessionAttributes
仍為空白。 -
Amazon Lex 首先會
inputText
在目前意圖的內容中解譯,服務會記住已向特定使用者詢問FlowerType
插槽的相關資訊。Amazon Lex 首先更新目前意圖的插槽值,並選擇另一個位置 (PickupDate
) 以及其中一個提示訊息 — 您希望什麼日子收到玫瑰花? —插槽。
隨後,Amazon Lex 會傳回:
用戶端顯示回應中的訊息。
-
-
使用者輸入:明天
-
用戶端 (主控台) 傳送以下 PostText 請求給 Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "tomorrow", "sessionAttributes": {} }請求內文中的
inputText
會提供使用者輸入。sessionAttributes
仍為空白。 -
Amazon Lex 首先會
inputText
在目前意圖的內容中解譯,服務會記住已向特定使用者詢問PickupDate
插槽的相關資訊。Amazon Lex 會針對目前的意圖更新插槽 (PickupDate
) 值。其將選擇另一個槽 (PickupTime
) 來引出槽值。它返回了價值引起的提示之一-在 2017-01-05 什麼時候交付玫瑰? —給客戶端。
Amazon Lex 隨後會傳回:
用戶端顯示回應中的訊息。
-
-
使用者輸入:下午 6 點
-
用戶端 (主控台) 傳送以下 PostText 請求給 Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "6 pm", "sessionAttributes": {} }請求內文中的
inputText
會提供使用者輸入。sessionAttributes
仍為空白。 -
Amazon Lex 首先會
inputText
在目前意圖的內容中解譯,服務會記住已向特定使用者詢問PickupTime
插槽的相關資訊。Amazon Lex 會先更新目前意圖的插槽值。現在,Amazon Lex 偵測到它具有所有插槽的資訊。OrderFlowers
意圖設定了一則確認訊息。因此,Amazon Lex 需要使用者明確確認,才能繼續履行意圖。Amazon Lex 在訂購鮮花前,會傳送下列訊息給客戶,要求確認:用戶端顯示回應中的訊息。
-
-
使用者輸入:好
-
用戶端 (主控台) 傳送以下 PostText 請求給 Amazon Lex:
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "Yes", "sessionAttributes": {} }請求內文中的
inputText
會提供使用者輸入。sessionAttributes
仍為空白。 -
Amazon Lex 會
inputText
在確認目前意圖的內容中解譯。其已理解使用者想要完成下單。OrderFlowers
意圖設定ReturnIntent
為履行活動 (沒有 Lambda 函數可完成意圖)。因此,Amazon Lex 會將下列插槽資料傳回給用戶端。Amazon Lex 設置
dialogState
為ReadyForFulfillment
。隨後用戶端即可實現意圖。
-
-
現在,再次測試機器人。為此,您必須由主控台選擇 Clear (清除) 連結以建立新的 (使用者) 內容。接著為訂花意圖提供資料,請嘗試提供無效的資料。例如:
-
花種為「茉莉」(此花種不受支援),
-
想要取花的日期為「昨天」。
請注意,機器人會接受這些值,因為您沒有任何程式碼來初始化/驗證使用者資料。在下一節中,您可以新增 Lambda 函數來執行此操作。請注意 Lambda 函數的事項:
-
Lambda 函數會在每次使用者輸入之後驗證插槽資料。其將在結束時實現意圖。也就是說,機器人會處理訂花的下單,然後向使用者傳回一則訊息,而不單只是將槽資料傳回用戶端。如需詳細資訊,請參閱使用 Lambda 函數。
-
Lambda 函數也會設定工作階段屬性。如需工作階段屬性的詳細資訊,請參閱 PostText。
完成入門章節後,您可以接著做其他練習 (其他示例:創建 Amazon Lex 機器人 )。預訂行程 將利用工作階段屬性,透過跨意圖共享資訊與使用者進行動態對話。
-