Get acquainted with all nodes types and how to use them in NLX's Dialog Studio
Node side panel
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.
Nodes overview
Get quickly acquainted with the variety of nodes available in the Canvas builder:
Every node has a non-editable IDthat's auto-generated so 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.
Start
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 the 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 connector line or 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
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
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 webhook/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. 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
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.
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 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 a bot
Handle unexpected user responses
Link from No match connectors 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
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 connector 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
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: Connectors appear as conditions are added to the Split node. Each connector 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 a relevant action, such as routing, refining, or externally passing along the info.
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 connectors to mirror a Slot's values (max. 10) and direct each connector to different paths, or simplify with Match/No match connectors
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: 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)
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
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 System slots attached to the intent and assigned here. Choices matching options from additional slots will exit out of the No match connector. See Best practices for context.
Reset choices to match/no match (Slot only): Reset node connectors to Match/No match values
Reset choices to values (Slot only): Reset node connectors to the individual slot values + No match
Choice label (Data request only): 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 No match connectors 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 connector 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