為您的 Lex V2 機器人設定履行進度更新 - Amazon Lex

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

為您的 Lex V2 機器人設定履行進度更新

當呼叫意圖的履行 Lambda 函數時,在函數完成之前,機器人不會傳送回應。如果 Lambda 函數需要幾秒鐘以上才能完成,使用者可能會認為機器人沒有回應。若要解決此問題,您可以設定機器人在履行 Lambda 函數執行時傳送更新給使用者,讓使用者知道機器人仍在處理其請求。

當您將履行更新新增至意圖時,機器人會在履行開始時定期回應,並在履行進行時定期回應。當您設定啟動回應時,您可以在機器人傳送回應之前指定延遲。如此一來,您可以支援履行無法相對快速完成的情況。當您設定更新回應時,您可以指定要傳送更新的頻率。您也可以設定逾時,以限制履行函數必須執行的時間。

您也可以將完成後的回應新增至機器人。這可讓機器人根據履行成功、失敗或逾時,傳送不同的回應。

只有在使用 StartConversation 操作與機器人互動時,才會使用履行更新。您可以在使用 StartConversationRecognizeTextRecognizeUtterance 操作與機器人互動時,使用履行後更新

履行更新

履行更新會在 Lambda 函數滿足意圖時傳送。當您開啟履行更新時,您會提供在履行開始時傳送的開始回應,以及在履行進行時定期傳送的更新回應。

當您指定更新回應時,您也可以指定逾時,以決定履行函數可執行的時間長度。您可以指定最長 15 分鐘 (900 秒) 的逾時長度。

如果您在主控台中或使用 CreateIntentUpdateIntent 操作將 active設定為 false 來關閉履行更新,則不會使用為履行更新指定的逾時,而是使用預設的 30 秒逾時。

如果履行函數逾時,Amazon Lex V2 會執行下列三項操作之一:

  • 完成後回應已設定且處於作用中 – 會傳回逾時回應。

  • 完成後回應已設定且非作用中 – 會傳回例外狀況。

  • 未設定履行後回應 – 傳回例外狀況。

開始回應

在串流對話期間呼叫 Lambda 履行函數時,Amazon Lex V2 會傳回啟動回應。它通常會告訴使用者,實現意圖需要一些時間,他們應該等待。當您使用 RecognizeTextRecognizeUtterance操作時,不會傳回啟動回應。

您最多可以指定五個回應訊息。Amazon Lex V2 選擇要播放給使用者的訊息之一。

您可以在呼叫 Lambda 函數和傳回啟動回應之間設定延遲。如果 Lambda 函數在延遲完成之前完成其工作,則不會傳回啟動回應。

您可以使用主控台中的active切換開關或 FulfillmentUpdatesSpecification 結構來開啟和關閉啟動回應。當 active為 false 時,不會播放啟動回應。

更新回應

在 Lambda 履行函數執行時,Amazon Lex 會在串流對話期間定期傳回更新回應。當您使用 RecognizeTextRecognizeUtterance操作時,不會播放更新回應。您可以設定更新回應播放的頻率。例如,您可以在履行函數執行時每 30 秒播放一次更新回應,讓使用者知道程序正在執行,並且應該繼續等待。

您最多可以指定五個更新訊息。Amazon Lex V2 選擇要播放給使用者的訊息。使用多個訊息可避免重複更新。

如果使用者在履行 Lambda 函數執行時透過語音、DTMF 或文字提供輸入,Amazon Lex V2 會將更新回應傳回給使用者。

如果 Lambda 函數在第一個更新期間結束前完成其工作,則不會傳回更新回應。

您可以使用主控台中的active切換開關或 FulfillmentUpdatesSpecification 結構來開啟和關閉更新回應。當 active為 false 時,不會傳回更新回應。

履行後回應

當履行函數結束時,Amazon Lex V2 會傳回履行後回應。履行任何意圖時,都可以使用履行後回應,而不只是在串流對話時。履行後回應可讓使用者知道函數已完成且結果。

您可以使用主控台中的active切換開關或 PostFulfillmentStatusSpecification 結構來開啟和關閉履行後回應。當 active 為 false 時,不會播放回應。

履行後回應有三種類型:

  • 成功 – 在履行 Lambda 函數成功完成其工作時傳回。如果履行後回應未處於作用中狀態。Amazon Lex V2 會採取下一個設定的動作。

  • 逾時 – 如果 Lambda 函數未在設定的逾時期間經過之前完成其工作,則傳回 。如果履行後回應未處於作用中狀態,Amazon Lex V2 會傳回例外狀況。

  • 失敗 – 當 Lambda 函數傳回回應Failed中的狀態,或在滿足意圖時 Amazon Lex V2 發生錯誤時傳回。如果履行後回應未處於作用中狀態,Amazon Lex V2 會傳回例外狀況。

您可以為每個類型指定最多五個訊息。Amazon Lex V2 選擇要播放給使用者的訊息之一。

與履行開始和履行更新回應不同,履行後回應會針對串流和非串流對話播放。

您也可以選擇透過設定 Lambda 函數來傳回履行後訊息來覆寫這些訊息。

注意

如果意圖有結束回應,則會在完成後回應之後傳回。

Lex V2 的履行後範例

為了更好地了解履行後回應,我們以 BookTrip 機器人為例,該機器人是為協助規劃行程而建立的,具有 BookFlight 意圖,並設定了履行 Lambda 函數,以保留客戶與航空公司的航班。引出 BookFlight 插槽後,Amazon Lex V2 會叫用履行 Lambda 函數。在此履行過程中,可能會發生下列三個結果之一:

  • 成功 – 航班已成功預訂。

  • 逾時 – 預訂程序所花費的時間超過設定的履行 Lambda 執行時間 (例如,如果無法在分配的時間內聯絡航空公司)。

  • 失敗 – 預訂因其他原因而失敗。

您可以利用履行後回應,在每種情況下為客戶提供更有意義的回應。每種情況的範例如下:

  • 成功回應 – 「我們能夠成功預訂您的票證,並已傳送確認電子郵件給您。如果您有任何問題,請隨時使用電子郵件中提供的聯絡資訊聯絡我們。」

  • 逾時回應 –「由於系統流量過大,預訂您的票證所花費的時間超過預期。我們的佇列中有您的請求,並已傳送一封電子郵件給您,其中包含與此請求對應的參考號碼。預訂票證後,我們會傳送保留的確認給您。如果您有任何問題,請隨時使用電子郵件中提供的聯絡資訊聯絡我們。」

    注意

    如果您未設定逾時訊息, 會擲回與使用案例對應的 4XX 錯誤。

  • 失敗回應 –「很抱歉,我們無法預訂您的票證。我們已傳送一封電子郵件,其中包含我們在預訂您的保留時所遇到問題的詳細資訊。」