選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

將條件新增至分支對話

焦點模式
將條件新增至分支對話 - Amazon Lex

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

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

您可以使用條件式分支來控制客戶在與機器人的對話中採取的路徑。您可以根據槽值、工作階段屬性、輸入模式和輸入文字記錄欄位的內容,或來自 Amazon Kendra 的回應來分支對話。

您最多可以定義四個分支。每個分支都有必須滿足的條件,Amazon Lex V2 才能遵循該分支。如果沒有任何分支滿足其條件,則會遵循預設分支。

當您定義分支時,您可以定義 Amazon Lex V2 在對應於該分支的條件評估為 true 時應採取的動作。您可以定義下列任何動作:

  • 傳送給使用者的回應。

  • 要套用至插槽的槽值。

  • 目前工作階段的工作階段屬性值。

  • 對話的下一個步驟。如需詳細資訊,請參閱建立對話路徑

您可以選擇條件式分支的不同選項。

每個條件式分支都有布林表達式,Amazon Lex V2 必須滿足才能跟隨分支。您可以針對條件使用比較和布林運算子、函數和量化運算子。例如,如果 {age} 槽小於 24,則以下條件傳回 true。

{age} < 24

如果 {toppings} 多值槽包含「pineapple」一詞,則下列條件會傳回 true。

{toppings} CONTAINS "pineapple"

您可以結合多個比較運算子與布林運算子,以因應更複雜的條件。例如,如果 {make} 槽值為 "Honda" 且 {model} 槽值為 "Civic",則以下條件會傳回 true。使用括號來設定評估順序。

({make} = "Honda") AND ({model} = "Civic")

下列主題提供條件式分支運算子和函數的詳細資訊。

注意

2022 年 8 月 17 日,Amazon Lex V2 發佈了與使用者管理對話方式的變更。此變更可讓您更妥善地控制使用者在對話中採取的路徑。如需詳細資訊,請參閱Amazon Lex V2 中對話流程的變更。在 2022 年 8 月 17 日之前建立的機器人不支援對話方塊程式碼掛接訊息、設定值、設定後續步驟和新增條件。

比較運算子

Amazon Lex V2 支援下列條件的比較運算子:

  • 等於 (=)

  • 不等於 (!=)

  • 小於 (<)

  • 小於或等於 (<=)

  • 大於 (>)

  • 大於或等於 (>=)

使用比較運算子時,會使用下列規則。

  • 左側必須是參考。例如,若要參考槽值,請使用 {slotName}。若要參考工作階段屬性值,請使用 [attribute]。對於輸入模式和輸入文字記錄,您可以使用 $.inputMode$.inputTranscript

  • 右側必須是常數,且與左側相同類型。

  • 任何參考尚未設定的屬性的表達式都會被視為無效,且不會進行評估。

  • 當您比較多值插槽時,所使用的值是所有解譯值的逗號分隔清單。

比較是根據參考的槽類型。其解決方式如下:

  • 字串 – 根據字串的 ASCII 表示法比較字串。比較不區分大小寫。

  • 數字 – 數字型插槽會從字串表示法轉換為數字,然後進行比較。

  • 日期/時間 – 根據時間序列比較以時間為基礎的槽。較早的日期或時間會被視為較小。對於持續時間,較短的期間會被視為較小。

布林值運算子

Amazon Lex V2 支援布林運算子結合比較運算子。它們可讓您建立類似下列的陳述式:

({number} >= 5) AND ({number} <= 10)

您可以使用下列布林運算子:

  • AND (&&)

  • OR (||)

  • 非 (!)

量化器運算子

量化運算子會評估序列的元素,並判斷一或多個元素是否符合條件。

  • CONTAINS – 決定指定值是否包含在多值插槽中,如果是,則傳回 true。例如,如果使用者在其比薩上訂購鳳梨,則{toppings} CONTAINS "pineapple"傳回 true。

函數

函數必須以字串 開頭fn.。函數的引數是槽、工作階段屬性或請求屬性的參考。Amazon Lex V2 提供兩個函數,用於從插槽、sessionAttribute 或 requestAttribute 的值取得資訊。

  • fn.COUNT() – 計算多值槽中的值數目。

    例如,如果槽{toppings}包含值 "pepperoni, pineapple":

    fn.COUNT({toppings}) = 2

  • fn.IS_SET() – 如果在目前工作階段中設定槽、工作階段屬性或請求屬性,則值為 true。

    根據先前的範例:

    fn.IS_SET({toppings})

  • fn.LENGTH() – 值是目前工作階段中設定的工作階段屬性、槽值或槽屬性值的長度。此函數不支援多值插槽或複合插槽。

    範例:

    如果插槽{credit-card-number}包含值 "123456781234":

    fn.LENGTH({credit-card-number}) = 12

範例條件式表達式

以下是一些範例條件式表達式。注意: $. 代表 Amazon Lex JSON 回應的進入點。下列值$.將在 Amazon Lex 回應中剖析,以擷取該值。Amazon Lex 回應中使用 JSON 路徑參考轉錄區塊的條件式表達式,將僅在支援 ASR 轉錄分數的相同區域支援。

值類型 使用案例 條件式表達式
自訂插槽 pizzaSize 槽值等於大 {pizzaSize} = "large"
自訂插槽 pizzaSize 等於大型或中型 {pizzaSize} = "large" OR {pizzaSize} = "medium"
自訂插槽 使用 ()和 的表達式 AND/OR {pizzaType} = "pepperoni" OR {pizzaSize} = "medium"{pizzaSize} = "small"
自訂插槽 (多值插槽) 檢查其中一個配料是否為 Onion {toppings} CONTAINS "Onion"
自訂插槽 (多值插槽) 配料數量超過 3 個 fn.COUNT({topping}) > 2
AMAZON.AlphaNumeric bookingID 是 ABC123 {bookingID} = "ABC123"
AMAZON.Number 年齡槽值大於 30 {age} > 30
AMAZON.Number 年齡槽值等於 10 {age} = 10
AMAZON.Date dateOfBirth 1990 年之前的槽值 {dateOfBirth} < "1990-10-01"
AMAZON.State destinationState 槽值等於 Washington {destinationState} = "washington"
AMAZON.Country destinationCountry 槽值不是美國 {destinationCountry} != "united states"
AMAZON.FirstName firstName 槽值為 John {firstName} = "John"
AMAZON.PhoneNumber phoneNumber 槽值為 716767891932 {phoneNumer} = 716767891932
AMAZON.Percentage 檢查百分比槽值是否大於或等於 78 {percentage} >= 78
AMAZON.EmailAddress emailAddress 槽值為 userA@hmail.com {emailAddress} = "userA@hmail.com"
AMAZON.LastName lastName 槽值為 Doe {lastName} = "Doe"
AMAZON.City 城市槽值等於西雅圖 {city} = "Seattle"
AMAZON.Time 時間在晚上 8 點之後 {time} > "20:00"
AMAZON.StreetName streetName 槽值為 Boren Avenue {streetName} = "boren avenue"
AMAZON.Duration travelDuration 槽值少於 2 小時 {travelDuration} < P2H
輸入模式 輸入模式為語音 $.inputMode = "Speech"
輸入文字記錄 輸入文字記錄等於「我想要大型比薩」 $.inputTranscript = "I want a large pizza"
工作階段屬性 檢查 customer_subscription_type 屬性 [customer_subcription_type] = "yearly"
請求屬性 檢查 retry_enabled 旗標 ((retry_enabled)) = "TRUE"
Kendra 回應 Kendra 回應包含常見問答集 fn.IS_SET(((x-amz-lex:kendra-search-response-question_answer-question-1)))
具有轉錄的條件式表達式 使用轉錄 JSON 路徑的條件式表達式 $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence > 0.5
設定工作階段屬性 使用轉錄 JSON 路徑和槽值設定工作階段屬性 [sessionAttribute] = "$.transcriptions..." AND [sessionAttribute] = "{<slotName>}"
設定槽值 使用工作階段屬性和轉錄 JSON 路徑設定槽值 {slotName} = [<sessionAttribute>] AND {slotName} = "$.transcriptions..."
注意

slotName 是指 Amazon Lex 機器人中槽的名稱。如果槽未解析 (空),或槽不存在,則會在執行時間忽略指派。 sessionAttribute是指客戶在建置時間設定的工作階段屬性名稱。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。