Get acquainted with nodes and building conversation workflows in NLX's Dialog Studio
Last updated
Add nodes
All conversation workflows consist of nodes that define bot logic, messaging, API calls, and user turns that must be followed in a particular sequence. There are a variety of node types, each with their own function (e.g., routing a user, providing a bot message, listening for user intent, etc.).
Easily pick a node to drop on to your canvas using the toolbar or shortcut menu.
Choose Add option in toolbar or right-click to use New node in shortcut menu
Select node type to apply to the canvas
To delete a node, select it and press delete or right-click and choose Delete from the shortcut menu.
Connect or stack nodes
The first node added to your canvas will always be connected to the Start node.
Nodes are linked or stacked together via their edges. Every node has one or more edge for each possible path the flow takes.
You may easily disconnect nodes by clicking the line linking them or dragging a node away from a stack and clicking the linked line.
Click and drag from a node's edge
Drag line to recipient node
Connected line turns blue and shows directional flow. Dashed lines simply indicate recipient node is arranged behind or in line with the origin node. Moving a recipient node in front turns lines solid
To free up space, stack nodes in sequential order and eliminate connector lines:
Click and drag a node on top or bottom of another
Connector dots indicate direction of flow on stacks
Node setup
Clicking any node on your canvas reveals a side panel to display information about the selected node and provide options for adding or refining its actions. Clicking outside of the node automatically closes its side panel.
Every node has a non-editable IDso the node can be referenced across Dialog Studio. To show or hide the Node ID, click the infoicon in the upper right of the node's side panel.
Add messaging
A bot relays messages to users when a node they've reached has Bot messages entered. Below are options to help enhance your use of this feature.
Not all nodes require messages and may not have a Bot messages section to configure. You may you use a Basic node before or after in these instances.
Select a node > Add messages to a node by clicking +Add message on a node's side panel
Repeat the above as often as needed on a single node*
To delete a message, choose the three-dot menu beside the message and select Delete
*Adding more than one message to a node breaks up large messages into a series of smaller ones, making it easier for users to consume.
Adding variations is favorable when users regularly interact with the same bot or may traverse a node(s) in a flow more than once during the same session, such as with repeat processes or retries. Your bot chooses from the variations randomly so users experience different phrasings.
Select a node > After adding a message using a node's side panel, click +Add variation
Repeat the above as often as needed
To delete a message, choose the three-dot menu beside the message and select Delete
Message variations do not get translated. If developing for multilingual AI assistants, avoid using variations.
Easily reference content in your messaging that may be changing or infinite in range:
Select a node > Select +Add message on a node's side panel
Enter a curly brace { while typing in a message field
The editor shows dynamic values from your workspace that can be referenced, including:
If you do not see a Slot that exists in your workspace, remember to attach it to your intent for use in the flow
When drafting messages for voice channels, you can use SSML tags (Speech Synthesis Markup Language) supported by your NLP. Inserting SSML into your messages can control volume, pitch, pauses, emphases, breathing, and more.
For Google's Dialogflow, check their supported SSML guide here.
Add Basic nodes with messaging before API nodes (i.e., Actions, Data requests) to indicate a process is about to happen, particularly if it may take a moment
Be mindful of the placement of messaging in case a series of nodes (or stack) might be cycled through twice. You may want to add a Loop node after a particular Basic node so the messaging on the Basic isn't repeated unnecessarily
Plan for failure when collecting information from a user or asking them to make a choice by adding failure messages with Basic nodes. Add a few variations in case the node is traversed a few times to vary the experience
Add functionality
Several advanced actions can be applied to nodes on the canvas. Simply expand the Add functionality section of a node's side panel and select from the following:
Assign tags to nodes for tracking and later evaluating their performance in your flow using canvas analytics. You may choose from system tagsas well as any custom tags set up in your workspace settings. While reviewing the canvas analytics, you can view the number of unique visits to the node from conversations with users.
Select a node > Click Add functionality menu on a node's side panel > Choose Analytics tags
Search or select a tag from the dropdown to assign the node*
Repeat as often as needed
To delete a tag, click the delete icon beside it
*Don't see a tag that you need? Add it from the Analytics tags tab in your workspace Settings
Any number of tags may be added to the same node, but it is recommended that you use only one tag per node to avoid double counting.
Modalities allow you to reuse a pre-defined payload structure across flows of your workspace once enabled on a node of your choice. They can handle rich UI components or other information to relay to a user.
Select a node > Click Add functionality menu on a node's side panel > Choose Modalities
Ensure the correct modality's tab (if more than one appears) is selected
Toggle on Enable
Enter payload details or assign dynamic sources into applicable fields > click Save
Node payload holds payload commands executed in conversation. Use cases include specifying what call queue should be used during escalation to an agent, whether to include a transcript during escalation, or sending a control message to NLP to allow users to interrupt a bot, for example.
Select a node > Click Add functionality menu on a node's side panel > Choose Node payload
Below is a list of payloads that can be used.
Specify each item as a key-value pair in the following format: key=value. To specify multiple items, use an ampersand (&) as a separator.
Key
Value
Usage
Notes
nlx_transferPhoneNumber
E.164 phone number
Amazon Connect
The phone number used to transfer to in the event of an escalation.
escalation_PSTN
E.164 phone number
Amazon Chime SDK
The phone number used to transfer to in the event of an escalation.
escalation_VC
Amazon Chime SDK Voice Connector URL
Amazon Chime SDK
The voice connector used to transfer a call.
x-amz-lex:*
Varies. Include =True at the end of your lex syntax to enable; for example, x-amz-lex:allow-interrupt:*:*=True
Amazon Lex with a voice channel
Configure timeouts for user input, user interruption (barge-in), and other behaviors. Check out the official Amazon docs for more details.
nlx:hints
A comma separated list of strings
Amazon Lex with a voice channel
Improve disambiguation over voice when there is an anticipated list of options.
Enabling Send context allows the conversation context variables to be included as a part of the response payload. If you are sending context to an API, it will be added to the payload response.
State modifications allow you to apply advanced state changes to dynamic information from Slots, Context attributes, System variables, or Data requests that are referenced in a flow:
Clear: Erases any specified value(s) captured if needing to re-capture the same values later (preventing auto-traversal), or if looping users back through a step(s) during retries or revisits in the same conversation session, including null, No match, or repeat instances
Set: Allows you to establish and set a specified value(s) from that point forward in the conversation session (until a further state modification is applied)
Increment: Automatically increases a specified numerical value(s) when the node containing the increment is visited. Useful with Split node logic and/or counting loops during retries; use in conjunction with the Set state mod if needing to establish the base value prior
Decrement: Automatically decreases a specified numerical value(s) when the node containing the decrement is visited. Useful with Split node logic and/or counting loops during retries; use in conjunction with the Set state mod if needing to establish the base value prior
Append to: Add one or more values to a list/array
Remove last item from: Clear the last value from a list/array
You may reference the following system variables in nodes when creating bot messages, Split node conditions, payload fields, etc.
Simply open the dynamic placeholder menu using an open curly brace { and locate the system variable in the list.
Variable
Description
Sample use case
System.capturedIntent
Set by the User input node
Use in a Redirect node or with a Split node using conditional rules
System.conversationId
The unique id for the current conversation
Pass to Data requests to identify a unique interaction
System.channelType
Provides the channel the user is currently using
Use in a Split node to route the user based on the channel used in conversation
System.currentTimestamp
Indicates the time (in UTC) recorded by the system when triggered in conversation (returns the number of milliseconds elapsed since the epoch, defined as midnight at the beginning of January 1, 1970, UTC)
Use in a Split node to route the user if their query is time sensitive or for changes to verbiage (e.g., “Good morning”) or processes during or outside of hours of operation
System.environment
Provides the environment the bot is deployed to (Dev/Prod)
Use in a Split node to route users based on the production environment
System.language
The ISO 639-1 designated language (e.g., en)
Parameterize URLs sent in messaging to support localized versions of a webpage by language/region
System.languageCode
The ISO 3166-1 Alpha-2 language code that the conversation session is in (e.g., en-US)
Pass to Data requests as a parameter to support translation in the Data request response
System.lastIntent
The last intent visited by the user in the conversation session
Use in a Split node at the beginning of an intent to route the path of a user based on the context of where they were in a conversation
System.locale
The ISO 639-1 designated locale code (e.g., US)
Parameterize URLs sent in messaging to support localized versions of a webpage by language/region
System.multimodalTimeoutType
Timeout occurring from a Voice+ experience (blank = no timeout occurred, sessionStart = user didn't tap SMS link, inactivity = Voice+ started but inactivity between steps occurred)
Use in a Split node to route users that may need to be escalated based on timeout condition
System.nlpConfidenceScore
The value (out of 100) that the NLP confidently matched a user's input to an intent
Use to ask clarifying questions if below a threshold to ensure the correct intent has been matched
System.resumeIntentMessage
The bot message played back when an intent is resumed from a previous interruption
Enabled on the Start node of an intent to pick up where a user left off
System.sentiment
The sentiment of the user (Positive, Neutral, Negative) for the current exchange. Note: sentiment analysis must be enabled for the bot
Use in a Split node to provide empathetic responses
System.transcript
Provides the complete exchange between the human and the bot. Any sensitive information will be redacted
Use as a payload field in a Data request that creates a ticket in a help desk system
System.userId
The user ID identifying the human in the conversation. Value varies by channel
Pass to Data requests to look up information on the user
System.utterance
The most recent message received from the human
Use in a Split node and the Containsoperator to determine if the user said a specific keyword
Start node is the home node of every flow. It's non-editable, provides information on how the flow is reached by users, and should be attached to the first node added to your canvas.
Every flow or page created within a flow automatically populates a Start node as a beginning point. A node added to the canvas can then be attached to Start through a line or by stacking.
Next: Link to the first node added to the flow
Action
Action nodes initiate an external task outside of Dialog Studio to occur.
An email or text sent to the user for a survey, confirmation, or set of instructions
Triggering the creation of a service ticket, work order, purchase, etc.
Scheduling an appointment or calendar meeting
Optional if end node:
Success: Link to the next node in the flow if the action executed properly
Optional:
Timeout: Link to a node if the action does not respond a status before the timeout
Failure: Link to a node if the action was not able to connect as configured
Invoke: Select from available Actions already created in the workspace
Payload: Each payload field is auto-generated by the Request model set up when the Action was created. Enter desired payload into each field(s), if applicable
Optional:
Always retrigger: Enable toggle to retrigger the action, even if the node is revisited again during the same conversation session
Timeout: Enable toggle to adjust timeout period in seconds. Default is 5s with a maximum of 30s
Use a Loop node before the Action node to specify a number of retries allowed for failure events
Consider linking a Basic node to the Action's Success connector to acknowledge via messaging that the process was successful
Basic
Basic nodes are the easiest to include in any part of the flow. They can act as a messaging node, a processing node when given added functionality, or both.
Indicate via message that a process is about to occur before continuing the flow to an Action, Data request, or Escalation
Offer a greeting or confirmation before/after a question or capture step
Clear a user's input in a retry cycle
Optional if end node:
Next: Link to the next node in the flow
Optional:
Bot messages: Add a message(s) that the bot relays to the user when reaching this node
Add to the end of a flow to properly end a conversation with a user using a goodbye message
Link No match connectors to a Basic node, which can explain to users why something may have been an incorrect choice or incorrect input before continuing with a retry or escalation
Bot handoff (beta)
Bot handoff nodes allow you to route users to a different bot and bot communication channel that exist in the same workspace.
Move a user from a bot handling HR questions to a bot handling an IT request
Move a user from one communication channel to another that's only supported by the other bot
Route a percentage of users via a Split node if doing A/B testing with a new bot
Optional if end node:
Continuation: Link to the next node of the current flow if the handoff returns to the original bot's conversation
Optional:
Failure: Link to a node if the handoff was not able to connect as configured
Handoff: Select the bot to route to from the current workspace
Channel: Select from the available channels already set up with the new bot
Intent: Select from the available intents attached to the new bot (your selected channel also impacts which intents are displayed)
Optional:
Bot messages: Add a message(s) that the bot relays to the user when reaching this node
Be mindful that all bots involved in handoff situations have the intended communication channel and language support so there are no disruptions in the user's experience
Data request
Data request nodesallow you to trigger information to be received during a conversation through static data or external API. They're particularly valuable when needing to relay information to a user through other nodes where the info is dynamic.
Checking available rooms to assist with a hotel reservation
Pulling a list of local restaurants to match a user's criteria
Fetching the user's profile to authenticate and customize the conversation
A payload of information sent to a database for storage or updating (e.g., user profiles, passwords, etc.).
Success: Link to the next node in the flow if the request executed properly; generally follow with a node where the data request or properties of the data request are being referenced
Optional:
In progress: Link to a node that loops back to the data request node while a request call is being resolved; useful to avoid timeout restrictions from voice channel providers on API calls that take longer. Be sure to both define a custom timeout and enable the In progress edge on the node's side panel
Use of the In progress connector requires the NLX CloudFormation template be redeployed in AWS for voice channel integrations set up prior to 2024.
Timeout: Link to a node if the request does not respond a status before the timeout
Failure: Link to a node if the request was not able to connect as configured
+ Add data request > Request: Select from available Data requests already created in the workspace
Always retrigger: Enable toggle to retrigger the data request, even if the node is revisited again during the same conversation session
Custom timeout: Enable toggle to adjust timeout period in seconds. Default is 5s with a maximum of 30s. If increasing the timeout for custom webhooks, link the node's In progress connector to a Basic node that then links back to the data request node. This avoids a premature timeout imposed by your communication channel before your request call is resolved
In progress edge: Enable to unlock the In progress connector and link to a node that loops back to the Data request node while a request call is being resolved; useful to avoid timeout restrictions from voice channel providers on API calls that take longer. This is still subject to the maximum timeout of 30s
Always place a data request node before another node that will either relay, reference, or use conditional logic based on the property or properties from your data request
Reference information in text fields by entering an open curly bracket { and selecting from data requests in the workspace (data requests and any properties set up are color-coded orange in the list)
If increasing the default timeout in the side panel for custom webhooks/APIs that take a while to resolve, it's recommended that you link the data request node's In progress connector to a Basic node with "One moment..." messaging that then links back to the data request node. This avoids a premature timeout imposed by your communication channel before your request call is resolved and provides for a better user experience
Define
Define nodes allow you to define and set ephemeral values for use in a single intent flow. In essence, they work identically to Context attributes but are localized to a single flow and not retained thereafter.
A value captured in an intent that shouldn't be retained outside of the current flow
A value captured from the user must carry a different meaning in other intents in the same conversation session
Parsing date to extract its component parts (minutes, seconds, hours, days, etc.)
Next: Link to the next node added to the flow
Define: Give the value to be defined a descriptive name that is used whenever referenced in the intent's flow
Value: Set the value's meaning (can choose its property type). If choosing a dynamic property type {x}, select from those in the workspace or intent and define the behavior using the dropdown
Use Define node with Parse date for dynamic messaging specific to your intent flow
Example: A user sets up an account that also provides them monthly rewards for being an active member. The slot type 'NLX.Text' or 'NLX.Date' captures a user providing an activation date of 11/15/2023 through a User choice node. Follow with a Define node to name the value 'Rewards' and define it as a parsed date of the activation date slot. Later messaging can choose to reference it as "Your monthly reward will be sent on day {Rewards.day} of every month!" = "Your monthly reward will be sent on day 11 of every month!"
Escalate
Escalate nodes immediately initiate the escalation transfer for the flow's communication channel.
Timeout: Link to a node if the escalation does not transfer before the timeout
Failure: Link to a node if the escalation was not able to connect as configured
Continuation: Link to the next node of the current flow if the escalation returns to the bot
Optional:
Bot messages: Add a message(s) that the bot relays to the user when reaching this node
You may either reuse the Escalate node anywhere in a flow or link to the same Escalate node from anywhere in the flow
In some instances, you may wish to develop an escalation intent that handles an extended process before ending with the Escalate node (e.g., authenticating a user, sharing current wait times, or presenting a final pitch to complete a task with the bot instead of an agent)
Generative Journey
Generative Journey nodes allow you to employ a large language model (LLM) to facilitate the process of collecting necessary parameters (slots) from a user to complete a task. This both allows for multiple slots to be collected by a single node in your workflow and provides greater flexibility for a user to give information in a less rigid, more natural way.
Resolve several slots required for completing an intent (collect PII details, preferences for scheduling a trip, information for filing a claim, etc.) in a single node of a flow
Allow for users to alter choices easily and support users asking for optional parameters (slots)
Provide context for AI assistants to reference for more personalized conversation as well as support a broader variety of user expressions when resolving slots
Success: Link to the next node in the flow after the LLM has completed resolving all slots
Optional:
Timeout: Link to a node if the LLM does not respond before the timeout
Failure: Link to a node if the LLM was not able to connect as configured
Escalation: Link to a node (preferably escalation process) if a user requests an agent while in the Generative Journey
"You are a virtual hotel concierge for the White Coral Resort and specialize in booking hotel rooms. Do not talk about topics other than booking accommodations at the White Coral Resort. Keep responses polite and concise."
NOTE: If you do not want the LLM to formally greet the user (perhaps use of the Generative Journey node appears at a later point in an ongoing conversation) include 'Do not use greetings' as part of your prompt
For multi-shot prompting (providing the LLM with examples), check out this guide
Required slots: Include required slots that the LLM must collect from a user to complete the task (e.g., check-in date, checkout date, number of guests, number of rooms, etc.) Only slots attached to the intent will appear for selection
Optional:
Model name: Enter the specific AI model ID you wish to employ for processing (MUST use an LLM model service from an integration already set up in your workspace Settings)
Optional slots: Include optional slots a user may provide that the LLM may take into account to complete the task but are not required for all users (e.g., preferred room, number of pets traveling, etc.). Only slots attached to the intent will appear for selection
Settings (expand menu):
Enable zero turn mode: The LLM will auto-resolve slots if information was previously provided by the user before entering the Generative Journey
Include transcript as context: The transcript of the conversation between the AI assistant and user prior to the Generative Journey node is sent to the LLM along with the prompt. This facilitates confirming preferences a user may have discussed earlier and personalizes the exchange while the LLM is engaged with the user
Auto-translate: The language code from the conversation session will be passed to the LLM and all responses back to the user will be provided in that language
Place a Generative Journey node on the Canvas > Using the node's side panel, assign an LLM integration previously set up in the workspace
Provide a succinct prompt to the LLM on what workflow the task is part of, the end goal of the task, specific messaging or branding requirements (if any), and things to avoid (if any)
Assign all Required slots needed to complete the task
Expand and adjust Generative Journey's Settings (see Side panel tab for more)
Link from the node's Success edge to the next node in the flow
Generative text
Generative text nodes allow you to employ a large language model (LLM) to handle the conversation workload, including formulating responses appropriate to the context of the conversation.
Carry open-ended conversations between users and an AI assistant
Handle unexpected user responses
Link from No match edges on previous nodes to manage unknown user responses
Success: Link to a node that then references the placeholder name given in the Generate field to trigger the LLM response. The placeholder name may be referenced in a follow-up Basic node as the sole bot message or in an Action or Data request node as its payload
Optional:
Timeout: Link to a node if the LLM does not respond before the timeout
Failure: Link to a node if the LLM was not able to connect as configured
Generate:The name entered here determines the placeholder name of this Generative response when referenced in other nodes (do not include spaces in the name)
Sample prompt: "You are an AI customer support assistant called Nelly. Do not engage in any controversial topics. Given the user asked {System.utterance}, provide the user a helpful answer. Limit your answer to no more than 4 sentences. Don't mention anything about contacting customer support for further assistance."
Optional:
Include transcript as context:When enabled, transcript of the conversation between bot and user up to that point is sent to the LLM along with the prompt for added context.
Place a Generative text node on the canvas > Using the node's side panel, assign an LLM integration previously set up in the workspace
Enter a name for the prompt using the Generate field (this name will be referenced in the flow when wanting to trigger the LLM in conversation) > Provide a succinct prompt to the LLM in the Generative text node within its Prompt field
Add a node with messaging (in this example, a standard Basic node is used) and link the Success edge of your Generative text node to the new node
Click + Add message on your new node and enter the placeholder name given to the Generative text prompt using the open curly brace { menu
Good AI prompts include an explanation of the AI's purpose, a prescribed limit to the length of its responses, and any topics or words it should avoid
Loop
Loop nodes help to either set an allowed number of retries for a user's response or an API call (such as with a Data request or Action), or they can help survey items in a data array.
Range mode
Prevent infinite looping by allowing three retries for a user to provide their PIN before escalating to an agent
List mode
Loop over a list of resorts and provide matches from a user's preference of 5-star establishments in Tokyo
Next: Link to the next node in the flow (usually a Data request node for processing an array or User choice or User input for setting input retries)
Completed: Once the loops have concluded without a desired result, the flow ejects to an another node that may handle the fail state (Escalate or Redirect, for example)
Optional
For each: Give a descriptive name of the loop iteration (e.g., Retry or Name.UserProfile)
Range mode:
From/To: Enter range of allowed loop retries before ejecting
List mode:
From: Select Data request and data property (if applicable) to be used as the array for scanning and retrieving. Your data request's high-level Response model type must be set to List
Stack or place a Loop node before a Data request or User choice node
Use State modifications on either the Loop node or a node that precedes the Loop in a retry cycle to Clear the user selection. This prevents retaining information from the first pass and creating repeated No match incidents
Multimodal
Multimodal nodes are for triggering a Journey created in your workspace during a conversation session with a user. Journeys are multimodal experiences that pair voice prompts with visual assets from the web.
A voice communication channel must be assigned to your flow before accessing the Multimodal node in the Canvas builder.
A user calling to request a service during heavy call volumes is texted a link and guided through completing an online form
A user requiring careful guidance through an online booking process is texted a link and guided through each step to complete booking
Continuation: Link to the next node in the flow to continue from your multimodal experience (generally triggered by the last step of your journey)
Timeout: Link to a node if the journey step does not respond after the timeout period
Escalation: Link to the next node in the flow to begin an escalation process or trigger an immediate transfer using an Escalation node (generally triggered by an appropriate step requiring agent transfer in your journey)
Optional:
Session start timeout: The amount of time (in seconds) to wait for the user to trigger the first journey step
Inactivity timeout: The amount of time (in seconds) to wait for a user to proceed between journey steps
Always precede a Multimodal node with an Action node that sends the SMS link
Use the system variable {system.userId}for the Phone number field of your payload on the Action node's side panel
In your Action's URL payload field, enter the URL followed by the parameter cid={system.conversationID}
Include a Basic node after the Action to indicate a text was successfully sent to the user
Include a Multimodal node after the Action + Basic node to initiate the Journey
Note
Note nodes are for adding freeform text to the Canvas and do not impact the intent's conversation flow.
Provide instructions or explanations to a teammate about items on the flow
Document different node stacks or sections of a flow for organization or visual mapping
Enter descriptions or thoughts about areas or whole pages of a flow
Note nodes are not designed for use in a flow and therefore have no connectors.
Body: Enter note message in this field. You may also reference dynamic values created in the workspace with an open curly brace {
Optional:
Title: Enter a brief title to describe the note or call attention to it
There's no wrong way to use Note nodes, but you can explore more ways to stay organized
Redirect
Redirect nodes route users to to a different page of an intent flow or to a different intent.
An unregistered user that needs to complete a profile before proceeding with the main flow (redirect to a page of the flow or another intent)
After asking a user what they need help with (User input node) and routing them based on a matched training phrase
Moving a user from an intent covering booking policies at a resort to an intent that books a resort reservation
Optional
Continuation: Link to the next node of the current flow if the redirect returns back to this point
Page: If multiple pages of an intent's flow exist, specify which page to dispatch the user
Intent: Select from other intents available in the workspace
Captured intent: The captured utterance from a preceding User input node is matched by the NLP to a training phrase of an intent attached to the bot
Previous redirect: Goes back to a previous Redirect node that last did a reroute in the conversation and continues the flow
Parent bot: Transfers back to the original bot if currently in a new bot's flow from a Bot handoff scenario
Ensure if multiple intents are referenced that all are attached to the bot before deployment
Only choose Intent over Captured intent when certain the new intent flow accomplishes the user's need based on their set of choices or path taken. Captured intent is active user navigation while Intent drives the direction without the user
Split
Split nodes divide users in a path flow based on condition(s) or chance distribution.
Conducting A/B testing on new messaging or new process and diverting a portion of user traffic to test
Splitting voice channel users from chat channel users to provide alternate messaging for one part of the flow
Sort users based on various criteria (e.g., rewards level, credit card type, negative vs positive attitude, etc.)
If condition: Each edge appears as conditions are added to the Split node. Each edge may be linked to a different node specified in a flow
Optional
else: Link to a node in the flow when any established conditions(s) are not matched
Conditions mode:
If condition: Each dropdown provides options to craft a conditional statement. You may also use the + And link to add modifiers to a statement and create a single grouping of conditions
Chance mode
Select + Add condition to create multiple splits in traffic that divert a percentage of users for each pathway. Percentages may be adjusted manually using the slider or may be calculated evenly across pathways by choosing Distribute equally
Enter a name for each If condition on the side panel. When collapsing the node on the Canvas, only the name of the group appears, decluttering large Split nodes and providing better visual organization
Adding separate conditions on a Split rather than one grouping indicates that if the first condition isn't met, it will proceed to the next condition
The NLU processes each condition in the order they appear in the side panel, so reorder them as desired using the three-dot menu next to each condition
User choice
User choice nodes prompt users to either make a selection or provide information for the AI assistant to follow-up with a relevant action, such as routing, refining, or externally passing along the info.
For User choice nodes, the NLX NLU will attempt the following (in order):
Match the user's utterance to a value from the assigned source (custom slot, built-in slot, or data request array)
Match the user's utterance to training data belonging to other intent flows attached to the bot
Eject out of the No match edge (if no logic or messaging is connected, the NLU will default to Unknown or Fallback)
Ask a user for the start date of their reported service outage
Ask a user a Yes/No question
Ask a user to choose from their available credit cards on file
Ask a user to provide a short explanation of their complaint
Match or value connectors: Link to the next node in a flow based on the user's selection. May set node's edges to mirror a Slot's values (max. 10) and direct each edge to different paths, or simplify with Match/No match edges
Optional
No match: Link to a node in the flow when a user's choice is invalid
If assigning a data request to your User choice node, first invoke it using a Data request node and ensure the data request's overarching Response model type is set to List)
Optional
Elicitation (visible on voice channels only): Indicates a user provide their choice by spelling it letter by letter (e.g., A, B, C) or spelling by words (e.g., A as in apple, B as in boy)
Additional slots: NLX Boost must first be enabled on your bot before using this feature. If the user's choice does not match any of the primary options, your bot may then resort to one or more built-in slots attached to the intent and assigned here. Choices matching options from additional slots will exit out of the No match connector. See How-to for context.
Settings (expand menu):
Show choices: Displays values (max. 10) in chat or reads them aloud in voice for users to choose
Auto-select only choice: If only one choice is available, the bot will make the selection on the user's behalf and automatically traverse to the next node in the flow
Reset choices to match/no match (visible when using a custom slot): Reset node connectors to Match/No match values
Reset choices to values (visible when using a custom slot): Reset node connectors to the individual slot values + No match
Choice label (visible when resolving from a Data request source): allows you to specify the data request property to display for user selection. The data request overarching Response model type must be set to List
If reusing a slot or data request's values in another User choice node in the conversation, be sure to place a Basic node beforehand that uses a State modification to Clear the user's previous selection. Otherwise, the bot will retain the user's choice and auto-traverse through the second User choice node believing it to be the same.
If applicable, link the No match edge to a Basic node that Clears the selection, explains why a response may be invalid, and links back to the User choice node to allow a user a retry.
Additional slots are useful in cases where a user's selection would normally be supported despite their selection not matching choices from the initial primary source. For example, a user may be provided three available appointment options for today's date from a data request source, but the user instead requests an appointment for tomorrow. An additional system slot, such as NLX.Date or NLX.Text, may be assigned to the same node to handle this request. The user's request will follow along the No match edge on the node where a Split node should be used to detect if an additional slot(s) entry exists and proceed from there.
User input
User input is considered a listening and capture node for collecting a user's utterance to match to an intent's training phrase or collecting a keyword(s) that alters or routes the conversation using Split nodelogic.
Asking a user what they need help with and routing them to an intent that matches a training phrase
Intent match: Link to a node, usually Redirect, that routes a user based on their response
Optional
No match: Link to a node in the flow when a user's response is invalid or unrecognized
Bot messages: Add a message(s) that the bot relays to the user when reaching this node
Be sure to assess the efficacy of training phrases for all intents attached to a bot. This ensures the steps in flows that direct users with User input nodes work as intended