Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

ブランチ会話への条件の追加

フォーカスモード

このページの内容

ブランチ会話への条件の追加 - Amazon Lex

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

条件分岐を使用すると、顧客がボットとの会話を進めるパスを制御できます。スロット値、セッション属性、入力モードの内容、入力文字起こしフィールド、または Amazon Kendra からの応答に基づいて会話を分岐できます。

最大で 4 つのブランチを定義できます。各ブランチには、Amazon Lex V2 がそのブランチに従うために満たさなければならない条件があります。どのブランチも条件が満たされない場合、デフォルトブランチが実行されます。

ブランチを定義するときは、そのブランチに対応する条件が true と評価された場合に Amazon Lex V2 が実行するアクションを定義します。次のいずれかを使用してアクションに定義できます。

  • ユーザーに送信された応答。

  • スロットに適用するスロット値。

  • 現在のセッションのセッション属性値。

  • 会話の次のステップ。詳細については、「会話パスの作成」を参照してください。

条件分岐にはさまざまなオプションを選択できます。

各条件付きブランチには、Amazon Lex V2 がそのブランチに従うために満たさなければならないブール式があります。条件に使用できる比較演算子、ブール演算子、関数、および量指定演算子があります。たとえば、{age} スロットが 24 未満の場合、次の条件は true を返します。

{age} < 24

{toppings} 複数値スロットに「パイナップル」という単語が含まれている場合、次の条件は true を返します。

{toppings} CONTAINS "pineapple"

複数の比較演算子を 1 つのブール演算子と組み合わせると、より複雑な条件を作成できます。たとえば、{make} スロット値が「ホンダ」で {model} スロット値が「シビック」の場合、次の条件は true を返します。括弧を使用して評価順序を設定します。

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

次のトピックでは、条件分岐演算子と関数について詳しく説明します。

注記

2022 年 8 月 17 日、Amazon Lex V2 はユーザーとの会話の管理方法の変更をリリースしました。この変更により、ユーザーが会話の中でたどるパスをより細かく制御できるようになりました。詳細については、「Amazon Lex V2 の会話フローの変更 V2」を参照してください。2022 年 8 月 17 日より前に作成されたボットは、ダイアログコードフックメッセージ、値の設定、次のステップの設定、条件の追加をサポートしていません。

比較演算子

Amazon Lex V2 では、条件について次の比較演算子がサポートされています。

  • 等しい (=)

  • 等しくない (!=)

  • 未満 (<)

  • 以下 (<=)

  • Greater than (>)

  • 以上 (>=)

比較演算子を使用するときには、以下のルールが使用されます。

  • 左側はリファレンスである必要があります。たとえば、スロット値を参照するには、{slotName} を使用します。セッション属性値を参照するには、[attribute] を使用します。入力モードと入力文字起こしには、$.inputMode$.inputTranscript を使用します。

  • 右側は定数で、左側と同じ型でなければなりません。

  • 設定されていない属性を参照する式はすべて無効として扱われ、評価されません。

  • 複数の値を持つスロットを比較する場合、使用される値は、解釈されるすべての値をカンマで区切ったリストです。

比較は参照のスロットタイプに基づいて行われます。それらは以下のように解決されます。

  • 文字列 — 文字列は ASCII 表現に基づいて比較されます。比較では、大文字小文字を区別しません。

  • 数値 — 数値ベースのスロットは、文字列表現から数値に変換されて比較されます。

  • 日付/時刻 — 時間ベースのスロットは時系列に基づいて比較されます。日付または時刻が早いほど小さいとみなされます。期間については、期間が短いほど短いとみなされます。

ブール演算子

Amazon Lex V2 は、比較演算子を組み合わせるブール演算子をサポートしています。以下のようなステートメントを作成できます。

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

以下のブール演算子を使用することができます。

  • AND (&&)

  • OR (||)

  • NOT (!)

数量演算子

数量演算子はシーケンスの要素を評価し、1 つ以上の要素が条件を満たすかどうかを判断します。

  • CONTAINS — 指定された値が複数の値を持つスロットに含まれているかどうかを判断し、含まれている場合は true を返します。たとえば、ユーザーがピザにパイナップルのトッピングを注文した場合、{toppings} CONTAINS "pineapple" は true を返します。

関数

関数には文字列 fn. をプレフィックスとして付ける必要があります。関数への引数は、スロット、セッション属性、またはリクエスト属性への参照です。Amazon Lex V2 は、スロットの値から情報を取得するための 2 つの関数、sessionAttribute と requestAttribute を提供します。

  • fn.Count() — 複数値を持つスロット内の値の数をカウントします。

    たとえば、スロット {toppings} に「ペパロニ、パイナップル」 という値が含まれている場合:

    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 スロット値が「L サイズ」と等しい {pizzaSize} = "large"
カスタムスロット pizzaSize が「L サイズ」または「M サイズ」と等しい {pizzaSize} = "large" または {pizzaSize} = "medium"
カスタムスロット ()AND/OR を使った式 {pizzaType} = "pepperoni" または {pizzaSize} = "medium" または {pizzaSize} = "small"
カスタムスロット (複数値スロット) トッピングにオニオンが入っているか確認する {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 スロット値がワシントンと等しい {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 スロット値がボレン通り {streetName} = "boren avenue"
AMAZON.Duration travelDuration スロット値が 2 時間未満 {travelDuration} < P2H
入力モード 入力モードは音声 $.inputMode = "Speech"
文字起こしを入力する 入力文字起こしは「L サイズのピザが欲しい」と等しい $.inputTranscript = "I want a large pizza"
セッション属性 check customer_subscription_type attribute [customer_subcription_type] = "yearly"
リクエスト属性 check retry_enabled flag ((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 ボットのスロット名を指します。スロットが解決されない場合 (null)、またはスロットが存在しない場合、割り当ては実行時に無視されます。sessionAttribute は、構築時に顧客が設定したセッション属性の名前を指します。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.