步驟 2b (選用):檢閱輸入型資訊流程的詳細資訊 (主控台) - Amazon Lex V1

如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 V2。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 2b (選用):檢閱輸入型資訊流程的詳細資訊 (主控台)

本節說明用戶端與 Amazon Lex 之間由用戶端使用 PostText API 傳送請求時的資訊流程。如需詳細資訊,請參閱PostText

  1. 使用者輸入:我想要訂花

    1. 用戶端 (主控台) 傳送以下 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 函數起始這些屬性。

    2. 從中inputText,Amazon Lex 檢測到意圖(OrderFlowers)。此意圖沒有任何用於初始化和驗證使用者輸入或履行的程式碼掛接 (也就是 Lambda 函數)。

      Amazon Lex 選擇其中一個意圖的插槽(FlowerType)來引出價值。其亦將選取槽 (整個意圖組態) 的其中一個值引出提示,然後傳回以下回應給用戶端。主控台向使用者顯示回應中的訊息。

      傳送至用戶端包含 JSON 資料的訊息。

      用戶端顯示回應中的訊息。

  2. 使用者輸入:玫瑰

    1. 用戶端 (主控台) 傳送以下 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 仍為空白。

    2. Amazon Lex 首先會inputText在目前意圖的內容中解譯,服務會記住已向特定使用者詢問FlowerType插槽的相關資訊。Amazon Lex 首先更新目前意圖的插槽值,並選擇另一個位置 (PickupDate) 以及其中一個提示訊息 — 您希望什麼日子收到玫瑰花? — 插槽。

      隨後,Amazon Lex 會傳回:

      JSON 資料以回應 FlowerType 插槽的要求。

      用戶端顯示回應中的訊息。

  3. 使用者輸入:明天

    1. 用戶端 (主控台) 傳送以下 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 仍為空白。

    2. Amazon Lex 首先會inputText在目前意圖的內容中解譯,服務會記住已向特定使用者詢問PickupDate插槽的相關資訊。Amazon Lex 會針對目前的意圖更新插槽 (PickupDate) 值。其將選擇另一個槽 (PickupTime) 來引出槽值。它返回了價值引起的提示之一-在 2017-01-05 什麼時候交付玫瑰? — 給客戶端。

      Amazon Lex 隨後會傳回:

      要求 PickupDate 插槽後返回 JSON 消息。

      用戶端顯示回應中的訊息。

  4. 使用者輸入:下午 6 點

    1. 用戶端 (主控台) 傳送以下 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 仍為空白。

    2. Amazon Lex 首先會inputText在目前意圖的內容中解譯,服務會記住已向特定使用者詢問PickupTime插槽的相關資訊。Amazon Lex 會先更新目前意圖的插槽值。現在,Amazon Lex 偵測到它具有所有插槽的資訊。

      OrderFlowers 意圖設定了一則確認訊息。因此,Amazon Lex 需要使用者明確確認,才能繼續履行意圖。Amazon Lex 在訂購鮮花前,會傳送下列訊息給客戶,要求確認:

      要求確認訂花包含 JSON 資料的訊息。

      用戶端顯示回應中的訊息。

  5. 使用者輸入:好

    1. 用戶端 (主控台) 傳送以下 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 仍為空白。

    2. Amazon Lex 會inputText在確認目前意圖的內容中解譯。其已理解使用者想要完成下單。OrderFlowers意圖設定ReturnIntent為履行活動 (沒有 Lambda 函數可完成意圖)。因此,Amazon Lex 會將下列插槽資料傳回給用戶端。

      對話結束並已準備好要下單時傳送的 JSON 資料。

      Amazon Lex 設置dialogStateReadyForFulfillment。隨後用戶端即可實現意圖。

  6. 現在,再次測試機器人。為此,您必須由主控台選擇 Clear (清除) 連結以建立新的 (使用者) 內容。接著為訂花意圖提供資料,請嘗試提供無效的資料。例如:

    • 花種為「茉莉」(此花種不受支援),

    • 想要取花的日期為「昨天」。

    請注意,機器人會接受這些值,因為您沒有任何程式碼來初始化/驗證使用者資料。在下一節中,您可以新增 Lambda 函數來執行此操作。請注意 Lambda 函數的事項:

    • Lambda 函數會在每次使用者輸入之後驗證插槽資料。其將在結束時實現意圖。也就是說,機器人會處理訂花的下單,然後向使用者傳回一則訊息,而不單只是將槽資料傳回用戶端。如需詳細資訊,請參閱使用 Lambda 函數

    • Lambda 函數也會設定工作階段屬性。如需工作階段屬性的詳細資訊,請參閱 PostText

      完成入門章節後,您可以接著做其他練習 (其他示例:創建 Amazon Lex 機器人 )。預訂行程 將利用工作階段屬性,透過跨意圖共享資訊與使用者進行動態對話。

後續步驟

步驟 3:建立 Lambda 函數