動的オプション

オプション応答では、選択項目のリストが顧客に示されます。 dynamic 設定を使用すると、毎回異なる可能性があるオプションからリストを生成できます。

動的オプションは、変数に保管されているデータに基づいて生成されます。変数は、質問を尋ねるステップで使用可能でなければなりません。 ソース変数には、値の配列が含まれている必要があります。それぞれの値は、顧客に提示されるオプションの 1 つを表します。 配列内の項目は、ストリングや数値 (例えば、 [ "Raleigh", "Boston", "New York" ]) などの単純な値、または複合 JSON オブジェクトにすることができます。

動的オプションの一般的なシナリオは、カスタム拡張を使用して呼び出す外部 API から配列が返される場合です。 例えば、カスタム拡張を使用して、顧客のアカウントに関連付けられたクレジット・カードのリストを取得できます。 その後、動的オプションを使用して、会話中に使用するカードを顧客に尋ねることができます。 (カスタム拡張について詳しくは、 カスタム拡張の呼び出し を参照してください。)

アクションによって、式を使用してソース変数にデータを取り込むこともできます。 例えば、セッション変数を使用して、顧客が購入を決定したアイテムを含むショッピング・カートを作成することができます。 カートからアイテムを削除するアクションでは、動的オプションを使用してカート内のアイテムを表示し、顧客が削除するアイテムを選択できるようにすることができます。 (変数値に式を使用する方法について詳しくは、 式を使用したセッション変数への値の割り当て を参照してください。)

動的オプションの定義

動的オプションの顧客応答を定義するには、以下のようにします。

  1. ステップで、 「顧客応答の定義」 をクリックします。

  2. 「オプション」 応答タイプを選択します。

  3. 「動的」 トグルをクリックします。

  4. 「ソース変数」 フィールドで、動的オプションを定義する配列を含む変数 (例えば、前のステップで呼び出したカスタム拡張機能からの応答を含む変数) を選択します。

  5. オプション: 「オプション」 フィールドに、ソース配列内の項目をリストされるオプションにマップする式を記述します。 この式は、配列内の各項目を、顧客に表示される意味のある値に変換するテンプレートとして機能します。 この式では、動的変数 ${item} を使用して項目を表します。

    場合によっては、式を指定する必要はありません。

    • 配列内の項目がストリングや整数などの単純な値である場合、各項目の値は自動的にオプションとして表示されます。 ただし、項目をより意味のあるものにするために操作または再フォーマットしたい場合は、マッピングを定義することをお勧めします。 例えば、式 "Part #" + ${item} を使用して、 Part #12345 の形式で部品番号を表示することができます。

    • 配列内の項目が JSON オブジェクトである場合、デフォルト・マッピングは label というプロパティーを検索し、その値 (存在する場合) をオプションとして使用します。 項目に label プロパティーが含まれていない場合、または label プロパティーの値をオプションとして使用しない場合は、マッピングを指定する式を作成する必要があります。 ドット表記を使用すると、JSON パス (例えば、 ${item}.name) を使用してオブジェクト内のプロパティーを参照できます。

  6. オプション: オプションがお客様が希望するものでない場合は、 「フォールバック・オプションの追加」 をクリックして、 None of the above などの静的選択項目を含めます。 その後、この静的オプションを条件とするステップを追加して、さらに支援を提供することができます。 条件を追加するには、 ${step_id}.value == "None of the above" などの式を記述します。

マッピングの例

採用可能なペットのリストを表示するアクションを作成し、詳細情報を表示するためにペットを選択するよう顧客にプロンプトを出すとします。 ソース変数には、カスタム拡張からの配列が以下の形式で含まれます。

[
  {
    "id": "123",
    "name": "Casey",
    "breed": "Shetland sheepdog",
    "age": 3
  },
  {
    "id": "987",
    "name": "Phoebe",
    "breed": "chihuahua",
    "age": 7
  }
]

項目のスキーマには label プロパティーが含まれていないため、デフォルトのマッピングは使用できません。 代わりに、式を使用して、いくつかの異なるプロパティーから取得したデータを含む複合ラベルを作成することができます。 例えば、式 ${item}.name + " (" + ${item}.breed + ", age " + ${item}.age + ")" を使用して、オプション・ラベルを定義することができます。

ラベル

式メソッドを使用して、ソース変数の値をさまざまな方法で操作できることに注意してください。 例えば、顧客が支払い用のクレジット・カードを選択するために使用するアクションがあっても、セキュリティー上の理由から、カード番号全体を表示したくない場合があります。 substring() メソッドを使用する式を作成して、各カード番号の最後の 4 桁のみを含めることができます (例えば、 "Card ending in " + ${item}.card_number.substring(16, 20))。

選択した項目の参照

お客様が動的に生成されたオプションの 1 つを選択した後、選択した項目を後続のステップで参照する必要が生じる可能性があります。

顧客応答を表すアクション変数を参照する場合、デフォルトでは、選択したオプションの値が使用されます。 ただし、場合によっては、オプションを顧客に表示するために使用した値と同じ値を使用したくないことがあります。 代わりに、選択したオプションを明確に識別する固有 ID またはその他のプロパティーを使用する必要がある場合があります。

例えば、顧客がペットを選択して詳細情報を表示する場合、ペットの名前、年齢、および品種が一意でない可能性があるため、データベースを照会するために固有 ID (この例では id プロパティー) を使用する必要があります。 または、顧客が最後の 4 桁のみを表示するオプションからクレジット・カードを選択する場合は、完全なクレジット・カード番号を使用してアカウントの詳細にアクセスするか、トランザクションを実行する必要があります。

この状況では、選択した項目の元のプロパティーにアクセスする式を作成できます。

  1. 顧客が動的オプションから選択するステップの後に来るステップを作成または編集します。

  2. 「変数値」 セクションで、セッション変数に値を割り当てる式を記述します。 (詳しくは、 式を使用したセッション変数への値の割り当て を参照してください。)

  3. 式エディターで、ドル記号 ($) を入力し、顧客が動的オプションを選択したステップを選択します。

  4. 選択した項目を表すにはプロパティー名 item を使用し、そのプロパティーにアクセスするにはドット表記を使用します。 例えば、以下の式は、前のステップで選択した項目の id プロパティーにアクセスします。

    ${step_331}.item.id
    

    複合式を使用すると、選択した項目の複数のプロパティーを使用して値を構成できます。 例えば、 ${step_123}.item.firstname + " " + ${step_123}.item.lastname などの式を使用して、個人のフルネームを構成することができます。 式を使用して、必要なアクションを完了するために必要な任意の形式で値を定義します。