本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當呼叫意圖的履行 Lambda 函數時,機器人在函數完成之前不會傳送回應。如果 Lambda 函數需要幾秒鐘以上才能完成,使用者可能會認為機器人沒有回應。若要解決此問題,您可以設定機器人在履行 Lambda 函數執行時傳送更新給使用者,讓使用者知道機器人仍在處理其請求。
當您將履行更新新增至意圖時,機器人會在履行開始時定期回應,並在履行進行時定期回應。當您設定啟動回應時,您可以在機器人傳送回應之前指定延遲。如此一來,您可以支援履行無法相對快速完成的情況。當您設定更新回應時,您可以指定要傳送更新的頻率。您也可以設定逾時,以限制履行函數必須執行的時間。
您也可以將完成後的回應新增至機器人。這可讓機器人根據履行成功、失敗或逾時,傳送不同的回應。
履行更新只會在使用 StartConversation 操作與機器人互動時使用。您可以在使用 StartConversation、RecognizeText 和 RecognizeUtterance 操作與機器人互動時使用完成後更新
履行更新
履行更新會在 Lambda 函數滿足意圖時傳送。當您開啟履行更新時,您會提供在履行開始時傳送的開始回應,以及在履行進行中定期傳送的更新回應。
當您指定更新回應時,您也可以指定逾時,以決定履行函數可以執行多久。您可以指定最長 15 分鐘 (900 秒) 的逾時長度。
如果您在主控台或使用 CreateIntent 或 UpdateIntent 操作將 active
設定為 false,以關閉履行更新,則不會使用為履行更新指定的逾時,而是使用預設的 30 秒逾時。
如果履行函數逾時,Amazon Lex V2 會執行下列三項操作之一:
-
完成後回應已設定且處於作用中 – 會傳回逾時回應。
-
完成後回應已設定,且非作用中 – 傳回例外狀況。
-
未設定履行後回應 – 傳回例外狀況。
開始回應
在串流對話期間呼叫 Lambda 履行函數時,Amazon Lex V2 會傳回啟動回應。它通常會告訴使用者,實現意圖需要一些時間,他們應該等待。當您使用 RecognizeText
或 RecognizeUtterance
操作時,不會傳回啟動回應。
您最多可以指定五個回應訊息。Amazon Lex V2 選擇要播放給使用者的訊息之一。
您可以在呼叫 Lambda 函數和傳回啟動回應之間設定延遲。如果 Lambda 函數在延遲完成之前完成其工作,則不會傳回啟動回應。
您可以使用主控台中的active
切換或 FulfillmentUpdatesSpecification 結構來開啟和關閉啟動回應。當 active
為 false 時,不會播放啟動回應。
更新回應
在 Lambda 履行函數執行時,Amazon Lex 會在串流對話期間定期傳回更新回應。當您使用 RecognizeText
或 RecognizeUtterance
操作時,不會播放更新回應。您可以設定更新回應播放的頻率。例如,您可以在履行函數執行時每 30 秒播放一次更新回應,讓使用者知道程序正在執行中,而且應該繼續等待。
您最多可以指定五個更新訊息。Amazon Lex V2 選擇要播放給使用者的訊息。使用多個訊息可讓更新不會重複。
如果使用者在履行 Lambda 函數執行時透過語音、DTMF 或文字提供輸入,Amazon Lex V2 會傳回更新回應給使用者。
如果 Lambda 函數在第一個更新期間結束前完成其工作,則不會傳回更新回應。
您可以使用主控台中的active
切換或 FulfillmentUpdatesSpecification 結構來開啟和關閉更新回應。當 active
為 false 時,不會傳回更新回應。
完成後回應
當履行函數結束時,Amazon Lex V2 會傳回完成後回應。履行後回應可在滿足任何意圖時使用,而不只是在串流對話時使用。完成後的回應可讓使用者知道函數已完成,並顯示結果。
您可以使用主控台或 PostFulfillmentStatusSpecification 結構中的active
切換來開啟和關閉完成後的回應。當 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 執行時間更長的時間 (例如,如果無法在分配的時間內聯絡航空公司)。
-
失敗 - 預訂失敗的原因。
您可以利用完成後的回應,在每種情況下為客戶提供更有意義的回應。每種情況的範例如下:
-
成功回應 –「我們能夠成功預訂您的門票,並已傳送確認電子郵件給您。如果您有任何問題,請隨時使用電子郵件中提供的聯絡資訊與我們聯絡。」
-
逾時回應 – 「由於我們系統流量過大,因此預訂您的票證需要比預期更長的時間。您的請求已在我們的佇列中,並已傳送一封電子郵件給您,其中包含與此請求對應的參考號碼。預訂票證後,我們會傳送保留的確認給您。如果您有任何問題,請隨時使用電子郵件中提供的聯絡資訊與我們聯絡。」
注意
如果您未設定逾時訊息,Lex 會擲回與使用案例對應的 4XX 錯誤。
-
失敗回應 –「很抱歉,我們無法預訂您的票證。我們已傳送電子郵件,其中包含我們在預訂您的保留時遇到的問題的詳細資訊。」