ダイナミック選択肢ユーザー入力コントロール

  • リリースバージョン: Xanadu
  • 更新日 2024年08月12日
  • 所要時間:20分
  • 仮想エージェント トピックでダイナミック選択肢ユーザー入力コントロールを使用して、ユーザーに使用可能な選択肢のリストを動的に作成します。これらの選択肢は、表を照会するか、動的に作成されるようスクリプトを使用して作成します。

    選択リストの表示

    ダイナミック選択肢リストには、ページあたり最大 10 個のアイテムが含まれます。10 個を超えるアイテムが存在する場合は、追加のアイテムを表示し、検索結果をフィルタリングすることもできます。 選択リストのプロンプトには、ユーザーが結果をフィルタするために選択できる検索アイコンが含まれています。

    ヒント:
    1 ページに表示されるデフォルトのアイテム数を変更するには、com.glide.cs.picker_page_limit システムプロパティを変更します。デフォルト値は 10 です。

    複数の選択肢の選択がオンになっている場合は、[オプションを検索 (Search for options)] フィールド内で検索して、検索結果をフィルタリングできます。該当するすべての選択肢を選択または入力し、[送信] アイコン [送信] 矢印アイコン を選択します。LLM (大規模言語モデル) 対応の 仮想エージェントを介して選択肢を送信すると、LLM は選択肢が検証基準を満たしているかどうかを応答します。

    チャットウィンドウに発言を入力して、LLM 対応会話のリストから選択肢を選択することもできます。入力に一致するものがない場合、 仮想エージェント はそれが有効な選択肢ではないことを通知し、別の入力を試すように求めます。

    ダイナミック選択肢コントロールには、選択リストの上に表示されるヘッダーカードを追加するオプションもあります。ヘッダーカードは、Web およびモバイルチャネルでサポートされています。
    • ヘッダーカードには、大小の画像または YouTube ビデオカードを、説明テキストとともに含めることができます。選択リストにはデフォルトで最大 5 個のアイテムが含まれますが、検索機能は非表示になります。アイテムが 5 個より多くある場合、ユーザーは追加のアイテムを表示することを選択できます。

    • ヘッダーカードの下に表示されるアイテムの数を制御するには、com.glide.cs.web_header_picker_page_limit システムプロパティを追加します。[値] を使用して、選択リストのアイテムの数を指定します。システムプロパティの作成の詳細については、「システムプロパティを追加する」を参照してください。

    注:

    動的選択肢リストノードに選択肢を 1 つだけ入力すると、ノードをテストまたは使用するときに、「[ ノード名] として [選択肢] があります。これは正しいですか?」というメッセージが表示されます。このメッセージを受け取らないようにするには、ダイナミック選択肢リストノードで複数の選択肢を使用します。



    次の場所に移動して、メッセージの内容を変更することもできます。 すべて > sys_properties.list glide.cs.retry_question_messageシステムプロパティの編集ですこのメッセージ値は、デフォルトでは文字列です {1}として{0}がありますが、これは正しいですか? 動的選択肢リスト外の複数のケースでスロット入力に使用されます。加えた変更は、このプロパティのすべての使用に反映されます。

    LLM トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールのプロパティ

    プロパティ 説明
    ノード名 トピックフローでこのダイナミック選択肢ユーザーコントロールノードを識別する名前。
    選択肢
    選択肢の入力方法 使用するダイナミック変数のタイプ。次のオプションのいずれかを選択します。
    • レコード:選択したテーブルのレコードを返します。これらのオプションの値は、GlideRecord オブジェクトです。
    • スクリプト:オプションのアレイを返す式です。
      注:

      スクリプト式を使用する際に、大量データセットのページ分割をすることでより効率的に結果を返すには、次のスクリプトを確認し、このスクリプトを使用するかどうかを決定します。

      (function execute() {
       
      var pagingUtil = new global.VirtualAgentChoicePagingUtil(null, "sys_user", null, "user_name,name",
      "active=true", null, vaVars);
       
      var gr = pagingUtil.getPagingGlideRecordSecure("name", false);
      
      var options = pagingUtil.getSecureOptions(gr, null,'user_name', ['user_name','name']);
      
      return options;
      })()
      

      前述のスクリプティングの詳細については、GlideRecord に関する情報と次の追加情報を確認してください。

      • fieldName:フィールド名はオプションの情報です。null で渡します。
      • table:利用可能なオプションを表示するためにクエリするテーブル名。
      • pageSize:ページサイズはオプションの情報です。null で渡します。
      • searchColumns:任意の searchText に適用されるカンマ区切りリストのテーブル列。
      • encodedQuery:テーブルの行に適用する最初のクエリ。たとえば、active=true です。
      • searchText:検索テキストはオプションの情報です。null で渡します。
      • vaVars:仮想エージェントコンテキスト変数 (vaVars) への参照。
      • orderByColumn:オプションの順序付けに使用されるテーブル列。
      • orderDescending:オプションが降順で表示されます。true または false の値のみが受け入れられます。
      • gr:Glide レコード名。
      • startRow:開始行はオプションの情報です。null で渡します。
      • valueColumn:各オプションの値として使用するテーブル列名。
      • labelColumns:各オプション表示に使用するテーブル列のアレイ。
    テーブル [レコード] を選択肢の入力方法として選択した場合、検索するテーブルを選択します。

    この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。

    フィルターの選択肢 仮想エージェントデザイナー 条件ビルダーを使用するか、スクリプトを提供するオプション。次のいずれかを選択します。
    • 条件ビルダー:テーブルからレコードのサブセットを選択するために使用するフィルターを作成します。
    • スクリプト:表示するオプションの列挙リスト (選択リスト) を定義します。名前-値のペアは文字列オブジェクトとして格納されます。

    この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。

    ユーザーが複数の選択を行うことができるようにします ユーザーが選択リストから複数の選択肢を選択できるようにするオプション。
    [Advanced (詳細)]
    ヘッダーカード

    切り替えて、画像または YouTube 動画を含む可能性があるカードを追加するためのフィールドを開きます。詳細については、「静的選択肢またはダイナミック選択肢コントロールにヘッダーカードを挿入する」を参照してください。

    ユーザーにプロンプトを強制

    切り替えて、大規模言語モデル (LLM) が生成するメッセージの代わりに、ユーザーに表示するカスタムメッセージのフィールドを開きます。分かりやすい言葉でカスタムメッセージを作成したり、スクリプトを入力したり、データピルピッカーを使用して条件を定義したりすることができます。

    妥当性検証

    ユーザー入力を検証するスクリプトを追加します。たとえば、ユーザーが有効なメールアドレスを入力したかどうかを確認します。

    LLM に対する追加指示

    データ形式、制限、またはユーザー応答のデフォルト値の追加など、LLM への詳細な指示。分かりやすい言葉で追加の指示を作成したり、スクリプトを入力したり、データピルピッカーを使用して条件を定義したりすることができます。

    このノードを非表示またはスキップ
    次の場合、このノードを条件付きで表示します

    会話でこのノードを表示するための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。条件は true と評価される必要があります。

    次の場合、ユーザーにこのノードのスキップを許可

    会話でユーザーにこのノードをスキップさせるための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。条件は true と評価される必要があります。このフィールドは、条件ビルダーまたはスクリプトのいずれかを使用して設定できます。

    LLM トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールの例

    注:
    仮想エージェントデザイナーコントロールは、他のチャネルでは表示や機能が異なる場合があります。
    入力プロパティ リストプロンプト

    基本プロパティには、名前、説明、リスト別の選択肢の入力、フィルタリングオプションが含まれます。詳細オプションには、[ヘッダーカード (Header card)]、[ユーザープロンプトを強制 (Enforce user prompt)]、[LLM への追加の指示 (Additional instructions to LLM)]、および [このノードを非表示またはスキップ (Hide or skip this node)] が含まれます。

    図 : 1. Web UI のダイナミック選択肢リストプロンプト
    ダイナミック選択肢リストは、ユーザーが作成したインシデントのリストを返します。
    選択リストには、ページあたり 10 個のアイテムが表示されます。10 件以上の結果が返された場合:
    • リストの最後に、さらに多くの結果を表示するためのリンクがあります。
    • 検索結果をフィルタリングするための検索アイコン () がプロンプトに表示されます。ユーザーはこのアイコンを選択して検索ボックスを開き、フィルターを入力します。
    • 複数の選択肢を選択する場合は、[オプションを検索 (Search for options)] フィールド内で検索して、検索結果をフィルタリングできます。該当するすべての選択肢を選択または入力し、[送信] アイコン [送信] 矢印アイコン を選択します。選択肢を送信すると、LLM は選択肢が検証基準を満たしているかどうかを応答します。

    NLU トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールのプロパティ

    プロパティ 説明
    ノード名 トピックフローでこのダイナミック選択肢ユーザーコントロールノードを識別する名前。
    変数名 このプロンプトに対するユーザー応答を格納する変数の名前です。変数名は、ノード名プロパティから自動的に作成されます。
    プロンプト

    ユーザーへのプロンプトまたは質問。プロンプトは、テキスト文字列またはテキストを返すスクリプトのいずれかです。この値は、デフォルト値が指定されていない場合にのみ使用されます。例:[名前は何ですか (What's your name?)]

    リッチテキストを作成して、プロンプトのスタイルを変更できます。
    • 斜体のテキストには、単一のアスタリスクまたはアンダースコアを使用します。たとえば、*text*_text_ などです。
    • 太字のテキストには二重のアスタリスクまたはアンダースコアを使用します。たとえば、**text**__text__ などです。
    • 斜体と太字のテキストには、3 つのアスタリスクまたはアンダースコアを使用します。たとえば、***text***___text___ などです。
    • 行に箇条書きを追加するには、間隔を空けたハイフンを使用します。たとえば、- text などです。
    • ブロック引用符を作成するには、間隔を空けた右山括弧を使用します。たとえば、 > text などです。
    • ヘッダーを作成するには 1 ~ 6 個のハッシュマークを使用します。たとえば、#text#######text###### などです。
    • ハイパーリンクを作成するには、角括弧と丸括弧を使用します。たとえば、[Link text](url) などです。画像を表示するには、ハイパーリンクに感嘆符を追加します。たとえば、![alt text](image url) などです。
    NLU エンティティ

    NLU エンティティをノードに関連付けるオプション。NLU エンティティがこのノードの入力変数に関連付けられている場合、仮想エージェント はユーザーの発言に基づいて指定された値をスロットに入力できます。トピックインテントに関連付けられているエンティティのリストからエンティティを選択します。

    ノードのエンティティを指定すると、[認識されたエンティティの確認をユーザーに要求しない] トグルスイッチが表示されます。有効にすると、ユーザーは抽出されたエンティティの確認を求められません。

    このフィールドは、インスタンスで NLU ディスカバリーが有効になっている場合にのみ使用できます。

    選択肢
    選択肢の入力方法 使用するダイナミック変数のタイプ。次のオプションのいずれかを選択します。
    • レコード:選択したテーブルのレコードを返します。これらのオプションの値は、GlideRecord オブジェクトです。
    • スクリプト:オプションのアレイを返す式です。
    テーブル [レコード] を選択肢の入力方法として選択した場合、検索するテーブルを選択します。

    この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。

    フィルターの選択肢 仮想エージェントデザイナー 条件ビルダーを使用するか、スクリプトを提供するオプション。次のいずれかを選択します。
    • 条件ビルダー:テーブルからレコードのサブセットを選択するために使用するフィルターを作成します。
    • スクリプト:表示するオプションの列挙リスト (選択リスト) を定義します。名前-値のペアは文字列オブジェクトとして格納されます。

    この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。

    ユーザーが複数の選択を行うことができるようにします ユーザーが選択リストから複数の選択肢を選択できるようにするオプション。
    レコード応答メッセージなし テーブル検索でレコードが返されなかった場合に表示されるメッセージ。メッセージは、文字列か、文字列を返すスクリプトのいずれかです。
    詳細
    ヘッダーカード

    切り替えて、画像または YouTube 動画を含む可能性があるカードを追加するためのフィールドを開きます。詳細については、「静的選択肢またはダイナミック選択肢コントロールにヘッダーカードを挿入する」を参照してください。

    デフォルト値
    デフォルト値

    質問またはプロンプトに対するユーザー応答の事前定義済みの値です。[デフォルト値の確認] フィールドで定義された応答では、ユーザーにデフォルト値の確認を求めます。ユーザーが「 no」で応答した場合、値は null になります。デフォルト値は、テキスト文字列またはテキストを返すスクリプトのいずれかです。たとえば、ドット連結を使用している場合、デフォルト値は Script Variables > Last username になります。または、スクリプトを使用している場合、デフォルト値は {{vaScripts.lastUsername}} になります。

    確認メッセージ
    入力完了確認

    ノードのインタラクションが完了したときにユーザーに表示されるボット応答。メッセージは、テキスト文字列またはテキストを返すスクリプトのいずれかです。たとえば、ドット連結を使用している場合は、次のようになります。Thanks, (Input Variables > Username)! または、スクリプトを使用している場合、確認応答は次のようになります。Thanks, {{vaInputs.username}}!

    デフォルト値の確認

    [デフォルト値 (Default value)]フィールドの値が正しいことを検証するようにユーザーに求めるメッセージ。このメッセージは、 [プロンプト (Prompt)] フィールドの値の代わりに使用されます。テキスト文字列またはテキストを返すスクリプトのいずれかが含まれる可能性があります。たとえば、ドット連結を使用している場合は、次のようになります。Are you (Input Variables > Username)? またはスクリプトを使用している場合、確認メッセージは次のようになり ます。Are you {{vaScripts.lastUsername}}?

    会話の切り替え
    このセクションは、インスタンスで NLU ディスカバリーが有効な場合にのみ使用できます。
    ユーザーが件名を変更できるようにするにはオンにします

    このノードの NLU 予測を有効にするオプション。有効にすると、使用している入力コントロールのタイプに関係なく、ユーザーはテキストを入力して質問に回答できます。仮想エージェント はこの発言を使用して別の既存のインテントを照合し、ユーザーがトピックを切り替えられるようにします。

    このノードを非表示またはスキップ
    次の場合、このノードを条件付きで表示します

    会話でこのノードを表示するための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。条件は true と評価される必要があります。

    次の場合、ユーザーにこのノードのスキップを許可

    会話でユーザーにこのノードをスキップさせるための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。条件は true と評価される必要があります。このフィールドは、条件ビルダーまたはスクリプトのいずれかを使用して設定できます。

    次の場合、再プロンプトをスキップ 会話でユーザーが再プロンプトをスキップできるようにするための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。トピックループバックまたはダイアログアクションで先行するノードに再度アクセスすると、仮想エージェントはこのノードをバイパスし、元の値を自動的に保持します。

    NLU トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールの例

    注:
    仮想エージェントデザイナーコントロールは、他のチャネルでは表示や機能が異なる場合があります。
    入力プロパティ リストプロンプト
    図 : 2. ダイナミック選択肢ユーザー入力コントロールの基本プロパティ
    基本プロパティには、ノード名、プロンプト、NLU エンティティ、選択肢の入力方法リストが含まれます。
    図 : 3. Web UI のダイナミック選択肢リストプロンプト
    ダイナミック選択肢リストは、ユーザーが作成したインシデントのリストを返します。
    選択リストには、ページあたり 10 個のアイテムが表示されます。10 件以上の結果が返された場合:
    • リストの最後に、さらに多くの結果を表示するためのリンクがあります。
    • 検索結果をフィルタリングするための検索アイコン () がプロンプトに表示されます。ユーザーはこのアイコンを選択して検索ボックスを開き、フィルターを入力します。
    • 複数の選択肢を選択する場合は、[オプションを検索 (Search for options)] フィールド内で検索して、検索結果をフィルタリングできます。このトピックにあるセカンダリフィールドを有効にするスクリプトを入力すると、検索フィルターの結果がセカンダリフィールドにも適用されます。該当するすべての選択肢を選択または入力し、[送信] アイコン [ 送信] 矢印アイコンを選択します。
    図 : 4. ヘッダーカードを含む Web UI ダイナミック選択肢リストのプロンプト
    プロンプトに「何をチェックしますか?」と尋ねられ、その後にホテルの写真と見出しが表示されます。選択肢には、ダイニング、スイート、ファシリティが含まれます。
    選択リストには、ページあたり 5 個のアイテムが含まれます。5 個以上の結果が返された場合、リストにはさらに多くの結果を表示するオプションが表示されます。
    注:
    ヘッダーカードを使用すると、検索機能は非表示になります。

    動的選択スクリプトの例

    次のスクリプト例は、[選択肢の入力方法 (Populate choice by)] の値が [スクリプト] に設定されている場合にのみ、[選択肢を定義] フィールドで使用できます。このスクリプトを使用すると、要求者が会話の後半で選択を編集する場合に、以前に選択した選択肢を表示できます。また、このスクリプトは、メールアドレス、性別マーカー、あるいはその両方などのセカンダリフィールドを要求者に対して表示し、利用可能な選択肢をさらに区別するのに役立ちます。要求者にセカンダリフィールドを表示すると、同一または類似の名前 (Christopher Smith または Chris Smith) を使用するときに正しい従業員名を選択するなど、類似した値を処理する場合に特に役立ちます。
    (function execute() {
        var pagingUtil = new global.VirtualAgentChoicePagingUtil(null, "sys_user", 10, "user_name,name",
          "active=true", null, vaVars);
        var selectedOptions = pagingUtil.getSavedSelectedOptions("user", vaSystem);
        if (!selectedOptions || selectedOptions.length == 0) {
          // Secondary labels can be passed to selected options
           selectedOptions.push({ "value": "abel.tuter", "label": "Abel Tuter"
            ,"secondary_label": ["abel.tuter@example.com", "male"]
            });
           selectedOptions.push({ "value": "Beth.anglin", "label": "Beth Anglin"
            ,"secondary_label": ["beth.anglin@example.com", "female"] 
            });
        }
        vaSystem.setSelectedOptions(selectedOptions, "user", false);
        // Topic authors have the ability to define which values should go in the 
        // secondary labels by adding secondary label functions
        pagingUtil.addSecondaryLabelFunction(function (gr) {
          return gr.getValue("email");
        });
        pagingUtil.addSecondaryLabelFunction(function (gr) {
          return gr.getValue("gender");
        });
        var gr = pagingUtil.getPagingGlideRecordSecure("name", false);
        var options = pagingUtil.getSecureOptions(gr, null,'user_name', ['user_name']);
        return options;
    })()

    ダイナミック選択肢リスト値の式の例

    (function execute(table) {
            var options = [];
            var gr = new GlideRecordSecure(table);
            gr.addEncodedQuery('active=true');
            gr.setLimit(5);
            gr.query();
            while(gr.next()) {
                options.push({ 'value': gr.getUniqueValue(), 'label': gr.getValue('short_description') });
            }
            return options;
    })(table)
    

    [選択値の式] プロパティのスクリプトは、選択肢のアレイを定義して返します。この例では、スクリプトは、 オプションと呼ばれる配列を作成し、GlideRecord クエリで見つかった各レコードをこの配列に追加します。配列の各要素には、その GlideRecord からのデータを使用しておよびラベルキーに値が与えられます。コントロールの [テーブル] プロパティは、スクリプトによって使用されるテーブルを定義します。このスクリプト例では、gr. setLimit (5) を使用して、返されるレコードの数を 5 に制限しています。このメソッドを使用すると、返されるレコードで過度に大きな選択リストが作成されないようにできます。

    表 : 1. ダイナミック選択肢コントロール値の式のキー
    キー 説明
    value 選択の値です。ユーザーがコントロールから選択すると、この値は変数名プロパティで名前付けされた変数内に格納されます。
    label この選択のために選択リストに表示されるラベルです。

    チャネルサポート

    表 : 2. ダイナミック選択肢ユーザー入力コントロールのチャネルサポート
    チャネル サポート 制約
    Web UI サポート対象 なし
    モバイル UI サポート対象 なし
    Now Assist パネル サポート対象 なし
    Microsoft Teams サポート対象 なし
    Slack サポート対象 ヘッダーカードはサポートされていません。
    Workplace サポート対象 ヘッダーカードはサポートされていません。
    Facebook Messenger サポート対象外 適用外
    SMS Twilio サポート対象 ヘッダーカードはサポートされていません。
    LINE サポート対象外 適用外
    WhatsApp サポート対象 なし
    Apple Messages for Business サポート対象 なし
    Alexa (音声アシスト機能) サポート対象 画面デバイスの場合は、タッチスクロールを使用します。リンクのクリックはサポートされていません。画面以外のデバイスの場合は、音声ページネーションを使用します。