

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

# 槽
<a name="intent-slots"></a>

槽是由使用者提供以滿足意圖的值。插槽有兩種類型：
+ **內建插槽類型** – 您可以使用內建插槽類型來擷取標準值，例如數字、名稱和城市。如需支援的內建插槽類型清單，請參閱 [內建插槽類型](built-in-slots.md)。
+ **自訂槽類型** – 您可以使用自訂槽類型來擷取特定於意圖的自訂值。例如，您可以使用自訂槽類型，將帳戶類型擷取為「檢查」或「儲存」。如需詳細資訊，請參閱[自訂槽類型](custom-slot-types.md)。

若要在意圖中定義插槽，您必須設定下列項目：
+ **槽資訊** – 此欄位包含槽的名稱和選用描述。例如，您可以提供「AccountNumber」的槽名稱來擷取帳戶號碼。如果在對話流程中需要插槽以滿足意圖，則必須將其標記為必要。
+ **槽類型** – 槽類型定義槽可接受之值的清單。您可以建立自訂插槽類型，或使用預先定義的插槽類型。
+ **槽提示** – 槽提示是對使用者提出以收集資訊的問題。您可以設定用於收集資訊的重試次數，以及每次重試所使用的提示變化。您也可以在每次重試後啟用 Lambda 函數調用，以處理擷取的輸入並嘗試解析為有效的輸入。
+ **Wait and Continue （選用）** – 透過啟用此行為，使用者可以說出「按住一秒鐘」等片語，讓機器人等待找到資訊並提供資訊。這僅適用於串流對話。如需詳細資訊，請參閱[讓 Amazon Lex V2 機器人在暫停期間等待使用者提供更多資訊](wait-and-continue.md)。
+ **槽擷取回應** – 您可以根據從使用者輸入擷取槽值的結果，設定成功回應和失敗回應。
+ **條件式分支** – 您可以在播放初始回應後套用條件。當條件評估為 true 時，會採取您定義的動作。如需詳細資訊，請參閱[將條件新增至分支對話](paths-branching.md)。
+ **對話方塊程式碼掛**鉤 – 您也可以使用 Lambda 程式碼掛鉤來驗證槽值並執行商業邏輯。如需詳細資訊，請參閱[叫用對話方塊程式碼掛勾](paths-code-hook.md)。
+ **使用者輸入類型** – 您可以設定輸入類型，讓機器人可以接受特定的模態。根據預設，音訊和 DTMF 模態都會接受。您可以選擇將其設定為僅限音訊或僅限 DTMF。
+ **音訊輸入逾時和長度** – 您可以設定音訊逾時，包括語音逾時和靜音逾時。此外，您也可以設定最大音訊長度。
+ **DTMF 輸入逾時、字元和長度** – 您可以設定 DTMF 逾時，以及刪除字元和結束字元。此外，您也可以設定最大 DTMF 長度。
+ **文字長度** – 您可以設定文字模式的最大長度。

播放槽提示後，使用者會提供槽值做為輸入。如果 Amazon Lex V2 不了解使用者提供的槽值，它會重試引出槽，直到它了解值或超過您為槽設定的重試次數上限為止。您可以使用進階重試設定來設定逾時、限制輸入類型，以及啟用或停用初始提示和重試的中斷。每次嘗試擷取輸入後，Amazon Lex V2 都可以呼叫為機器人設定的 Lambda 函數，並使用為重試提供的調用標籤。您可以使用 Lambda 函數，例如，套用您的商業邏輯，嘗試將其解析為有效的值。您可以在槽提示的**進階選項**中啟用此 Lambda 函數。

![設定槽提示讓機器人引出資訊。](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/response-slot-prompt.png)


您可以定義機器人在輸入槽值或超過重試次數上限時應傳送給使用者的回應。例如，對於排程汽車服務的機器人，您可以在輸入車輛識別碼 (VIN) 時傳送訊息給使用者：


|  | 
| --- |
| 感謝您提供汽車的 VIN 號碼。我將繼續安排預約。 | 

您可以建立兩個回應：
+ **成功回應** – 當 Amazon Lex V2 了解槽值時傳送。
+ **失敗回應** – 當 Amazon Lex V2 在重試次數上限之後無法了解使用者的槽值時傳送。

您可以設定值、設定後續步驟，並套用對應至每個回應的條件，以設計對話流程。

如果沒有條件或明確的下一個步驟，Amazon Lex V2 會依優先順序移至下一個槽。

![槽回應的進階選項。](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/response-slot.png)


您可以使用 Lambda 函數來驗證使用者輸入的槽值，並判斷下一個動作應該是什麼。例如，您可以使用驗證函數來確保輸入的值落在正確的範圍，或格式正確。若要啟用 Lambda 函數，請選擇**對話方塊程式碼勾**點區段中的**叫用 Lambda 函數**核取方塊和**作用中**按鈕。您可以為對話方塊程式碼掛鉤指定調用標籤。此調用標籤可用於 Lambda 函數，以撰寫對應於槽引出的商業邏輯。

![對話方塊程式碼掛勾的選項。](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/response-dialog-code-hook.png)


意圖不需要的插槽不屬於主要對話流程的一部分。不過，如果使用者表達用語包含機器人識別為對應於選用插槽的值，則可以使用該值來填入插槽。例如，如果您將商業智慧機器人設定為具有選用`City`插槽和使用者表達用語 **What is the sales for April in San Diego?**，則機器人會以 填入選用插槽**San Diego**。如果有的話，您可以將商業邏輯設定為使用選用的槽值。

無法使用後續步驟引出意圖不需要的插槽。這些步驟只能在意圖引出期間填入 （如上述範例），也可以透過在 Lambda 函數中設定對話方塊狀態來引出。如果使用 Lambda 函數引出槽，您必須在槽引出完成後使用 Lambda 函數來決定對話中的下一個步驟。若要在建置機器人時啟用下一個步驟的支援，您必須將插槽標記為意圖所需的位置。

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

下列主題說明如何設定機器人以重新引出已填滿的槽值，以及如何建立包含多個值的槽：

**Topics**
+ [重新引出插槽](reelicit-slots.md)
+ [在槽中使用多個值](multi-valued-slots.md)