支援終止通知:2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex 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、機器人別名 ($LATEST) 和使用者名稱 (識別使用者的隨機字串)。末尾的text表示其為PostTextAPI 請求 (而非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 機器人 )。預訂行程 將利用工作階段屬性,透過跨意圖共享資訊與使用者進行動態對話。
-