NAV Navbar

Creating Mix.dialog Applications

Mix.dialog is a multichannel dialog design development tool for creating conversational experiences. It works hand-in-hand with Mix.nlu. Use Mix.nlu to create NLU models to understand your users. In Mix.dialog, you build conversational interfaces to engage with them.

Get started

This section explains how to design a simple chat application. When you open a new project in Mix.dialog, a blank canvas appears in the center pane, with a Start node, a node palette, and the Components pane on the left. Once you have added nodes on the canvas, the Node properties pane becomes available on the right-hand side of the screen. Click Components or Node properties, on the toolbar, to collapse or expand those panes. You can change the position of the node palette by dragging it. Click the X button to close the palette. Click the Icon restore palette icon in the upper-left corner of the canvas to open the palette again.

As you add nodes and define their properties, the dialog flow takes shape in the form of a graph.

All applications start with a component called Main, which typically covers greeting the user and asking what they would like to do. Use a message node for the greeting, and a question and answer node for asking the user what they would like to do. Use an intent mapper node to connect the dialog flow to another component meant for a specific purpose, depending on the user’s response. For example, the chat application for an airline might let you book a flight, check the current status of a flight, and so on. In such an application, design the dialog flow for booking a flight separately from the dialog flow for checking a flight’s status makes your dialog model more readable.

This scenario assumes you have created a Mix project. It does not require you to have already started developing the NLU model for your chat application in Mix.nlu—with its NLU panel, Mix.dialog also supports managing intents and entities. However, before you can preview a dialog design you might need to further develop the NLU model for the project by adding sample sentences and annotating them in Mix.nlu (refer to the Mix.nlu documentation).

Open your project in Mix.dialog

  1. On the Mix dashboard, click your new project if it is not already in focus.
  2. Click the large .dialog button above the area where project details appear.
    Btn dashboard dot dialog
    Mix.dialog opens with the DESIGN tab in focus, showing a Start node on a blank canvas in the center pane.
    Design initial view
  3. If your project supports multiple languages, use the menu near the name of the project, to choose the language you want to start with.
    Design choose language

Add NLU intents and entities

  1. Click NLU, on the toolbar, to open the NLU panel.
  2. Click the Add icon Icon plus.
  3. Type a name for your intent—for example, ORDER_COFFEE—and press Enter.
    Add nlu intent
  4. Next to ORDER_COFFEE, click Create Intent Component.
    This adds a component where you will design the part of the dialog that will collect all the information required to fulfill this intent. The new intent component appears in the Components pane.
    Intent component new
  5. Switch to the Entities tab.
  6. Click the Add icon Icon plus and type a name for an entity your application is meant to collect—for example, COFFEE_TYPE— and press Enter.
    The new entity appears in the list of custom entities.
    Add nlu entity
  7. Proceed in the same fashion to add, for example, COFFEE_SIZE.
  8. Click COFFEE_TYPE in the list of custom entities.
  9. In the area on the right-hand side, add a few representative literal-value pairs—for example, enter literals espresso, ristretto, americano.
    The literal text automatically doubles as the value, by default. If you want to use a different value, press Tab and type the desired value before pressing Enter.
    Panel nlu entities literals
  10. Proceed in the same fashion to add a few representative literal-value pairs for the COFFEE_SIZE entity—for example, literals large, and small.
    Multiple literals can have the same value, to help your application recognize the different ways a user might say an entity.
  11. Click the Add icon Icon plus next to the literal large, type double, and press Enter.
  12. Proceed in the same fashion to add the literal single, for the value small.
    Panel nlu entities literals2
  13. Click NLU again, on the toolbar, to close the panel.

Design your dialog

Main component example
Design main component coffee shop

Build a dialog by adding nodes and configuring their properties to direct the dialog flow based on interaction with the user.

Greet the user

  1. Drag a Message node from the palette onto the Start node on the canvas.
    This automatically connects the Start node to the message node.
    Design add message node
    The properties for this message node appear in the right-hand pane.
    Prop message node
  2. Click the default node name, Message, at the top of the Node properties pane, and replace it with a unique name—for example, Welcome.
  3. Enter the desired greeting message—for example, Welcome to My Coffee Shop!
    The message appears on the Welcome node.
    Prop message node wip

Collect the user intent

  1. Drag a Question & Answer node from the palette onto the GoTo area of the Welcome message node.
    This automatically connects the message node to the question and answer node.
    Design add question answer node
  2. (Optional) In the Node properties for the Welcome node, replace the default GoTo transition label, with Always, to make it more obvious that this transition is not conditional.
    Notice the GoTo field already indicates that the question and answer node is the next node in this flow.
  3. Click the question and answer node on the canvas.
    The properties for this node appear in the right-hand pane.
    Prop question answer node
  4. Replace the default node name, Question & Answer, with a unique name—for example, Get Intent.
  5. Enter the desired question—for example, How can I help you today?
    The green check mark that appears on the System Question tab indicates that you have fulfilled the basic requirements for this tab, that is, you have specified a question.
    The question appears on the Get Intent node.
    Prop question answer node applied
  6. Click User Input.
  7. Choose NLU Intent from the list of input formats.
    Prop question answer node user input
  8. Click Add Intent Mapper node.
    This automatically connects the Get Intent question and answer node to the intent mapper node.
    Notice the intent mapper node indicates 1 Mapped Component.
    Design add intent mapper node
  9. Click System Actions.
    Notice the GoTo field already indicates that the intent mapper node is the next node in this flow.
    Prop question answer node nlu intent actions
  10. (Optional) Replace the default GoTo transition label, with Always, to make it more obvious that this transition is not conditional.

Say goodbye to the user

  1. Click the intent mapper node on the canvas.
    The properties for this node appear in the right-hand pane.
    Prop intent mapper node
  2. At the bottom of the pane, expand the GoTo list, expand Add new, and choose Message.
    This determines what happens when the dialog returns to this intent mapper node from an intent component, after the interaction associated with a specific intent is complete.
  3. Click the Message node on the canvas.
  4. Replace the default name of the message node with a unique name—for example, Goodbye.
  5. Type the desired parting message—for example, Thanks for visiting My Coffee Shop. Goodbye.
    The message appears on the Goodbye node on the canvas.
  6. In the Node properties pane, expand the GoTo list, expand Add new, and choose External Actions.
    This automatically connects the Goodbye node to an external actions node.
    Design add end node
  7. (Optional) Replace the default GoTo transition label, with Always.
    Notice the GoTo field already indicates that the external actions node is the next node in this part of the flow.
  8. Click the external actions node.
  9. Replace its default name with a unique name—for example, End.
  10. Under Action Type, choose End.
    Prop external actions node end
    The End node represents the end of the conversation.
    Design add end node complete

Fulfill the intent

Intent component example

Design question router complete with wrap up message

  1. In the Components pane, click your ORDER_COFFEE intent component.
  2. Drag a Question Router node from the palette onto the canvas. The properties for the question router node appear in the right-hand pane.
    Prop question router node
  3. Replace the default node name, Question Router, with a unique name—for example, Get Order Details.
  4. Under Route to questions, specify every piece of information to be collected—that is, entities you have defined, such as: COFFEE_TYPE, and COFFEE_SIZE.
    Prop question router node entities
    The specified entities appear on the Get Order Details node, on the canvas.
    Design question router entities
  5. In the Node properties pane, next to COFFEE_TYPE, the first piece of information to collect, expand GoTo collect node, expand Add new, and choose Question & Answer.
    Prop question router add new
    This connects the Get Order Details question router node to a new question and answer node named COFFEE_TYPE, after the entity to collect.
    Design question router add question answer
  6. Proceed in the same fashion to add another questions and answer node for the remaining pieces of information to be collected—that is, the COFFEE_SIZE entity.
    Design question router add question answer2

Collect entities

  1. Click the COFFEE_TYPE question and answer node.
  2. Enter the desired question—for example, What would you like to drink?
  3. Click User Input.
    Prop question answer node user input show in actions on
  4. In the lower area of the User Input tab, since this scenario does not require the dialog flow to take different paths depending on the collected value, turn off all Show in Actions switches.
    Prop question answer node user input show in actions off
    Notice the values no longer appear on the COFFEE_TYPE node, on the canvas.
    Design question answer show in actions all off
  5. Click System Actions.
    Prop question answer node system actions
  6. Under COFFEE_TYPE (Default), click Add Action and choose Add GoTo.
    A pair of fields appears.
    Prop question and answer goto blank
  7. Expand the GoTo list, then expand Return to, and choose Get Order Details.
    Prop question answer return to question router
    This means that, once the question and answer node has collected information relevant to the current intent—that is, any entities required to fulfill the intent—, the dialog flow goes back to the question router node. The question router node determines whether information still remains to be collected.
    A symbol representing the Return To transition appears next to the GoTo label on the COFFEE_TYPE node.
    Design return transition
  8. Configure the COFFEE_SIZE question and answer node in the same fashion:
    1. Add a question—for example, What size would you like?
    2. Set all the View in Actions switches to OFF.
    3. Set the Return To transition to return to the Get Order Details question router node.

Wrap up

  1. Click the Get Order Details question router node on the canvas.
  2. In the Node properties pane, under GoTo when questions are completed, expand the GoTo list, expand Add new, and choose Message.
    This connects the question router node to a new message node.
  3. Click the new message node on the canvas.
  4. Replace the default name of the message node with a unique name—for example, Wrap Up.
  5. Type the desired message—for example, Your coffee is coming right up!
    The message appears on the Wrap Up node on the canvas.
  6. Expand the GoTo list, and choose Return.
    Prop return from component
    When the dialog reaches this node, all interaction associated with the ORDER_COFFEE intent is complete and the dialog returns to the intent mapper node in the component from where this intent component was called.
    A symbol representing the Return transition appears next to the GoTo label on the Wrap Up node
    Design message node with return transition

Validate your design

  1. Click the gear icon Icon gear and, under Validate Design Panel, choose Show.
    The validation panel appears.
    You can change its position by dragging it. (Click its X button to close it.)
  2. Click Run Validation.
    The panel reports any issues found in the design.
    Panel validation done
  3. If the panel reports warnings (or errors), click Warnings (or Errors) to expand the list of issues.
    Note: With this simple dialog design, the validation panel reports missing transitions in the component called Main. This is because we haven’t configured the five global event handlers in the Start node. You can safely ignore these warnings for now. If the NLU model for your project is not yet available, this also generates a warning.
  4. Click an issue to bring the affected node into focus, and correct your design as needed.
  5. Click Run Again to validate your design again.

Preview your design

Dialog preview example

Try coffee shop all in one

Note: Before you can preview this dialog design you must further develop the associated NLU model by adding sample sentences, annotating them, and setting their verification status, in Mix.nlu (refer to the Mix.nlu documentation).

  1. Switch to the TRY tab.
    Mix.dialog prompts you to train (or retrain) your NLU model.
    Try nlu model train prompt
  2. Click Train NLU model (or Retrain NLU model), if appropriate; otherwise click Try anyway (or Use existing).
  3. Click one of the available channel profiles.
    Try it initial
    Mix.dialog generates channel-appropriate code for your dialog app, validates the code, and reports any issues found in the code.
    Try codegen validation warnings
  4. Click Continue.
    The Main flow of your dialog design appears in the main pane.
  5. If your project supports multiple languages, use the menu near the name of the project, to choose the language you want to use for this session, as desired.
  6. Click Start, in the chat pane.
    Your greeting and initial question appear in the chat pane.
    Try coffee shop start
  7. Type something in the chat box at the bottom of the pane and press Enter.
    A response appears, based on what you typed.
  8. Pursue the conversation until you are satisfied with your scenario.
    If you reached the end of the dialog, your can click Start New Session.
    Alternatively, click Restart at the top of the main pane, at any time, to try another scenario.

Refine your dialog

To further develop your dialog model you might consider these tasks:

Basic operations

This section describe basic operations you can perform to manipulate the elements of a dialog design, that is, components, nodes, and their interconnections.

Add a node

Define node properties

Click the node you want to configure if it’s not already in focus.
The properties for this node appear in the Node properties pane.

Depending on the node type, you can perform most or all of these tasks:

See Design a dialog flow for more details.

Rename a node in the Node properties pane

  1. Click the node you want to rename if it’s not already in focus.
    The properties for this node appear in the Node properties pane.
  2. Click the default node name, at the top of the Node properties pane, and replace it with a unique name.
    Note: The name must be unique across all nodes and components in your project, at least at the channel level.

Rename a node directly on the canvas

Add a description to a node

  1. Click the node you want to describe if it’s not already in focus.
    The properties for this node appear in the Node properties pane.
  2. Click the Node description icon Icon file next to the node name, at the top of the Node properties pane.
  3. Enter the desired description in the field that appears.
    Prop add node description

Show or hide a node description

When you click a node on the canvas, if the Node description icon has a blue indicator, this means there is a description for this node.

Remove a node

  1. Click the More icon Icon ellipsis v for the node you want to remove.
    Canvas node menu
  2. Choose Delete.

Add a generic component

In addition to the component called Main, Mix.dialog supports two types of components: intent components and generic components. To add an intent component, use the NLU panel (see Manage intents). This section explains how to add a component that is not an intent component.

  1. Click the Add icon Icon plus next to Components.
  2. Type a unique name for the component and press Enter.
    Note: The name must be unique across all nodes and components in your project, at least at the channel level.
    The new component appears in the Components pane.

Rename a component

  1. In the Components pane, click the Edit icon Icon edit next to the component you want to rename (expand the Intent Components list, or the Components list, if needed).
  2. Modify the name as desired.
    Note: The name must be unique across all nodes and components in your project, at least at the channel level. In the case of an intent component, if you use the name of an existing NLU intent, Mix.dialog automatically maps the renamed intent component with the intent (see Add an intent component).

Delete a component

  1. In the Components pane, click the Delete icon Icon trash next to the component you want to delete (expand the Intent Components list, or the Components list, if needed).
    A message appears prompting you to confirm your intention.
  2. Click Confirm.

Switch to another component

In the Components pane, click the component you want to bring into focus (expand the Intent Components list, or the Components list, if needed).
The dialog design for the selected component appears in the center pane.

Zoom and pan

When you open a project, or switch between components, the dialog design automatically appears with a predetermined layout at 100% scale.

Change the active language

If your project supports multiple languages, use the menu near the name of the project to switch to the desired language.

Design choose language

Global settings and behaviors

Global settings define common functionality such as error recovery and command handling. They determine how your application handles commands and events, and they define confirmation and recovery behaviors. You can define handling and behaviors for your application at different levels:

Scope Description
Global The top-level settings apply to all channel profiles, that is your whole project.
Channel profile Settings you define for a specific channel profile take precedence over the global settings, in all parts of your project under the dialog flow for this channel profile.
Component Settings you define for a specific component take precedence over the global settings.
Node You can override some settings at the node level, for individual question and answer nodes. Node-level settings take precedence over the global settings and any component-level overrides.

Use the Project Settings panel to configure global behaviors and channel profile-specific behaviors for your project. To open the Project Settings panel, click the gear icon Icon gear and, under Project, choose Settings.

The Project Settings panel is organized into these categories:

Category Description
Conversation settings Set how many times the application will try to collect the same piece of information (intent or entity) before giving up.
Collection settings Set the confidence level below which the application rejects a collected utterance and throws a nomatch event, the number of nomatch event before the application throws a maxnomatch event, and how many times the application will try to collect the same piece of information after failing to detect any response from the user.
Recognition default messages Add default messages to handle situations when your application fails to recognize the user’s utterance, when it fails to detect any utterance from the user, and when it reaches the maximum number of turns, nomatch events, or noinput events.
Custom global commands Global commands are utterances the user can use at any time and which immediately invoke an associated action; for example: main menu, operator, goodbye. Enable the commands you want to support and add new ones if desired.

Detailed information appears on the panel itself, to help you understand the available settings.

To support language-specific messages, choose the desired language from the menu near the name of the project. Click the Reset icon Icon reset to revert any modified setting to its default value. Click the Close icon Icon close to close the panel.

Configure global commands

For your application to support global commands, you must add an entity to hold the recognized command values you want your application to support. Once you have enabled global commands, you can add handlers for the events those commands are meant to throw, in the Start node for your dialog design.

  1. Add a list entity—for example, COMMAND.
  2. Add literals for your entity—for example:
    Literal “goodbye” for value goodbye; “agent” and “operator” for agent; “main menu” for main_menu.
  3. In Mix.nlu, add at least ”goodbye” as a sample under the NO_INTENT intent, and annotate it with the COMMAND entity.
    Note: This is a workaround to prevent “goodbye” from being recognized as a value for a global entity that Mix.dialog does not yet support.
  4. In Mix.dialog, open the Project settings panel and scroll down to the Custom global commands category.
    Panel settings global commands
  5. Expand the Entity list and choose the entity you defined at step 1.
    Panel settings global commands entity
    Note: This entity becomes a reserved entity. You cannot assign its value to a variable or use it in dynamic messages.
  6. Enable a command (for example, Goodbye), and choose the entity value (goodbye) that represents this command.
    Panel settings global commands escalate
    Note: Ignore the DTMF selector—Mix does not yet support DTMF interaction.
  7. Proceed in the same fashion for the other commands you want to enable.

Add a global command

  1. Click the Add icon Icon plus next to the Entity selector.
    Panel settings add global command
    A new row appears.
    Panel settings add global command new row
  2. Choose the desired command, the corresponding entity value, and enable your new global command.

Remove a global command

Click the More icon Icon ellipsis v for the global command you want to delete and choose Delete.

Design a dialog flow

In Mix.dialog, the component called Main handles the main dialog flow for your application. If your application involves NLU intents, use intent components to handle the intent-specific dialog flows. In addition to making your design more readable and easier to maintain, using separate components makes it possible for multiple designers to work concurrently on a dialog project.

In Main, the Start node is where the application starts. In other components, the dialog flow proceeds from the Enter node until it returns back to Main.

When designing a multichannel application you can define channel-specific messages or channel-specific branches in the dialog flow.

Dialog design elements

A dialog design comprises nodes that perform operations such as prompting the user, evaluating a response, retrieving information from a backend system, or transferring the user to a live agent for assistance.

Mix.dialog provides several types of nodes that each perform a specific kind of operation. The node types are identified by distinctive icons.

Icon Node type Description
Nod start Start Starts the conversation
Nod question answer Question & Answer Listens for and recognizes user responses
Nod message Message Performs non-recognition actions, such as playing a prompt, assigning a variable, or defining the next node in the dialog flow
Nod decision Decision Determines the next node in the dialog flow
Nod data access Data Access Exchanges information with a backend system
Nod question router Question Router Specifies multiple pieces of information to be collected, and determines the next node in the dialog flow, based on the information collected so far
Nod intent mapper Intent Mapper Handles data for NLU/call routing menus
Nod sms SMS Not yet available
Nod email Email Not yet available
Nod component call Component call Temporarily passes control to another component of the dialog flow
Nod enter Enter Enters the part of the dialog flow in the current component
Nod external actions External Actions Supports actions to be performed when ending a conversation, transferring to another system, or escalating to a live agent, and allows exchanging information with an external system via a client application
Nod transfer Transfer Deprecated—In legacy projects, please replace any transfer nodes with external actions nodes
Nod end End Deprecated—In legacy projects, please replace any end nodes with external actions nodes

Set up the Start node or an enter node

Start node properties example

Prop start node initial

The Start node is where your application starts. Similarly, an Enter node is where a specialized component of your application starts. Neither support interaction with the user but you can use them to perform variable assignments. Remember that variables in Mix.dialog have a global scope. You cannot rename the Start and Enter nodes.

The Start node is also where you set default behaviors for handling events and errors that might occur at any question and answer nodes in your project. Event handlers you define in the Node properties pane for your project’s Start node have a global scope; that is, they can catch events associated with global commands, recognition events, collection events, custom events, and so on. Event handlers you define in the Enter node for a component are limited to catching events that occur in the context of the specific component. Component-level event handlers have precedence over global event handlers in your project. You can configure local overrides for these behaviors at the node-level for specific question and answer nodes.

Mix.dialog automatically connects the first node you drag onto the canvas to the Start node (in Main) or to the Enter node (in any other component). If you later want to connect the Start node (or an Enter node) to another node, drop the new node directly onto the canvas, if it is not there already, and change the GoTo transition of the Start (or Enter) node.

Click the Start node (in Main) or the Enter node (in any other component), to see its properties in the Node properties pane.

Add an event handler

Click Add Event Handler at the bottom of the Component Events section.

Prop enter node add event handler

Blank fields appear.

Prop add event handler blank

Remove an event handler

Click the More icon Icon ellipsis h for the event handler you want to delete and choose Delete.

Configure an event handler

  1. Choose the desired event to handle—for example, Escalate.
    Tip: If your project does not yet have the event you want to handle, you can create it on the fly.
  2. Set the GoTo transition to the node (or component) that will handle the event.
    For example, the event thrown by the Escalate command could be handled in a separate component named Escalation, in which case you would point the GoTo transition to a component call node for the Escalation component.
    Prop start node event handler escalate

Create a custom event on the fly

When setting up the Start node or an Enter node, you can create a custom event directly from the event selector of an event handler.

  1. Click the Add icon Icon plus next to Select event.
    Prop add event from handler
    A text field appears.
  2. Type a name for the new custom event in the text field and press Enter.
    The new event becomes available.
    Prop add event from handler added
  3. Click the new event to choose it.

Set up a question and answer node

A question and answer node prompts the user for information, and then recognizes the user response. Click a question and answer node on the design canvas, to see its properties in the Node properties pane. The properties for a question and answer node are organized across these tabs:

Tab Description
System Question The systems invites the user to say something—for example, How can I help you today? or Where are you flying from? You can set separate, channel-specific or conditional messages. For example, you might want a different wording for the system prompt, depending on the channel. If the dialog flow can come back to this node, you might use a reentry message.
User Input Choose the type of information to collect: either an NLU intent, or an entity. For an entity, determine whether value-specific actions are required.
System Actions Set where to go next, or throw an event. You can add messages, assign variables and define conditions to determine which actions and which transition are to be performed. A simple question and answer node meant to collect an entity typically returns to the question router node that handles the entities for an intent.
Recovery Add messages to handle nomatch events locally, if desired. Recovery messages set at the node level override any corresponding recognition default messages from your project’s global settings.
Interactivity Configure interactive elements for values of a yes/no, Boolean or custom entity. Only available in projects with channels that have interactivity enabled. Not available for isA relationship entities.
Event Handling Configure local event handlers for events that should be caught at this specific node, if any. Node-level event handlers take precedence over the global event handlers set in your project’s Start node, and any component-level overrides set in the Enter node for the component of this question and answer node.
Send Data Choose variables or entities to send to the client application.

Add the system question

On the System Question tab, type the desired system prompt—for example, How can I help you today?

The green check mark that appears on the System Question tab indicates that you have fulfilled the basic requirements for this tab, that is, you have defined a message. The message appears on the question and answer node on the canvas.

Prop question answer node initial message

Add a reentry message

  1. Click +Add Reentry Message.
    A blank field appears.
    Prop question answer node reentry message blank
  2. Enter the desired message—for example, What else can I do for you?
    The second time your application reaches this node, and every time after that during a session, it will use this question instead of the initial message.

Remove the reentry message

Click the Remove icon Icon close in the upper-right corner of the Reentry Message area.

Choose the type of information to collect

  1. Under the User Input tab, choose the type of information to collect (NLU intent or entity).
    Prop question answer node user input custom list
    Tip: If your project does not yet have the entity you want to collect, you can create it on the fly.
  2. If this node is meant to collect a list entity whose values are all meant to be handled the same way, turn off all Show in Actions switches.
    Prop question answer node user input show in actions off
    Alternatively, if the entity to collect requires value-specific behaviors, turn on the Show in Actions switches for the desired values.
  3. Optionally, if this node is meant to collect an entity, choose a question router node to handle any captured entity or intent that is not the entity in focus at this point in the dialog flow.

Create an entity on the fly

When setting up a question and answer node, you can create an entity directly from the entity selector. This scenario shows how to add a relationship entity with an isA relationship to the dialog predefined entity YES_NO.

  1. Click the Add icon Icon plus next to Collect Entity.
  2. Type a name for the new entity in the text field and press Enter.
    Note: The name must be unique across all intents, entities and variables in your project.
    The new entity becomes available.
    Prop question answer node user input yes no added
  3. Click the new entity.
    By default new entities appear as list entities, with fields you can use to add literal-value pairs.
    Prop question answer node user input yes no
  4. Choose the appropriate type from the list—in this case, Relationship.
    Prop question answer node user input yes no relationship
    New fields appear.
    Prop question answer node user input yes no relationship2
  5. Click the Add Relationship icon Icon plus next to isA, expand Predefined Entities, and choose YES_NO.
    Prop question answer node user input yes no relationship3
    The relationship is set.
    Prop question answer node user input yes no relationship set

Set a question router reference

The question router reference field identifies the question router node that is to handle any captured entity or intent that is not the entity in focus for this question and answer node.

When you create a node directly from the question routing table of a question router node, or by dropping it from the design palette onto the corresponding area of the question router node on the canvas, the question router reference field automatically points to the originating question router node.

However, in some cases, you must set the question router reference manually:

A missing (or stale) reference will prevent intent switching.

Incidentally, in an intent component that includes question and answer nodes collecting entities that are not handled by the question router node, you can use the question router reference to allow intent switching at these nodes as well. For example, a question and answer node that prompts the user to confirm they really want to stop fulfilling the current intent and switch to another one does not automatically support intent switching itself. Setting the Question Router Reference field will allow the dialog flow to jump to the specified question router node whenever the captured value is not the yes/no answer expected at this question and answer node. The question router node will then handle the intent switching, assuming it is configured accordingly.

To set the reference, expand the (Optional) Question Router Reference section, and choose the desired question router node.

Prop question answer node question router reference

Set the system actions

System Actions tab example in a question and answer node collecting a list entity

Prop question answer node list entity actions

On the System Actions tab, set where to go next, or throw an event. You can add messages, assign variables and define conditions to determine which actions and which transition are to be performed.

If this node is meant to collect an entity handled by a question router node, you must eventually set a transition back to the question router node. You can do it directly from the question and answer node, or from another node further downstream.

To transition back to the question router node that handles the entity in focus for this question and answer node:

  1. Switch to the System Actions tab.
  2. In the Default (or Fallback) section, click Add Action and choose Add GoTo.
    A pair of fields appears.
  3. Expand the GoTo list, then expand Return to, and choose the question router node.

If this node is meant to collect a list entity that does not require any value-specific behavior, use the Default section to set the desired messages and actions. Messages and actions found in the Default section are executed in this order: first all messages, next all variable assignments, and last any throw event action or transition. If you want to both set a variable and use its new value in a message, add the assign actions to the Setup section.

If this node is meant to collect a Boolean entity, a yes/no entity, or a list entity that requires value-specific actions, the System Actions tab allows you to set messages and actions, separately, for each entity value. If desired, you can:

Define interactive elements

In a project with channels that support interactive elements, question and answer nodes meant to collect Boolean, yes/no or custom entities have a tab labeled Interactivity, where you can configure elements such as buttons. To switch to the Interactivity tab, click the arrows Icon chevrons right at the end of the tab bar.

  1. (Optional) In the upper field enter the type of your interactive elements, such as Buttons, List, or Carousel, and the name of a class or inline CSS code to format them, if desired.
    Your dialog application will pass this information on to the client application.
    Note: Formatting of interactive elements is not yet supported. Any information in this two fields is ignored.
    Prop question answer node interactivity yes no
  2. If you do not want to create interactive elements for some values, use the on/off buttons.
  3. For each interactive element you want to configure enter:
    1. A label, such as the text to show on a button—optional if a link is specified
    2. A link (URL or relative path) for the image to use on a button—optional if a label is specified
    3. A description—optional
  4. (Optional) Change the order of the elements, if needed.

Define recovery behaviors

The Recovery tab allows you to define messages to be used when recognition events occur at this node, instead of the global recovery messages defined for your project. To switch to the Recovery tab, click the arrows Icon chevrons right at the end of the tab bar.

Prop question answer node recovery blank

  1. Click +Add Escalation Level
    A button appears allowing you to add a message.
    Prop question answer node recovery add message
  2. Click Add Message, and choose the desired format: Rich Text, TTS, or Audio Script.
    Alternatively, choose an existing message from the list.
  3. Enter the desired message.
    Prop question answer node recovery nm1
    The first time your application fails to recognize the user response at this node, it will use this special message before the system question.
  4. (Optional) Increase the tally value to 2 if you want your application to wait for two consecutive failures before using the message.
  5. Proceed in the same fashion to add more recovery messages, if desired.
    Note: The number of recovery messages the application will be allowed to use at runtime is limited to three messages, but ultimately depends on the collection settings for your project.

Set local event handlers

On the Event Handling tab, add and configure event handlers, if needed. To switch to the Event Handling tab, click the arrows Icon chevrons right at the end of the tab bar.

Prop question answer node event handling tab

On the canvas, the names of the events for which you add local handlers appear below the main transition for the question and answer node.

Design question answer node event handler port

Send data to the client application

On the Send Data tab, choose the variables or entities you want to send to the client application, if needed. To switch to the Send Data tab, click the arrows Icon chevrons right at the end of the tab bar.

Prop question answer node send data

Set up a message node

Message node properties example

Prop message node welcome

Use a message node to play or show a message, and perform actions that don’t require input from the user. Click a message node on the design canvas, to see its properties in the Node properties pane.

Set up a decision node

Decision node properties example

Use a decision node to perform actions that don’t involve messages and don’t require input from the user. For example, you can use a decision node in the intent component that handles dynamic list entities, to check whether you already have the required dynamic entity data for the current session and therefore don’t need to look it up again. You might also use a decision node after a data access node, to check whether information was actually returned (that is, not NULL) and whether some entities collected so far for the current intent need to be cleared and collected again—for example if you look up a product and the data access node returns a Boolean variable indicating this product is momentarily unavailable at the specified location, your design might allow the user to choose a different location, in which case you would clear the entity that represents the location and collect it again.

Click a decision node on the design canvas, to see its properties in the Node properties pane, then click Edit Conditions to expand the conditions table.

Set up a data access node

Data access node properties example

Prop data access node

Use data access nodes to exchange information with a backend system. For example:

Remember that the client application is often better suited than the dialog model to perform business logic, such as verifying whether the specified medication is actually listed in the user’s file and that the maximum number of refills hasn’t yet been reached.

Click a data access node on the design canvas, to see its properties in the Node properties pane.

Specify data to send to the backend

Under Send Data choose the variables and entities you want to send to the backend system, if any. Use the search field to narrow down the list if needed. If the variable you want to send is missing, you can create one on the fly, and then use it immediately. You can also send the current intent value and literal.

Specify data to get from the backend

Under Get Data choose the variables you want the backend system to return, if any. Use the search field to narrow down the list if needed. If the variable you want to get is missing, you can create one on the fly, and then use it immediately.

In addition to data you might get back from the backend system, two predefined variables are always returned to your dialog from the backend:

You do not need to specify these predefined variables in the Get Data section of your data access nodes. However, if you want to validate your data access node’s failure path in preview, add returnCode to the Get Data section, momentarily. This will allow you to enter a non-zero value when the data access node prompts for stub values, in the chat pane.

Create an input or return variable on the fly

In data access nodes (also in external actions nodes), when choosing data to exchange with an external system, you can create variables directly from the Send Data and Get Data selectors.

  1. Click the Add icon Icon plus next to Variables.
    Prop send create variable
  2. Enter a name for the new variable in the field that appears.
    Note: Variable names are limited to letters (A-Z, a-z), digits (0-9), the dollar sign ($) and the underscore. They must not start with a digit. Use underscores as separators, if desired. The name must be unique across all intents, entities and variables in your project.
    The new variable appears in the list, with an indication that its type is String.

You can now choose the new variable. Unless the variable is meant to be of type String (default), you must eventually use the Variables resource panel to complete its definition. See Manage variables.

Specify where to go with the returned data

  1. Set the GoTo transition to perform when the external system returns a success code.
    A success return code means that the dialog was able to communicate with the backend. It does not mean that the backend actually returned the desired data.
  2. Set the GoTo transition to perform when the external system returns a failure code.

Set up backend connection details

By default data access nodes support client-side integration—that is, data is to be exchanged between the dialog runtime service and the client application. In such a case, the client application itself is set up to access any required backend system and no further configuration is required for your data access node.

Otherwise, if your data access node must communicate directly with an external data host, turn off Enable client-side fetching, under Integration, and use the fields that appear to configure server-side integration.
Prop data access server side integration

Refer to Exchange data with an external system for more information on setting up server-side integration (as opposed to client-side integration).

See also: Configure default connection settings for information on creating connection profiles you can apply to multiple data access nodes.

Set up a question router node

Question router node properties example

Prop question router node get coffee details

Use a question router node to manage all entities required to fulfill an intent. The question router node specifies multiple pieces of information to be collected, and determines the next node in the dialog flow, based on the information collected so far. Depending on what the user already provided, when the dialog flows reaches a question router node, some information might already be available. In such cases, the corresponding slots are considered filled, and the question router node directs the dialog flow to the question and answer node that is meant to collect information for the next slot that has yet to be filled. When the dialog flow returns from a question and answer node, more slots might have been filled. Once all slots are filled, the question router node uses the transition under GoTo when questions are completed.

Click a question router node on the design canvas, to see its properties in the Node properties pane.

Replace the default node name, Question Router, with a unique name representing the questions to be fired from this node—for example, Get Order Details—and press Enter.

List the questions

Build a question routing table for your intent by specifying every piece of information to collect—that is, entities you have defined with your NLU intents—, in the desired sequence. For example:

  1. Under Route to questions, choose COFFEE_TYPE.
    A new row automatically appears.
  2. Choose COFFEE_SIZE on the next row.
    Prop question router route to question coffee app
    The application will prompt the user for the type of coffee, before any other information—such as the coffee size—required to fulfill the ORDER_COFFEE intent. This allows you to design your application so that it won’t unnecessarily prompt the user for the coffee size it the specified coffee type only comes in one size. See Set optional entity collection for more details.

Specify where to collect the answers

For each entity in your question routing table:

  1. Expand GoTo collect node.
  2. Expand Add new and choose Question & Answer.
    This connects the question router node to a new question and answer node named after the entity to collect.

Change the order of the questions

  1. Click the sort icon Icon sort in the upper right corner of the question routing table.
    Prop question router node entity sort before
    The table switches to sorting mode, with handles at the end of each row.
    Prop question router node entity sort handles
  2. Use the handles to move rows up or down until all entities are in the desired sequence.
  3. Click the close icon Icon close when you are done.

Set where to go with the answers

Under the question routing table, expand GoTo and choose a node on the canvas or add a new one. In the context of an intent component, you might:

Configure intent switching

In an intent component, you can choose to allow intent switching or not. For example, in a banking app, a user who wants to pay a bill and has started providing the required information might suddenly ask how much money they have in a specific account. By default intent switching is enabled, and when a user says something that is recognized as a different intent, the dialog flow returns to the upstream intent mapper, and any entities collected so far for the current intent persist. Depending on your purposes, before switching to the other intent, you might want to:

Under Switch Intent Action, expand GoTo and set the desired transition:

Set optional entity collection

  1. Click Show Advanced Options.
  2. Enable Skip Input, under the entity for which you want to skip collection under certain conditions.
    Fields appear allowing you to define a condition.
    Prop question router node entity optional in process
  3. Set the condition that determines when the optional entity must be collected.
    For example, since ristretto only comes in one size, you don’t need to ask for the coffee size when the user orders a ristretto, which translates as collect COFFEE_SIZE only if the value of COFFEE_TYPE is not ristretto:
    Prop question router node entity optional condition
  4. Click Hide Advanced Options.

Set up an external actions node

External action nodes support actions to be performed when ending a conversation, transferring to another system, or escalating to a live agent, and allow exchanging information with external systems via a client application. Unlike a data access node, which communicates directly with an external system, an external actions node does not require connection settings.

Click an external actions node on the design canvas, to see its properties in the Node properties pane.

Choose the desired action: End, or Transfer.

End actions

  1. Replace the default name, External Action, with a unique name—for example, End.
    Prop external actions node end
  2. Choose the variables or entities you want the client application to send to an external system, if needed.

Transfer actions

  1. Replace the default name, External Action, with a unique name—for example, Transfer.
    Prop external actions node transfer
  2. If needed, choose information you want the client application to exchange with an external system:
    • Variables or entities you want the client application to send to the external system, or the current intent value or literal
    • Variables to be returned
  3. Set the GoTo transition to perform when the external system returns a success code.
    A success return code means that the user was successfully transferred, in which the dialog typically ends after performing any required end-of-dialog business logic.
  4. Set the GoTo transition to perform when the external system returns a failure code.
    A failure return code means that the user could not be transferred, in which case you might need to ask them what they would like to do next—for example try again, or abandon what they were trying to do and end the dialog.

Tips: Use the search fields to narrow down the lists of variables and entities, if needed, when choosing the information to exchange. If the variable you want to use is missing, you can create one on the fly, and then use it immediately

Set messages and actions

At every node in a dialog, messages and actions (such as transitions, assignments, an so on) are performed. Messages and actions can be conditional. When you set messages or actions for a node, you can use existing resources or, in some cases, create new resources on the fly. For example, when you add a message to a message node, you can use an existing message or create a new one. Likewise, when you add an assign action, you can use an existing variable, or create a new one.

Item Description
Message In Mix.dialog, message nodes use messages that do not require the user to respond, while question and answer nodes use messages meant to engage the user by asking questions to collect required information. While the Messages resource panel allows you to manage all messages for your project, you can create messages directly from the nodes at which they are meant to be used. You can also create default global messages from the Project Settings panel.
Assign Question and answer nodes, message nodes, and decision nodes support assigning values to variables and entity attributes, with our without a condition. You can also initialize variables in Start and Enter nodes. The set of variables, entities, operators and methods available on the right-hand side of an assign action depends on the type of the variable or entity on the left-hand side.
Transition A transition identifies the next node to execute after completing an action. Choose the appropriate transition type based on where the target node is located and the purpose of the transition.
Throw event Use throw event actions, in question and answer nodes, message nodes, or decision nodes, to throw custom events. It is also possible use a throw action to throw a global command event, if you want to handle a situation the same way as the corresponding global command—for example, if you want to transfer the user to a live agent to handle some error situations where a maximum threshold is reached, you can set a throw event action to throw the Escalate event.
Condition Use conditions to determine the next message or action, based on logical expressions.

Set messages

When configuring message nodes and question and answer nodes, you can add one or more messages directly in the Node properties pane.

The Project Settings panel allows you to create default global messages that your application will use whenever a recognition event (such as a failure to collect or recognize what the user said) occurs. The question and answer nodes support recovery messages to override global behaviors locally, at the node level.

To support language-specific messages, choose the desired language from the menu near the name of the project.

You can define separate channel-specific message variations. You can also add message variations in up to three different formats—rich text, TTS, audio script—depending on the channel. Messages defined for the default channel apply to all channels unless a channel-specific variation exists. Messages defined for a non-default channel—and their format-specific variations—are only used in that channel.

You can use HTML code in text messages, SSML in TTS messages, or CPR in audio script messages.

You can create dynamic messages by adding annotations that represent variables, entities, or the current intent, to be inserted in the message at runtime.

Message annotations have distinctive background colors:

Color Annotation type
Blue Variable
Sea blue Entity value
Sea blue with quotes Entity literal
Green Current intent value
Green with quotes Current intent literal

When you add a message, Mix.dialog automatically gives it a normalized name, based on the text of the message—for example, if you enter How may I help you? the name of the message is automatically set to how_may_i_help_you_. You can rename messages, if desired.

Add a message

When you create a message node it already has one blank field where to set a message. Likewise, a new question and answer node has one blank field for setting the system question. The steps you must perform for adding more messages depend on where you want to add them.

Add a message above or between existing messages or actions

  1. Bring your pointer to the area above the appropriate row.
    A link appears allowing you to add a new row.
    Prop add row
  2. Click +Add Row, and then click +Message.
    Prop add row+message
    A blank field appears, allowing you to define a message.

Add a message below all existing messages and actions

  1. Click the Add action icon Icon plus, and then click Add Message.
    Prop add message after all other items
  2. Choose the desired message format.
    Alternatively, choose an existing message.
    Prop add message choose format or existing

Use an existing message

  1. Click New Message (above a blank message field), or the message ID (if there is already a message in the field).
    A list appears showing all messages in your project.
    Use the Search box to narrow down the list, if desired. Only messages whose text or name contains the search string remain in the list.
    Prop add message existing filtered list
  2. Choose the desired message from the list.
    The message appears in the field.

Duplicate a message

  1. Click the Copy icon Icon copy below the message.
    Prop message existing
    A copy of the original message appears, with a distinct message name (a numeric suffix is appended to the original message name).
    Prop message duplicated
  2. Modify the new message as desired.
    Prop message duplicated and edited

Open the Messages panel from a message

Click the Library icon Icon library below the message.
The Messages resource panel opens, and your message is in focus. See Manage messages, for more information.

Remove a message

Click the Remove icon Icon trash below the message.
This removes the message from the current context (node properties, or project settings). The original message remains in your project.

Add a format-specific version for a message

  1. Click the Add format icon Icon plus.
    Prop message add format
  2. Choose the desired format.
    Prop message format choose
    A new blank field appears.
    Prop message tts blank
  3. Enter the text you want to use when the message must be in the specified format.

Remove a format-specific message

Clear the field where the format-specific version appears.
This removes the field.

Add a dynamic message

As you type any message, you can specify placeholders to be replaced at runtime according to what the user said or according to what happened during the interaction. Make sure your design includes actions to initialize the variables or to collect the entities or the intent you specified.

  1. Start typing your message.
  2. When you reach the point where you want to insert a placeholder for a variable or entity:
    1. Type a left square bracket ([).
      A menu appears.
      Message annotate start
    2. Expand the appropriate category: Variables, if you want insert the placeholder for a variable; Entities, for an entity; or Intent for the current intent.
      Message annotate menu entity
    3. Choose the variable or entity you want to use, or the current intent.
      Depending on the type of element, you might have to choose between different attributes, such as the element’s value or literal, its length, and so on.
    4. The name of the dynamic element you chose appears as highlighted text in your message.
      Message annotate entity added
  3. Complete your message.
    Message annotate complete

Annotate a message

You can annotate an existing message to add dynamic placeholders for variables or entities.

  1. Highlight the part of your message you want to replace with a dynamic placeholder.
    A menu appears.
  2. Expand the appropriate category and choose the variable or entity you want to use.
    The highlighted text now represents the specified entity or variable.
    Message annotate existing complete

Remove an annotation in a message

  1. Bring your pointer to the annotation you want to undo.
    A popup appears.
    Message annotate remove tag
  2. Click Remove Tag.
    Only static text from the former annotation remains.
    Message annotate remove tag done

Set assign actions

Use assign actions to set the value of variables or entity attributes—for example:

Some elements have a distinctive background color, when they appear on the right-hand side of an assign action:

Color Element type
Blue Variable
Sea blue Entity value
Sea blue with quotes Entity literal
Green Current intent value or current intent literal
Pink Method
Magenta NULL

Add an assign action

The steps you must perform for adding an assign action depend on where you want to add it.

Add an assign action above or between existing messages or actions

  1. Bring your pointer to the area above the appropriate row.
    A link appears allowing you to add a new row.
    Prop add row
  2. Click +Add Row, and then click +Set.
    Prop add row+set
    Blank fields appear, allowing you to define the action.
    Prop assign variable initial

Add an assign action below all existing messages and actions

  1. Click the Add action icon Icon plus, and then click Add Action.
    Prop add message after all other items
  2. Choose Set Variable.
    Prop add set action after all other items
    Blank fields appear.
    Prop assign variable initial

Assign a value to a variable or entity attribute

  1. Choose the desired variable from the Set list.
    Prop assign variable lhs
    Tips:
    Use the search field to narrow down the list if needed.
    Click a complex variable to see its fields.
    Prop assign complex variable Click an entity to see its attributes.
    Prop assign entity attribute
    Tip: If the variable you want to use is missing, you can create a variable on the fly, and then use it immediately.
    A second field appears.
    Prop assign variable rhs blank
  2. Depending on the variable’s type, enter a value, an expression, or choose another variable or an entity.
    Prop assign variable rhs set

Clear an entity

Clearing an entity allows you to use it again during the same dialog session. For example, your dialog might include multiple question and answer nodes that collect a yes/no entity, or might allow the user to stop providing information to fulfill the current intent and start over afresh. Clearing an entity sets its .value and .literal attributes to NULL, .isRequired to true, .isConfirmed and .isCompleted to false.

  1. Navigate to the entity you want to clear.
    Prop assign entity clear yesno
  2. Choose .clear().
    Prop assign entity clear

Clear a complex variable

Assign NULL to a variable when you don't need it anymore. For example, your dialog might use a complex variable to hold a customer’s first name, last name, and a list of bank accounts, for a fund transfer intent. Once the fund transfer is completed, setting the complex variable to NULL allows you to use it again for another transaction during the same dialog session. This is similar to clearing an entity.

  1. Choose the complex variable you want to clear (use the top-level object).
    Prop assign complex variable obj
    The complex variable object appears in the Set field, followed by a blank field.
    Prop assign complex variable obj blank field for rhs operand
  2. Expand the To list.
    Prop assign complex variable rhs null
  3. Choose NULL.
    Prop assign complex variable rhs null set

Use a mathematical expression

A variable of type integer can be set to the value of an arithmetic operation (addition, subtraction, multiplication, division, or percentage). Mix.dialog supports simple mathematical expressions involving:

This example shows how to increment a variable to use it as a counter. (It assumes your design includes actions to initialize this variable, and reset it if needed.)

  1. Choose the variable you want to set—for example, count, an integer.
    Prop assign var integer lhs
  2. Click the Add icon Icon plus and choose the same variable.
    Prop assign var integer expression lhs
  3. Click the Add icon Icon plus again, and choose the desired operator—in this case, the + sign.
    Prop assign var integer expression oper
  4. Enter the number by which you want to increment the counter.
    Prop assign var integer expression rhs constant

Use a random number

A variable of type integer can be set to a random value between 1 and a number you specify. In this example, a variable is assigned a random integer value between 1 and 6. Once you have set a variable to a random value you can use it in conditions, for example to play a random greeting message when your application starts, or to perform a random transition.

  1. Choose the variable you want to set—for example, lotto, an integer.
    Prop assign var random lhs
  2. Click the Add icon Icon plus and choose Integer.random(…) under Helper Functions.
    Prop assign var random helper function
  3. Enter the desired number in the bottom field.
    Prop assign var random rhs

Create a variable on the fly

When adding a set variable action, you can create a variable directly from the selector.

  1. Click the Add icon Icon plus next to Variables.
    Prop assign create variable
  2. Enter a name for the new variable in the field that appears.
    Note: Variable names are limited to letters (A-Z, a-z), digits (0-9), the dollar sign ($) and the underscore. They must not start with a digit. Use underscores as separators, if desired. The name must be unique across all intents, entities and variables in your project.
    Prop assign create variable add name
    The new variable appears in the list, with an indication that its type is undefined.
    Prop assign create variable undefined

Unless the variable is of type String (default), you must eventually use the Variables resource panel to complete its definition, before you can set the value. See Manage variables.

Delete an assign action

Click the More icon Icon ellipsis h for the action you want to remove, and choose Delete.
Prop assign variable menu expanded

Set transitions

A transition identifies the next node to execute after completing an action. Distinctive elements represent transitions between nodes on the canvas. Mix.dialog supports these transition types:

Transition type Appearance Description
GoTo Arrow between two nodes on the canvas. Color-coded by channel. Gray (default) represents a transition that applies to all channels. Other colors represent channel-specific transitions. Transitions to another node within the same dialog component.
Return To Icon transition return to Returns any collected entity information back to a question router node.
Return Icon transition return Returns to the intent mapper node or component call node that called the current component from another component. Not available in the component called Main.
Return to Intent Mapper Icon transition return to intent mapper Returns to the upstream intent mapper node when a user says something that is recognized as an intent, while entities are being collected to fulfill a different intent. Requires intent switching to be enabled, in the question router node that handles the entities for the current intent.

Setting up a question router node determines transitions to other nodes from which the dialog flow should eventually return—via a Return To transition—after having collected information for entities handled by the question router node.

Setting up an intent mapper node determines transitions to other nodes or to other components that handle the intents in your project. When a separate component handles an intent the dialog flow must eventually return to the intent mapper via a Return transition.

Similarly, if your design uses component call nodes to transition to separate components that handle specific parts of the dialog flow, such a component should eventually use a Return transition to go back to the node from where it was called.

Set throw event actions

Use throw event actions, in question and answer nodes, message nodes, or decision nodes, to throw custom events.

Add a throw event action

The steps you must perform for adding a throw event action depend on where you want to add it.

Throw an event above or between existing messages or actions

  1. Bring your pointer to the area above the appropriate row.
    A link appears allowing you to add a new row.
    Prop add row
  2. Click +Add Row, and then click +Event.
    Prop add row+event
    Blank fields appear, allowing you to define the action.

Throw an event below all existing messages and actions

  1. Click the Add action icon Icon plus, and then click Add Action.
    Prop add message after all other items
  2. Choose Throw Event.
    Prop add throw action after all other items
    Blank fields appear.
    Prop add throw blank
  3. Choose the event you want to throw.
    Prop throw event choose
  4. (Optional) Type a description or text to be logged when the event is thrown.

Delete a throw event action

Click the More icon Icon ellipsis h for the action you want to remove, and choose Delete.
Prop throw event menu expanded

Set conditions

Use conditions to determine the next action based on logical expressions. For example:

You can define conditions in these context:

Show the condition table

Click Edit Conditions.
The Node properties pane expands, revealing the condition table.

Hide the condition table

Click Done Editing.
The Node properties pane reverts to its default state, showing only the actions.

Define a simple condition

  1. On the first row of a condition table expand the first list (Always) and choose If.
    A set of fields appears, allowing you to build an expression.
    Condition if statement blank
  2. Choose an element (such as a variable or entity) from the second list.
    Condition if statement lhs
  3. Replace the default operator (is equal to) with another one from the third list, if needed.
  4. Choose the desired element from the fourth list (such as a variable, an entity, or NULL), or enter a static value.
    Condition if statement rhs
  5. Set the action to perform under this condition: assign a variable, play a message, or transition to another node.

Add a row at the bottom of a condition table

Use the desired button: Add Message, or Add Action.
Condition table bottom row actions

In some cases, depending on the node type and context, only one of these buttons is available. For example, in the System Question tab of a question and answer node, it is only possible to add messages.

Add a row at the top or between rows of a condition table

  1. Bring your pointer to the area above the appropriate row. A link appears allowing you to add a new row.
    Prop cond add row
  2. Click +Add Row, and then click +Message, +Set, +GoTo, or +Event, depending on what you want the new row to handle.
    Prop cond add row message
    A new row appears, with a default condition of Always and the required blank fields to define the desired message or action.

Remove a row in the condition table

  1. Click the delete icon Icon trashon the row you want to remove.
    A message appears prompting you to confirm your intention.
  2. Click Confirm.

Add a message or an action in a condition row

  1. Click the Add action icon Icon plus below an action item to add a message or another action to perform under this same condition.
    Condition if statement message add other
  2. Use the desired button: Add Message, or Add Action.
    Condition if statement message add other choose
    For example, click Add Action and choose Add GoTo.
    The required blank fields to define the desired message or action appear.
    Condition if statement message add goto

Remove a message in a condition row

Click the Remove icon Icon trash below the message.

Remove an action in a condition row

Click the More icon Icon ellipsis h for the action you want to remove, and choose Delete.

Manage resources

All resources in a dialog project have a global scope, which means you can use them anywhere in your dialog design. A dialog flow involves these resource types:

Resource Description
Intent An intent is what a user is trying to accomplish—for example, booking a flight, or checking the current status of a flight.
Entity Entities are details the user might need to provide to fulfill an intent. For example, in the scenario where a user wants to book a flight, the origin, the destination, the departure time, and the arrival time are entities.
Variable Variables are named objects that store values to be used in the applications you build from your dialog project.
Message Messages allow your application to respond to what a user says, in the most specific and relevant way to help them accomplish what they want to do. In Mix.dialog, a message can have format-specific and channel-specific variants. The available message formats—Rich Text (default), TTS, or Audio Script—depend on the modalities that the active channel profile supports. Channels and the modalities they support are determined when you create a project.
Event An event interrupts the current call flow, and passes flow control to an event handler. Events are available for throw actions you can set in most node types, and for event handlers you can set at the project level, at a component level, or in a question and answer node. Configure global event handlers in the Start node for your project, component-level event handlers in the Enter node of a component, node-level handler in the Event Handling tab of a question and answer node.

Manage intents

In Mix.dialog you can use the NLU resource panel to manage intents and entities. Any changes you make to intents or entities in Mix.dialog become available in Mix.nlu, and vice versa. Use Mix.nlu to link entities to intents, by adding samples and annotating them. Associating each intent with a variety of representative utterances allows your application to be able to recognize what the user said in their own words. Refer to the Mix.nlu documentation for more information.

Open the NLU resource panel

Click NLU, on the Mix.dialog toolbar, to open the NLU resource panel.
(Click NLU again to close the panel.)
Panel nlu intents

Add an intent

  1. Click the Add icon Icon plus.
  2. Type a unique name for the intent—for example, ORDER_COFFEE—and press Enter.
    Note: Intent names must not start with a number and cannot include spaces. Use underscores as separators if desired. The name must be unique across all intents, entities and variables in your project.

Rename an intent

  1. In the Intents list, click the intent you want to rename.
    The name becomes editable.
  2. Modify the name as desired.
    Note: Intent names must not start with a number and cannot include spaces. Use underscores as separators if desired. The name must be unique across all intents, entities and variables in your project.

Delete an intent

  1. In the Intents list, click the Delete icon next to the intent you want to delete.
    A message appears prompting you to confirm your intention.
  2. Click Confirm.

Add an intent component

Click the +Create Intent Component button, next to the name of the intent you want to handle as a separate component.

This maps the intent to the new intent component. The new intent component appears in the Intent Components section of the Components pane.

Note: Mix.dialog automatically maps an intent with an intent component if they have the same name (see Rename a component).

The number of intents already mapped to intent components appears on Intent Mapper nodes on the canvas. Use an intent mapper node to map multiple intents to a single intent component. An intent mapper node also allows you to map an intent to a generic component or to a specific node in your dialog design.

Switch to an intent component from the NLU panel

Click the name of a mapped intent component to bring the intent component into focus in the center pane. Close the NLU panel to further design the component.

Manage entities

In Mix.dialog you can use the NLU panel to manage entities. You can also create entities on the fly from question and answer nodes. Any changes you make to entities in Mix.dialog become available in Mix.nlu, and vice versa. Use Mix.nlu to link entities to intents by adding sample sentences and annotating them (refer to the Mix.nlu documentation).

Entity attributes

Entities have these attributes:

Attribute Type Description
.literal String The exact words collected for the entity.
.value Any The recognized value, in the format specified for the entity. An entity that has not yet been collected does not have a value and is considered null. Use the .clear() method in an assign action to reset an entity to this null state.
.isCompleted Boolean true if the entity has a value that is considered valid; otherwise false. By default, question router nodes automatically set .isCompleted to true, for the entities they handle, whenever question and answer nodes return with collected values. You can enable Manual Complete for an entity, in the question router node that handles it, if your dialog design requires this attribute to be set manually.
.isRequired Boolean true if the entity is required for the associated intent; otherwise false.
.isConfirmed Boolean true if the entity has a value that does not require further confirmation; otherwise false.

If business logic requires setting entity attributes manually, make sure you set assign actions at the appropriate nodes in your dialog.

Note: Clearing an entity sets its .value and .literal attributes to NULL, .isRequired to true, .isConfirmed and .isCompleted to false. You cannot change the .literal attribute of an entity (except by clearing the entity).

List entities

The default type for a custom entity, List, represents a list of possible values.

For list entities, literals and values are language-specific, whereas the entities themselves are common to all languages. When you add an entity value, it only applies to the current language in your project. To support language-specific requests, choose the desired language from the menu near the name of the project, and add literal-value pairs as required.

When you attempt to delete the last literal for a specific value, Mix warns you that you will be permanently deleting not only the (last) literal but also the entity value itself for the current languages, and prompts you to confirm the deletion.

In a dialog that collects a list entity, the next step might need to be different for each possible value, or it might be the same for all possible values. It is also possible for your application to perform exclusive actions for some values, and proceed via a common path for all other values. You determine the required behavior for a list entity—that is, whether all values are handled the same way, or individual values determine different paths—, when you set up the question and answer node that collects the entity.

Dynamic list entities

When you create your NLU model, you might realize that, for some list entities, the set of values can only be fully determined at runtime. For example, the set of contacts for a user is specific to that user. Another example is the list of products available at a specific location (such as the restaurant branch closest to the user’s current position), or on specific occasions (seasonal products, holiday products), and so on. For such purposes, you can define dynamic list entities, and rely on the client application to make additional literal-value pairs available to the dialog, at runtime, via a data access node.

Workflow for using a dynamic list entity

  1. Add a list entity, and mark it as dynamic.
  2. Add a few representative literal-value pairs for the dynamic list entity.
  3. Create a variable of type Dynamic Entity Data.
  4. Set up a data access node using your dynamic entity data variable to get additional values for your dynamic entity, from the appropriate external system, at runtime.
  5. Set up a question and answer node to collect your dynamic list entity.
  6. In Mix.nlu, make sure you have annotated some samples with your dynamic list entity, and that your NLU model has been trained.
  7. Preview your dialog design.
    When the dialog reaches the data access node that is meant to return the dynamic entity data variable:
    1. Choose the dynamic list entity to be extended with data from your dynamic entity data variable.
    2. Use the fields that appear to enter literal-value pairs (and define interactive elements if needed).
      Tip: Use Copy to Clipboard and save the JSON representation of the stub data, to be able to use the JSON bulk input feature the next time you must provide stub data at this data access node.

Dynamic entity data specification

Dynamic entity data variable example

{
    "moreCoffeeTypes": {
        "COFFEE_TYPE": [{
                "canonical": "cold brew",
                "literal": "cold brew"
            }, {
                "canonical": "iced cappuccino",
                "literal": "iced cappuccino"
            }
        ]
    }
}

The Nuance Mix Platform’s NLU and ASR services support dynamic list entities by using inline wordsets. In Mix.dialog, when using the TRY tab to preview your dialog design, the stub data you provide at a data access node is a JSON representation that includes both the inline wordset and data to support interactivity. For more information on using wordsets to extend your NLU and ASR models, refer to the gRPC API documentation for NLU as a Service, and ASR as a Service.

Dynamic entity data variable object

Represents a dynamic entity data variable returned by a data access node.

Element Type Description
variable Dynamic entity data object Where variable is the dynamic entity data variable specified in the data access node
Dynamic entity data object

Represents dynamic entity data for a dynamic list entity.

Element Type Description
entity Array of Dynamic entity data items Where entity is the dynamic list entity to be extended with the dynamic entity data
Dynamic entity data item

Represents an additional value for a dynamic list entity, and attributes to support interactivity for the value.

Element Type Description
canonical String (Optional) The value of the entity
literal String The written or spoken form of the value; doubles as the value when canonical is omitted
spoken Array (Optional) One or more additional spoken forms of the value—used by ASR; ignored for NLU
label String (Optional) A label, such as the text to show on a button
image_url String (Optional) A link (URL or relative path) for the image to use on a button
description String (Optional) A description

Relationship entities

A relationship entity has a specific relationship to an existing entity, either the isA or hasA relationship. For example, for an airline application, the entities that represent departure and arrival airports typically have the same possible values. If you first create a list entity (for example, CITY) to represent all the airports served by the airline, you can share its definition with other entities meant to represent departure and arrival cities by making these isA relationship entities: for example, ORIGIN isA CITY, and DESTINATION isA CITY. Assuming your NLU model has representative samples annotated with ORIGIN and DESTINATION, the application will be able to recognize what a user means when they say, for example, “I would like to book a flight to Barcelona from Helsinki.” Refer to the Mix.nlu documentation for more information.

Freeform entities

A freeform entity is used to capture user input that you cannot enumerate in a list. For example, a text message body could be any sequence of words of any length. Unlike other entity types, for which the keywords in the user input that allow the NLU service to recognize an entity are directly associated with the entity values, a freeform entity is like a black hole—at runtime, the NLU service relies on the surrounding text to identify where the entity itself starts and ends. When the user says, for example, "Send Joe this message: I'll be there tonight," the words "this message" are what tells the NLU service that what follows is the freeform entity to collect. Refer to the Mix.nlu documentation for details.

Regex-based entities

A regex-based entity defines a set of values using a regular expression. For example, to match account numbers, postal (zip) codes, order numbers, and other pattern-based formats. Refer to the Mix.nlu documentation for details.

Predefined entities in Mix.dialog

Mix.nlu shares with Mix.dialog a set of predefined entities from data packs installed with your Mix platform. Mix.dialog supports these:

In addition to the entities from the data packs, Mix also provides a set of dialog-specific predefined entities. Mix.dialog supports these:

Show the Entities tab of the NLU resource panel

Click NLU, on the toolbar, to open the NLU resource panel, and then switch to the Entities tab.
(Click NLU again to close the panel.)
Panel nlu entities

Add an entity

  1. Choose the desired input format from the input format list.
  2. Click the Add icon Icon plus.
  3. Type a unique name for the entity—for example, COFFEE_SIZE—and press Enter.
    The new entity appears in the list of custom entities.
    Note: Entity names must not start with a number and cannot include spaces. Use underscores as separators if desired. The name must be unique across all intents, entities and variables in your project.
  4. If this entity is not a simple list entity (default), set its type:
    1. Dynamic list entity
    2. Freeform entity
    3. Regex-based entity

Rename an entity

  1. In the list of custom entities, click the entity you want to rename.
    Alternatively, choose the entity from the list in the upper-right area of the panel.
    Tip: Use the Input format list, or the text filter box, to narrow down the list.
  2. Click the Edit icon Icon edit next to the selected entity in the upper-right area of the panel.
    The name becomes editable.
  3. Modify the name as desired.
    Note: Entity names must not start with a number and cannot include spaces. Use underscores as separators if desired. The name must be unique across all intents, entities and variables in your project.

Delete an entity

Note: You can delete an entity only if your project does not use it.

  1. In the list of custom entities, click the entity you want to delete.
    Alternatively, choose the entity from the list in the upper-right area of the panel.
    Tip: Use the Input format list, or the text filter box, to narrow down the list.
  2. Click the Delete icon Icon trash next to the selected entity in the upper-right area of the panel.
    A message appears prompting you to confirm your intention.
  3. Click Confirm.

Add literals for a list entity

  1. In the list of custom entities, click the entity for which you want to add literals.
    Alternatively, choose the entity from the Entity list in the upper-right area of the panel.
    Tip: Use the Input format list, or the text filter box, to narrow down the list.
  2. Use the fields under Literals, in the area on the right-hand side, to add a few representative literal-value pairs.
    The literal text automatically doubles as the value, by default. You can type a different value before pressing Enter. Multiple literals can have the same value, to help your application recognize the different ways a user might say an entity. After you typed the literal text, press Tab and overwrite the default value when appropriate.

Delete a value

  1. In the list of custom entities, click the entity for which you want to delete a literal-value pair.
    Alternatively, choose the entity from the Entity list in the upper-right area of the panel.
    Tip: Use the Input format list, or the text filter box, to narrow down the list.
  2. Click the Delete icon Icon trash next to the value you want to delete.
    A message appears prompting you to confirm to confirm your intention.
  3. Click Yes, Delete.
    The value and all associated literals are no longer available.

Delete a literal

  1. In the list of custom entities, click the entity for which you want to delete a literal-value pair.
    Alternatively, choose the entity from the Entity list in the upper-right area of the panel.
    Tip: Use the Input format list, or the text filter box, to narrow down the list.
  2. Click the Delete Literal icon next to the literal you want to delete.
    Entity delete literal
    A message appears prompting you to confirm your intention.
  3. Click Yes, Delete Literal.

Mark a list entity as dynamic

  1. In the list of custom entities, click the entity you want to use as a dynamic list entity.
    Alternatively, choose the entity from the Entity list in the upper-right area of the panel.
    Tip: Use the Input format list, or the text filter box, to narrow down the list.
  2. Click the Dynamic check box under the selected entity in the upper-right area of the panel.

Manage variables

In Mix.dialog use the Variables resource panel to manage variables in the current dialog project. For example, you can use a variable:

The Variables panel organizes your variables into these categories:

Category Description
Undefined Variables whose data type has yet to be set. In some situations, you might prefer to quickly add a variable and wait until later to fully define its data type. For example, while setting up a node, you realize you need a new variable to store a value: you can add a variable on the fly and start using it immediately. The new variable is considered undefined, until you set its data type, upon which it will appear under Simple, or under Data Objects.
Simple Variables of type string (default), Boolean, date, time, integer, list, or dynamic entity data. Note: Use dynamic entity data variables to support dynamic list entities.
Data Objects In Mix.dialog, data objects represent complex variables comprising multiple variables, including nested data objects. For example, the data object for a person might include the person’s name, address, phone number, date of birth, and so on, where the address is also a data object specifying street number, street name, city, and so on. Before adding complex variables you must first define their underlying schema. A complex variable is always based on a schema.
Schemas A schema represents the structure of a complex variable. You can create multiple data objects based on a common schema. For example, the schema for a postal address may appear in the schemas that represent a user, a company, and so on.

All dialog projects have these predefined variables:

Variable Description
language Holds the current language and is initially set to the default language for your project
returnCode Holds the return code for data access nodes
returnMessage Holds a message that describes the meaning of the return code

Open the Variables resource panel

Click Variables, on the Mix.dialog toolbar, to open the Variables resource panel.
(Click Variables again to close the panel.)
Panel variables simple

Create a simple variable

  1. Click the Add icon Icon plus, next to Simple.
  2. Type a unique name for the variable and press Enter.
    The new variable appears in the Simple list.
    Note: Variable names are limited to letters (A-Z, a-z), digits (0-9), the dollar sign ($) and the underscore. They must not start with a digit. Use underscores as separators, if desired. The name must be unique across all intents, entities and variables in your project.
  3. On the right-hand side of the panel, choose the desired variable type from the Type list:
    • String (default)
    • Boolean
    • Date
    • Time
    • Integer
    • List
    • Dynamic Entity Data
  4. (Optional) Add a display value, to be used when previewing your design.
  5. (Optional) Add notes, if desired.

Set the type of an undefined variable

  1. In the left-hand pane of the Variables panel, expand the Undefined category, if needed, and click the variable whose type you want to set.
  2. On the right-hand side of the panel, choose the appropriate category: Simple, or Object.
    Panel variables undefined set category
  3. If you chose Simple, now choose the desired type from the second list that appears: String (default), Boolean, Date, Time, Integer, List, or Dynamic Entity Data.
    Panel variables simple set type
  4. If you chose Object, now choose the appropriate schema from the second list.
    Panel variables complex set schema

Rename a variable

  1. In the left-hand pane of the Variables panel, expand the appropriate category, if needed, and click the variable you want to rename.
  2. In the right-hand pane of the panel, click the variable name.
    The name becomes editable.
  3. Modify the name as desired.
    Note: Variable names are limited to letters (A-Z, a-z), digits (0-9), the dollar sign ($) and the underscore. They must not start with a digit. Use underscores as separators, if desired. The name must be unique across all intents, entities and variables in your project.

Delete a variable

Note: You can delete a variable only if there are no references to it in your design. To remove stray variable references from your design, see review the variable’s usage information.

  1. In the left-hand pane of the Variables panel, expand the appropriate category, if needed, and click the variable you want to delete.
  2. In the upper-right corner of the panel, click the Delete icon.
    A message appears prompting you to confirm your intention.
  3. Click Confirm.

View usage information for a variable

  1. In the left-hand pane of the Variables panel, expand the appropriate category, if needed, and click the desired variable.
    The number of references to this variable in the current project appears, as a button, next to the variable’s name in the right-hand pane.
    Panel variables usage count
  2. Click the button to see the nodes whose properties include references to this variable.
    Panel variables usage count expanded
  3. Click a node in the list.
    The Variables panel closes and the selected node is in focus on the design canvas. You can review the references to the variable in the Properties pane.

Create a schema

  1. Click the Add icon Icon plus next to Schema.
  2. Type a unique name for the schema and press Enter.
    The new schema appears in the Schema list.
    Panel variables schema initial
  3. Use the fields under Add to Schema, in the area on the right-hand side of the panel, to add the desired fields and set their type.
    Panel variables schema simple

Rename a schema

  1. In the left-hand pane of the Variables panel, expand the Schema category, if needed, and click the schema you want to rename.
  2. In the right-hand pane of the panel, click the schema name.
    The name becomes editable.
  3. Modify the name as desired.

Delete a schema

  1. In the left-hand pane of the Variables panel, expand the Schema category, if needed, and click the schema you want to delete.
  2. In the upper-right corner of the panel, click the Delete icon.
    A message appears prompting you to confirm your intention.
  3. Click Confirm.

Rename a field in a schema

  1. In the left-hand pane of the Variables panel, click the desired schema.
  2. In the right-hand pane of the panel, click the field you want to rename.
    The name becomes editable.
  3. Modify the name as desired.
    Note: Like simple variable names, complex variable field names are limited to letters (A-Z, a-z), digits (0-9), the dollar sign ($) and the underscore. They must not start with a digit. Use underscores as separators, if desired. The name must be unique across all intents, entities and variables in your project.

Change the type of a field in a schema

  1. In the left-hand pane of the Variables panel, expand the appropriate schema, and click the field whose type you want to change.
  2. Use the fields under Type, in the area on the right-hand side of the panel, to set the desired type.
  3. (Optional) Add a display value, or notes, if desired.

Delete a field in a schema

  1. In the left-hand pane of the Variables panel, click the appropriate schema.
  2. In the right-hand pane of the panel, click the Delete icon next to the name of the field you want to delete.

Create a complex variable

  1. Click the Add icon Icon plus next to Data Objects.
  2. Type a unique name for the complex variable and press Enter.
    The new complex variable appears in the Data Objects list.
  3. On the right-hand side of the panel, choose the desired schema from the second list, under Type.
    Panel variables complex added

Manage messages

Messages resource panel example, Table View

Panel messages table view

The Messages resource panel allows you to manage all messages in your project. When you set a message in a node, or in the Project Settings panel, or directly in the Messages resource panel, it becomes available for reuse anywhere within your project. To support language-specific messages, choose the desired language from the menu near the name of the project.

Open the Messages resource panel

Click Messages, on the toolbar, to open the Messages resource panel.
(Click Messages again to close the panel.)

Add a message for your project

  1. Click the Add icon Icon plus in the upper-right corner of the Messages list.
    A new message skeleton appears in the list.
  2. Enter the text to be used by default for this message.
    Mix.dialog automatically generates a name for the message, based on the text of the message. You can rename the message, if desired.
  3. (Optional) Add format-specific variations, if desired.
    Panel messages multiformat sample
  4. (Optional) Under Channel Overrides, enter channel-specific variations, if desired.
    Panel messages multichannel sample

Find a message

Use the text filter box in the upper-right corner of the Messages list, to narrow down the list to only messages that include the specified text—in their name or within their content.
Panel messages filter

Edit a message

  1. In the list of messages, click the message you want to edit.
    Tip: Use the text filter box, to narrow down the list.
    The message details appear in the right-hand area of the panel.
  2. Modify the text of the default message, or the channel-specific or format-specific variations, as desired.
    Tip: In a dynamic message, you can safely edit the text of any annotation—this does not break the link with the dynamic element (variable, entity, or the current intent) represented by the annotation.

Translate a message

  1. In the list of messages, click the message you want to translate (or view) in another language.
    Tip: Use the text filter box, to narrow down the list.
    The message details appear in the right-hand area of the panel.
  2. (Optional) Copy the original text of the message to your clipboard.
  3. Choose the desired language from the menu on the toolbar of the Messages resource panel.
    This menu allows you to alternate between language-specific versions of the selected message without changing the current design language.
    Panel messages language menu
  4. (Optional) Paste the original text into one of the available message field.
  5. Translate the message text.
    Panel messages language french
  6. Add channel-specific or format-specific variations, as desired.

Rename a message

  1. In the list of messages, click the message you want to rename.
    Tip: Use the text filter box, to narrow down the list.
    The message details appear in the right-hand area of the panel.
  2. Modify the name as desired.
    Note: Message names are limited to alphanumeric characters and underscores.

Delete a message

  1. In the list of messages, click the message you want to delete.
    Tip: Use the text filter box, to narrow down the list.
    The message details appear in the right-hand area of the panel.
  2. Click the Delete icon in the upper-right corner of the details pane.
    Panel messages delete
    Note: Delete is available only for messages that are not used in the project.

Find nodes that use a message

  1. In the list of messages, click the message of interest.
    Tip: Use the text filter box, to narrow down the list.
    The message details appear in the right-hand area of the panel, including the number of references for this message, next to the message name.
    Panel messages usage count
  2. Click the usage count.
    A list of all nodes currently using the selected message appear.
    Panel messages usage references
  3. (Optional) Click a node in the list to bring that node into focus in your dialog design.

Manage events

Events resource panel showing all predefined events and one custom event

Panel events

All dialog projects have these predefined events:

Category Events
Global commands Escalate, Goodbye, MainMenu
Conversation MaxTurns
Collection MaxNomatch, MaxNoinput
Recognition MaxInvalidRecoOption, MaxNoToConfirm
Generic GenericError, GenericEvent

You cannot delete or rename the predefined events. Use the Events resource panel to add custom events for your project. You can also create custom events on the fly from event handlers.

Default dialog events (such as MaxTurns, MaxNomatch, MaxInvalidRecoOption) are thrown automatically, in a question and answer node, when their respective threshold is reached. You can configure the thresholds globally, or by channel profile, in the global settings of the project.

Likewise, global command events (Escalate, Goodbye, and MainMenu) are thrown automatically, when a question and answer node happens to recognize the corresponding global command entity value.

You set global handlers for specific command or dialog events in your project’s Start node. You can override global event handlers by setting component-level event handlers in the Enter node for a component, or by setting local event handlers in individual question and answer nodes, as needed.

If you set an event handler for GenericEvent, it will catch any event for which you haven’t set a specific handler.

Use throw event actions, in question and answer nodes, message nodes, or decision nodes, to throw custom events. It is also possible use a throw action to throw a global command event, if you want to handle a situation the same way as the global command—for example, if you want to transfer the user to a live agent to handle some error situations where a maximum threshold is reached, you can set a throw event action to throw the Escalate event.

Open the Events resource panel

Click Events, on the Mix.dialog toolbar, to open the Events resource panel.

(Click Events again to close the panel.)

Add a custom event

  1. Click the Add icon Icon plus in the upper-right corner of the Events list.
  2. Type a unique name for the custom event and press Enter.
    The new event appears at the bottom of the list.
    Note: Event names can only include letters (A-Z, a-z), and digits (0-9).

Find an event

Use the text filter box in the upper-right corner of the Events list, to narrow down the list to only events that include the specified text in their name.

Rename a custom event

  1. In the Events list, click the custom event you want to rename.
  2. In the right-hand pane of the panel, click the event name.
    The name becomes editable.
  3. Modify the name as desired.
    Note: Event names can only include letters (A-Z, a-z), and digits (0-9).

Delete a custom event

  1. In the Events list, click the custom event you want to delete.
  2. In the upper-right corner of the panel, click the Delete icon.
    A message appears prompting you to confirm your intention.
  3. Click Confirm.

Change log

Below are changes made to the Mix.dialog documentation since the initial Beta release.

2020-08-28

2020-08-19

Updated Manage entities to reflect that the literal-value pairs for list entities are now language-specific, and to cover regex-based entities

2020-08-03

2020-07-20

Added Set up a decision node

2020-07-14

Added Set up a message node

2020-07-03

2020-06-26

2020-05-25

2020-05-14

2020-05-06

Added Set Messages

2020-04-24

Added Manage events

2020-04-14

2020-04-04

2020-03-31

2020-02-19

2020-01-22

2019-12-18

Explained how to create dynamic messages. See Manage messages.

2019-12-11

Added Manage intents, Manage entities, Manage variables, and Manage messages.

2019-12-02

Minor changes. See Get started and Dialog design elements.

2019-11-25

Sample scenario simplified and further revised to match UX changes. See Get started.

2019-11-15

Sample scenario revised to match UX changes. See Get started.