Use the Dynamic Choice user input control in a Virtual Agent topic to dynamically create a list of available choices for your users. Create these choices by querying a table or by using a script to dynamically create them.

Choice list display

The Dynamic Choice list contains up to 10 items per page. When more than 10 items exist, users have the option to display the additional items and also filter the search results. The choice list prompt contains a search icon that users can select to filter the results.

Tip: If you want to change the default number of listed items per page, you can modify the com.glide.cs.picker_page_limit system property. The default value is 10.
The Dynamic Choice control also provides the option to add a header card that displays above the choice list. Header cards are supported in web and mobile channels.
  • The header card can contain a large or small image or a YouTube video card, along with descriptive text. The choice list contains up to five items by default, but the search feature is suppressed. If there are more than five items, users can choose to show the additional items.

  • To control the number of items displayed below a header card, add the com.glide.cs.web_header_picker_page_limit system property. Use the Value to specify the number of items in the choice list. For details about creating a system property, see Add a system property.

Note:

If you populate a Dynamic Choice list node with only one choice, when testing or using the node, you receive a message reading “We have [choice] as [node name], is this correct?”. Use multiple choices in the Dynamic Choice list node to avoid receiving this message.



You can also alter the message content by navigating to ALL > sys_properties.list and editing the glide.cs.retry_question_message system property. This message value is by default a string We have {0} as {1}, is this correct? and is used for slot-filling in multiple cases outside the Dynamic Choice list. Any changes you make are reflected in every use of this property.

Dynamic Choice user input control properties for LLM topic discovery

Property Description
Node name Name that identifies this Dynamic Choice user control node in the topic flow.
Detail description The one piece of information needed from the user. For example, Ask the user to select an incident.
Choices
Populate choices by Type of dynamic variable to be used. Select one of the following options:
  • Record: Returns records from the table selected. The values for these options are GlideRecord objects.
  • Script: Expression that returns an array of options.
Table If you selected Record as the method to populate choices, select the table to be searched.

This field is available only when the Record option is selected.

Filter choices Option to use the Virtual Agent Designer condition builder or provide a script. Select one of the following:
  • Condition Builder: Creates a filter used to select a subset of records from the table.
  • Script: Defines the enumeration list for the options (choice list) to be displayed. The name-value pair is stored as a string object.

This field is available only when the Record option is selected.

Advanced
Enforce user prompt Toggle to open a field for a custom message shown to the user instead of the message generated by the LLM.
Hide this node
Conditionally show this node if

No-code condition statement or low-code script that specifies a condition for presenting this node in the conversation. The condition must evaluate to true.

Example Dynamic Choice user input control for LLM topic discovery

Note: Virtual Agent Designer controls may display and function differently in other channels.
Input properties List prompt

Basic properties include name, description, populate choices by list, and filtering options. Advanced options include Enforce user prompt and Additional instructions to LLM, defined by text input, conditions, or scripts.

Figure 1. Web UI Dynamic Choice list prompt
A Dynamic Choice list returns a list of incidents created by the user.
The choice list displays 10 items per page. When 10 or more results are returned:
  • The list includes a link at the end of the list to show more results.
  • A search icon () displays in the prompt for filtering search results. Users select the icon to open a search box and enter the filter.

Dynamic Choice user input control properties for NLU topic discovery

Property Description
Node name Name that identifies this Dynamic Choice user control node in the topic flow.
Variable name Name of the variable that stores the user response to this prompt. The variable name is automatically created from the Node name property.
Prompt

Prompt or question for the user. The prompt can be either a text string or a script that returns text. This value is used only when the default value is not specified. For example: What's your name?

NLU entity

Option to associate an NLU entity with the node. If an NLU entity is associated with the input variable for this node, Virtual Agent can slot-fill the specified value based on the user's utterance. Select an entity from the list of entities associated with the topic intent.

When you specify an entity for the node, the Do not ask users to confirm recognized entity toggle switch displays. When enabled, users are not prompted to confirm the extracted entity.

This field is available only when NLU discovery is enabled on the instance.

Choices
Populate choices by Type of dynamic variable to be used. Select one of the following options:
  • Record: Returns records from the table selected. The values for these options are GlideRecord objects.
  • Script: Expression that returns an array of options.
Table If you selected Record as the method to populate choices, select the table to be searched.

This field is available only when the Record option is selected.

Filter choices Option to use the Virtual Agent Designer condition builder or provide a script. Select one of the following:
  • Condition Builder: Creates a filter used to select a subset of records from the table.
  • Script: Defines the enumeration list for the options (choice list) to be displayed. The name-value pair is stored as a string object.

This field is available only when the Record option is selected.

No records response message Message displayed to the user when the table search doesn’t return any records. The message can be either a text string or a script that returns text.
Advanced
Hide this node
Conditionally show this node if

No-code condition statement or low-code script that specifies a condition for presenting this node in the conversation. The condition must evaluate to true.

Header card
Insert Toggle switch to insert a header card above the choice list. You can use the Add card dialog box or a script.

Header card section of Dynamic Choice user input control, with Insert toggle and Would you like help radio button enabled.

For detailed information, see Insert a header card in a Static Choice or Dynamic Choice control.

Would you like help
Option to use the Virtual Agent Designer interface or provide a script. Choose one of the following options:
  • Yes: To create the header card without scripting, select Add Card.
  • No, I will use Script: To open the script dialog box, select Add Script.
This field is available only when the Header card option is enabled.
Add card dialog box
This section is available only when Header card is enabled.
Card type
Type of header card. Choose one of the following:
  • Large image with text
  • Small image with text
  • Youtube Video Card
The fields in the dialog box change based on your choice.
Title

Image or video title. Enter the title text or use a data pill or script to specify the title.

Title Link URL of the video title hyperlink. Enter the link text or use a data pill or script to specify the link. If this field is empty, the title displays as plain text.

This field is available only when the YouTube Video Card option is selected.

Description Brief explanation of the image or video.
YouTube Video ID Alphanumeric string at the end of the YouTube URL. For example, in the URL https://www.youtube.com/watch?v=AacDp2mUQ1I, the YouTube video ID is AacDp2mUQ1I.

This field is available only when the YouTube Video Card option is selected.

Image URL Link
URL link for the image or the image file. To set this field, do one of the following:
  • Specify the URL link by either entering the link text, using a data pill, or using a script.
  • Upload an image file by selecting Upload Image.

This field is available only when the Large image with text or the Small image with text option is selected.

Image alt text Alternative, screen-readable text that describes the image for accessibility programs. This text is used along with the image. Enter the text using the text field, data pill, or script.

This field is available only when the Large image with text or the Small image with text option is selected.

Default value
Default Value

Predefined value for the user response to the question or prompt. The response defined in the Default value confirmation field asks the user to confirm the default value. If the user responds with no, the value becomes null. The default value can be either a text string or a script that returns text. For example, if you're using dot-walking, the default value might be: Script Variables > Last username. Or if you're using a script, the default value might be: {{vaScripts.lastUsername}}.

Confirmation messages
Input completion confirmation

Bot response shown to the user when the node interaction is complete. The message can be either a text string or a script that returns text. For example, if you're using dot-walking: Thanks, (Input Variables > Username)! Or if you're using a script, the acknowledgement might be: Thanks, {{vaInputs.username}}!

Default value confirmation

Message that asks the user to verify that the value in the Default value field is correct. This message is used instead of a value in the Prompt field. It can contain either a text string or a script that returns text. For example, if you're using dot-walking: Are you (Input Variables > Username)? Or if you're using a script, the confirmation message might be: Are you {{vaScripts.lastUsername}}?.

Conversation switching
This section is available only when NLU discovery is enabled on the instance.
Turn on to let users change the subject

Option to enable NLU prediction for this node. If enabled, users can enter text to answer questions, regardless of the type of input control being used. Virtual Agent uses this utterance to match another existing intent, letting the user switch topics.

Hide or skip this node
Conditionally show this node if

No-code condition statement or low-code script that specifies a condition for presenting this node in the conversation. The condition must evaluate to true.

Allow user to skip this node if

No-code condition statement or low-code script that specifies a condition for letting users skip this node in the conversation.

Example Dynamic Choice user input control for NLU topic discovery

Note: Virtual Agent Designer controls may display and function differently in other channels.
Input properties List prompt
Figure 2. Dynamic Choice user input control basic properties
Basic properties include the node name, prompt, NLU entity, and Populate choices by list.
Figure 3. Web UI Dynamic Choice list prompt
A Dynamic Choice list returns a list of incidents created by the user.
The choice list displays 10 items per page. When 10 or more results are returned:
  • The list includes a link at the end of the list to show more results.
  • A search icon () displays in the prompt for filtering search results. Users select the icon to open a search box and enter the filter.
Figure 4. Web UI Dynamic Choice list prompt with header card
The prompt asks, "What would you like to check?" followed by a photo and heading of a hotel. Choices include, Dining, Suites, and Facilities.
The choice list contains five items per page. When five or more results are returned, the list provides an option to show more results.
Note: The search feature is suppressed when a header card is used.

Example Dynamic Choice list value expression

(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)

The script in the Choice Value Expression property defines and returns an array of choices. In the example, the script creates an array called options, and adds each record found in a GlideRecord query to this array. Each element in the array is given a value in the value and label keys using data from that GlideRecord. The Table property of the control defines the table used by the script. This example script uses gr.setLimit(5) to limit the number of records returned to 5. Using this method helps prevent returned records from creating an overly large choice list.

Table 1. Dynamic choice control value expression keys
Key Description
value The value for the choice. When a user selects a choice from the control, this value is stored in the variable named in the Variable name property.
label The label that appears for this choice in the choice list.

Channel support