

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

# 叫用對話方塊程式碼掛勾
<a name="paths-code-hook"></a>

在對話中的每個步驟中，當 Amazon Lex V2 傳送訊息給使用者時，您可以使用 Lambda 函數作為對話中的下一個步驟。您可以使用 函數，根據對話的目前狀態實作商業邏輯。

執行的 Lambda 函數與您正在使用的機器人別名相關聯。若要叫用意圖中所有對話方塊程式碼掛鉤的 Lambda 函數，您必須選取**使用 Lambda 函數來初始化和驗證**意圖。如需選擇 Lambda 函數的詳細資訊，請參閱 [為您的 Amazon Lex V2 機器人建立 AWS Lambda函數](lambda-attach.md)。

使用 Lambda 函數有兩個步驟。首先，您必須在對話中的任何時間點啟用對話方塊程式碼掛勾。其次，您必須將對話中的下一個步驟設定為使用對話方塊程式碼掛勾。

下圖顯示對話方塊程式碼掛鉤已啟用。

![\[顯示條件式回應程式碼掛鉤處於作用中狀態。\]](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/code-hook-active.png)


接著，將程式碼掛勾設定為對話步驟的下一個動作。您可以透過設定對話中的下一個步驟來叫用對話方塊程式碼掛勾來執行此操作。下圖顯示條件式分支，其中調用對話方塊程式碼掛鉤是對話預設路徑的下一個步驟。

![\[條件式分支顯示程式碼掛勾做為對話中的下一個步驟。\]](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/code-hook-choose.png)


當程式碼掛鉤處於作用中狀態時，您可以設定三個回應以傳回給使用者：
+ **成功** – 當 Lambda 函數成功完成時傳送。
+ **失敗** – 如果執行 Lambda 函數發生問題，或 Lambda 函數傳回 `intent.state`的值，則傳送`Failed`。
+ **逾時** – 如果 Lambda 函數未在設定的逾時期間內完成，則傳送。

![\[流程圖顯示 Lambda 函數執行後訊息可用的選項。\]](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/conditional-code-hook.png)


選擇 **Lambda 對話方塊程式碼掛**勾，然後選擇**進階選項**，以查看對應至 Lambda 函數調用之回應的三個選項。您可以設定值、設定後續步驟，並套用對應至每個回應的條件，以設計對話流程。如果沒有條件或明確的下一個步驟，Amazon Lex V2 會根據對話的目前狀態來決定下一個步驟。

在**進階選項**頁面上，您也可以選擇啟用或停用 Lambda 函數叫用。啟用 函數時，對話方塊程式碼掛鉤會與 Lambda 調用一起調用，然後根據 Lambda 調用結果來調用成功、失敗或逾時訊息。停用函數時，Amazon Lex V2 不會執行 Lambda 函數，並像對話方塊程式碼掛鉤成功一樣繼續。

您也可以設定呼叫標籤，當此訊息叫用 Lambda 函數時，該標籤會傳送至 Lambda 函數。您可以使用它來協助識別要執行之 Lambda 函數的 區段。

**注意**  
2022 年 8 月 17 日，Amazon Lex V2 發佈了與使用者管理對話方式的變更。此變更可讓您進一步控制使用者在對話中採取的路徑。如需詳細資訊，請參閱[Amazon Lex V2 中對話流程的變更](understanding-new-flows.md)。在 2022 年 8 月 17 日之前建立的機器人不支援對話方塊程式碼掛接訊息、設定值、設定後續步驟，以及新增條件。