ダイナミック選択肢ユーザー入力コントロール
仮想エージェント トピックでダイナミック選択肢ユーザー入力コントロールを使用して、ユーザーに使用可能な選択肢のリストを動的に作成します。これらの選択肢は、表を照会するか、動的に作成されるようスクリプトを使用して作成します。
選択リストの表示
ダイナミック選択肢リストには、ページあたり最大 10 個のアイテムが含まれます。10 個を超えるアイテムが存在する場合は、追加のアイテムを表示し、検索結果をフィルタリングすることもできます。 選択リストのプロンプトには、ユーザーが結果をフィルタするために選択できる検索アイコンが含まれています。
複数の選択肢の選択がオンになっている場合は、[オプションを検索 (Search for options)] フィールド内で検索して、検索結果をフィルタリングできます。該当するすべての選択肢を選択または入力し、[送信] アイコン を選択します。LLM (大規模言語モデル) 対応の 仮想エージェントを介して選択肢を送信すると、LLM は選択肢が検証基準を満たしているかどうかを応答します。
チャットウィンドウに発言を入力して、LLM 対応会話のリストから選択肢を選択することもできます。入力に一致するものがない場合、 仮想エージェント はそれが有効な選択肢ではないことを通知し、別の入力を試すように求めます。
-
ヘッダーカードには、大小の画像または YouTube ビデオカードを、説明テキストとともに含めることができます。選択リストにはデフォルトで最大 5 個のアイテムが含まれますが、検索機能は非表示になります。アイテムが 5 個より多くある場合、ユーザーは追加のアイテムを表示することを選択できます。
-
ヘッダーカードの下に表示されるアイテムの数を制御するには、com.glide.cs.web_header_picker_page_limit システムプロパティを追加します。[値] を使用して、選択リストのアイテムの数を指定します。システムプロパティの作成の詳細については、「システムプロパティを追加する」を参照してください。
動的選択肢リストノードに選択肢を 1 つだけ入力すると、ノードをテストまたは使用するときに、「[ ノード名] として [選択肢] があります。これは正しいですか?」というメッセージが表示されます。このメッセージを受け取らないようにするには、ダイナミック選択肢リストノードで複数の選択肢を使用します。
次の場所に移動して、メッセージの内容を変更することもできます。 glide.cs.retry_question_messageシステムプロパティの編集ですこのメッセージ値は、デフォルトでは文字列です {1}として{0}がありますが、これは正しいですか? 動的選択肢リスト外の複数のケースでスロット入力に使用されます。加えた変更は、このプロパティのすべての使用に反映されます。
LLM トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールのプロパティ
| プロパティ | 説明 |
|---|---|
| ノード名 | トピックフローでこのダイナミック選択肢ユーザーコントロールノードを識別する名前。 |
| 選択肢 | |
| 選択肢の入力方法 | 使用するダイナミック変数のタイプ。次のオプションのいずれかを選択します。
|
| テーブル | [レコード] を選択肢の入力方法として選択した場合、検索するテーブルを選択します。 この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。 |
| フィルターの選択肢 | 仮想エージェントデザイナー 条件ビルダーを使用するか、スクリプトを提供するオプション。次のいずれかを選択します。
この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。 |
| ユーザーが複数の選択を行うことができるようにします | ユーザーが選択リストから複数の選択肢を選択できるようにするオプション。 |
| [Advanced (詳細)] | |
| ヘッダーカード |
切り替えて、画像または YouTube 動画を含む可能性があるカードを追加するためのフィールドを開きます。詳細については、「静的選択肢またはダイナミック選択肢コントロールにヘッダーカードを挿入する」を参照してください。 |
| ユーザーにプロンプトを強制 |
切り替えて、大規模言語モデル (LLM) が生成するメッセージの代わりに、ユーザーに表示するカスタムメッセージのフィールドを開きます。分かりやすい言葉でカスタムメッセージを作成したり、スクリプトを入力したり、データピルピッカーを使用して条件を定義したりすることができます。 |
| 妥当性検証 |
ユーザー入力を検証するスクリプトを追加します。たとえば、ユーザーが有効なメールアドレスを入力したかどうかを確認します。 |
| LLM に対する追加指示 | データ形式、制限、またはユーザー応答のデフォルト値の追加など、LLM への詳細な指示。分かりやすい言葉で追加の指示を作成したり、スクリプトを入力したり、データピルピッカーを使用して条件を定義したりすることができます。 |
| このノードを非表示またはスキップ | |
| 次の場合、このノードを条件付きで表示します | 会話でこのノードを表示するための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。条件は true と評価される必要があります。 |
| 次の場合、ユーザーにこのノードのスキップを許可 |
会話でユーザーにこのノードをスキップさせるための条件を指定するノーコード条件ステートメントまたはローコードスクリプト。条件は true と評価される必要があります。このフィールドは、条件ビルダーまたはスクリプトのいずれかを使用して設定できます。 |
LLM トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールの例
| 入力プロパティ | リストプロンプト |
|---|---|
選択リストには、ページあたり 10 個のアイテムが表示されます。10 件以上の結果が返された場合:
|
NLU トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールのプロパティ
| プロパティ | 説明 |
|---|---|
| ノード名 | トピックフローでこのダイナミック選択肢ユーザーコントロールノードを識別する名前。 |
| 変数名 | このプロンプトに対するユーザー応答を格納する変数の名前です。変数名は、ノード名プロパティから自動的に作成されます。 |
| プロンプト | ユーザーへのプロンプトまたは質問。プロンプトは、テキスト文字列またはテキストを返すスクリプトのいずれかです。この値は、デフォルト値が指定されていない場合にのみ使用されます。例:[名前は何ですか (What's your name?)] リッチテキストを作成して、プロンプトのスタイルを変更できます。
|
| NLU エンティティ | NLU エンティティをノードに関連付けるオプション。NLU エンティティがこのノードの入力変数に関連付けられている場合、仮想エージェント はユーザーの発言に基づいて指定された値をスロットに入力できます。トピックインテントに関連付けられているエンティティのリストからエンティティを選択します。 ノードのエンティティを指定すると、[認識されたエンティティの確認をユーザーに要求しない] トグルスイッチが表示されます。有効にすると、ユーザーは抽出されたエンティティの確認を求められません。 このフィールドは、インスタンスで NLU ディスカバリーが有効になっている場合にのみ使用できます。 |
| 選択肢 | |
| 選択肢の入力方法 | 使用するダイナミック変数のタイプ。次のオプションのいずれかを選択します。
|
| テーブル | [レコード] を選択肢の入力方法として選択した場合、検索するテーブルを選択します。 この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。 |
| フィルターの選択肢 | 仮想エージェントデザイナー 条件ビルダーを使用するか、スクリプトを提供するオプション。次のいずれかを選択します。
この [レコード] オプションを選択した場合にのみ、このフィールドを使用できます。 |
| ユーザーが複数の選択を行うことができるようにします | ユーザーが選択リストから複数の選択肢を選択できるようにするオプション。 |
| レコード応答メッセージなし | テーブル検索でレコードが返されなかった場合に表示されるメッセージ。メッセージは、文字列か、文字列を返すスクリプトのいずれかです。 |
| 詳細 | |
| ヘッダーカード |
切り替えて、画像または 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 トピックディスカバリー用のダイナミック選択肢ユーザー入力コントロールの例
| 入力プロパティ | リストプロンプト |
|---|---|
選択リストには、ページあたり 10 個のアイテムが表示されます。10 件以上の結果が返された場合:
|
|
選択リストには、ページあたり 5 個のアイテムが含まれます。5 個以上の結果が返された場合、リストにはさらに多くの結果を表示するオプションが表示されます。 注: ヘッダーカードを使用すると、検索機能は非表示になります。 |
動的選択スクリプトの例
(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 に制限しています。このメソッドを使用すると、返されるレコードで過度に大きな選択リストが作成されないようにできます。
| キー | 説明 |
|---|---|
| value | 選択の値です。ユーザーがコントロールから選択すると、この値は変数名プロパティで名前付けされた変数内に格納されます。 |
| label | この選択のために選択リストに表示されるラベルです。 |
チャネルサポート
| チャネル | サポート | 制約 |
|---|---|---|
| Web UI | サポート対象 | なし |
| モバイル UI | サポート対象 | なし |
| Now Assist パネル | サポート対象 | なし |
| Microsoft Teams | サポート対象 | なし |
| Slack | サポート対象 | ヘッダーカードはサポートされていません。 |
| Workplace | サポート対象 | ヘッダーカードはサポートされていません。 |
| Facebook Messenger | サポート対象外 | 適用外 |
| SMS Twilio | サポート対象 | ヘッダーカードはサポートされていません。 |
| LINE | サポート対象外 | 適用外 |
| サポート対象 | なし | |
| Apple Messages for Business | サポート対象 | なし |
| Alexa (音声アシスト機能) | サポート対象 | 画面デバイスの場合は、タッチスクロールを使用します。リンクのクリックはサポートされていません。画面以外のデバイスの場合は、音声ページネーションを使用します。 |