Chatbot Overview
Conversational Bots
Intents & Entities
Intelligent Bots
Kore.ai's Approach
Kore.ai Conversational Platform
Bot Concepts and Terminology
Natural Language Processing (NLP)
Bot Types
Bot Tasks
Starting with Kore.ai Platform
How to Access Bot Builder
Working with Kore.ai Bot Builder
Building your first Bot
Getting Started with Building Bots
Using the Dialog Builder Tool
Creating a Simple Bot
Release Notes
Latest Updates
Older Releases
Bot Builder
Creating a Bot
Design
Develop
Storyboard
Dialog Task
User Intent Node
Dialog Node
Entity Node
Supported Entity Types
Composite Entities
Supported Time Zones
Supported Colors
Supported Company Names
Message Nodes
Confirmation Nodes
Service Node
Custom Authentication
2-way SSL for Service nodes
Script Node
Agent Transfer Node
WebHook Node
Connections & Transitions
Managing Dialogs
Prompt Editor
Alert Tasks
Alert Tasks
Ignore Words and Field Memory
Digital Views
Knowledge Graph
Terminology
Building
Generation
Importing and Exporting
Analysis
Knowledge Extraction
Small Talk
Action & Information Task
Action Tasks
Information Tasks
Establishing Flows
Natural Language
Overview
Machine Learning
ML Model
Fundamental Meaning
NLP Settings and Guidelines
Knowledge Graph Training
Traits
Ranking and Resolver
NLP Detection
Bot Intelligence
Overview
Context Management
Session and Context Variables
Context Object
Dialog Management
Sub-Intents
Amend Entity
Multi-Intent Detection
Sentiment Management
Tone Analysis
Sentiment Management
Default Conversations
Default Standard Responses
Channel Enablement
Test & Debug
Talk to Bot
Utterance Testing
Batch Testing
Record Conversations
Publishing your Bot
Analyzing your Bot
Overview
Dashboard
Custom Dashboard
Conversation Flows
Bot Metrics
Advanced Topics
Bot Authorization
Language Management
Collaborative Development
IVR Integration
koreUtil Libraries
Universal Bots
Defining
Creating
Customizing
Enabling Languages
Smart Bots
Defining
Sample Bots
Github
Asana
Travel Planning
Flight Search
Event Based Bot Actions
Bot Settings
Bot Functions
General Settings
PII Settings
Customizing Error Messages
Bot Management
Using Bot Variables
API Guide
API Overview
API List
API Collection
SDKs
SDK Overview
SDK Security
SDK App Registration
Web SDK Tutorial
Message Formatting and Templates
Mobile SDK Push Notification
Widget SDK Tutorial
Widget SDK – Message Formatting and Templates
Web Socket Connect & RTM
Using the BotKit SDK
Installing
Configuring
Events
Functions
BotKit SDK Tutorial – Agent Transfer
BotKit SDK Tutorial – Flight Search Sample Bot
Using an External NLP Engine
Bot Administration
Bots Admin Console
Dashboard
User Management
Managing Users
Managing Groups
Managing Role
Bots Management
Enrollment
Inviting Users
Bulk Invites
Importing Users
Synchronizing Users from AD
Security & Compliance
Using Single Sign-On
Security Settings
Cloud Connector
Analytics
Billing
How Tos
Creating a Simple Bot
Creating a Banking Bot
Transfer Funds Task
Update Balance Task
Context Switching
Using Traits
Schedule a Smart Alert
Configuring Digital Views
Custom Dashboard
Custom Tags to filter Bot Metrics
Patterns for Intents & Entities
Build Knowledge Graph
Global Variables
Content Variables
Using Bot Functions
Configure Agent Transfer
  1. Home
  2. Docs
  3. Bots
  4. Intelligence
  5. Dialog Management

Dialog Management

Human conversations are characterized by twists and turns, and no two directions are ever the same. Natural conversations often tend to go beyond linear intent resolution paths defined in the bots. Ideally, a user would allow the bot to take a user intent to its logical conclusion before initiating another, but that’s not always the case.

Consider the following conversation for example:

It includes an entity value for the bot to proceed with the current intent, while also presenting a new user requirement or intent.

Bots should account for this by allowing users to pause a task, start and complete another task, and then seamlessly return to the original task – all without losing important contextual data and conversation continuity.

Kore.ai provides you with granular control over interruption handling functionality at the bot, task, and node levels, and allows to control context switching rules and behaviors. You can handle such interruptions in intent flows by providing a whole range of options to define the task-switching experience.

The Interruptions Behavior options can be set up at the bot, task, and node levels to ensure the configurations are layered to suit your various business requirements. You can also add conditional exceptions between tasks with the ability to pass contextual data between them.

The following sections describe

  • the various Interruptions Behavior configurations,
  • the hierarchy of the setups at bot, task, and node levels.

Interruptions Behavior

The Interruptions Behavior options allow you to select if and how a user can switch to another task and also the exit strategies. The configuration for managing interruptions can be done either at the Bot Level or at the Task or Dialog level. We will discuss the settings at the Bot Level in this section. These settings can be overridden at the Task level as discussed in the Interruption Hierarchy section.

You can access the Interruptions Behavior settings from Natural Language -> Intelligence -> Manage Interruptions page.

The platform provides options for Interruption options under the following three categories:

  • Allow interruptions: Provides options for you to choose for holding a task and options to resume it later.
  • Do not Allow interruptions: Stops new tasks from interrupting the current task.
  • Allow the End User to Select the Behavior: Seeks end-user confirmation to switch to a new task and provides several resume options for you to pick from.

NOTE: When user input after a session has ended, i.e. after at least 15 minutes of inactivity, and if the input is within the previous session context it is treated as an Interruption scenario. If instead, the user comes back with a new utterance, then the old context is discarded and a new conversation is started.

Allow interruptions

Once you allow for task interruption, you need to specify the Bot behavior in such scenarios like what should happen to the current task, where should the conversation go once the interruption task has been completed, etc., etc..

Following are the options under Allow interruptions.

Option Description
Hold the current task and resume back once the new task is completed This option lets the bot to switch to a new intent as soon as it is detected irrespective of the current intent flow. When you select this option, the Resume Behavior section appears providing further choices to define how to resume the on-hold task once the new intent task is completed.  Refer to Resume Behavior section below for details.
Discard the current task and switch to new When you select this option, the bot discards the current task and switches to a new task soon after it encounters another intent. The bot sends a message to notify the user before switching to the new task and the current task would be discarded. You can customize the message from the Manage Response setting.
Switch to new task without any notification to the user and discard current task When you select this option, the bot discards the current task and switches to a new task soon after it encounters another intent. The bot does not notify the user about the switch and does not resume the current task later.
Continue with the current task and add a new task to the follow-up task list When you select this option, the bot continues on the current task even if it encounters a new intent. It, however, adds the new intent to the Follow-up intents array.

Do not allow interruptions

When you select this option, the bot level Interruptions is turned off. However, you may override this behavior for selected tasks, linked dialogs (exceptions) or node level. Refer to the Interruptions Hierarchy section below for more information.

Allow the End User to Select the Behavior

When you select this option, the bot presents the end user with a confirmation message asking if the user would like to switch to a new task. The bot switches to the new task only if the end user chooses to do so. You can customize the confirmation message sent to the user by clicking the Manage Response link next to the option.

You need to define a Resume Behavior that the bot should take if the user decides to switch the task. Refer to Resume Behavior section below for details.

Resume Behavior

Once you allow the task to be put on hold and proceed with the interruption task, you need to configure the Resume Behavior i.e. how the on-hold task should be handled once the interrupting task is completed.

Option Description
Get confirmation with the user before resuming an on-hold task After executing the new task, the bot gives Yes or No options to the user to return to the last on-hold task. You can write a custom message for the user by clicking the Manage Response link next to the option.
Example:

User: Hi
Bot: Hello!
User: Can you book me a flight for tomorrow?
Bot: From which city are you flying?
User: Los Angeles
Bot: Where to?
User: By the way, what’s the weather forecast for tomorrow?
Bot: Please enter the name of the city for the forecast.
User: Los Angeles
Bot: Weather Forecast for Los Angeles
Date: March 15
Temperature: 25 C
Condition: Mostly Sunny
Bot: Should I continue with the task 'Book Flight'?
User: Yes
Bot: Enter the name of the destination airport
Notify the user with a message that the on hold task is being resumed Notifies the user with a message and resumes the last task that’s kept on hold without user confirmation.
You can customize the notification message by clicking the Manage Response link next to the option.
Example:

User: Hi
Bot: Hello!
User: Can you book me a flight for tomorrow?
Bot: From which city are you flying?
User: Los Angeles
Bot: Where to?
User: By the way, what’s the weather forecast for tomorrow?
Bot: Please enter the name of the city for the forecast.
User: Los Angeles
Bot: Weather Forecast for Los Angeles
Date: March 15
Temperature: 25 C
Condition: Mostly Sunny
Bot: Resuming interrupted task Book Flight
Bot: Enter the name the of the destination airport
Resume the on hold task without any specific message to the user Directly resumes the last task that’s kept on hold soon after the current task is executed.
Example:

User: Hi
Bot: Hello!
User: Can you book me a flight for tomorrow?
Bot: From which city are you flying?
User: Los Angeles
Bot: Where to?
User: By the way, what’s the weather forecast for tomorrow?
Bot: Please enter the name of the city for the forecast.
User: Los Angeles
Bot: Weather Forecast for Los Angeles
Date: March 15
Temperature: 25 C
Condition: Mostly Sunny
Bot: Enter the name of the destination airport
Always resume the on hold task without any specific message to the user if the task is ended in a single response Sometimes, the switched over tasks end with a single bot response. For example, in the weather forecast example above, if the user had directly entered “By the way, what’s the weather forecast for LA tomorrow?”, the bot would’ve merely responded with the forecast, with no further steps.
In such cases, if you select this option, the bot switches back to the task on hold without any confirmation or notification, regardless of the option you’ve chosen.

Note: The switching happens directly, without any notification to the end user.

On Hold Quantity
You can select the number of tasks that you want to keep on hold from the On Hold Quantity field. The Bot keeps a maximum of this number of tasks on hold and ignores the tasks once this value is reached.

For example, if you specify the On Hold Quantity as 1 and if a third intent comes into play, the bot wouldn’t allow the new task to be initiated regardless of Hold and Resume options.

Note: Tasks always resume in the reverse chronological order. So, if you kept task 2 on hold after task 1, task 2 resumes before task 1.

Interruptions Hierarchy

Apart from defining the generic interruptions options at the bot level, you can customize these options at Dialog task or Dialog node level. When you set up the interruptions options in more than one levels, the order of precedence of the settings works as follows:

Node Level Settings

You can customize the interruptions settings at a node level. If you customize the settings for a node, this configuration takes the highest precedence.

To customize the Hold and Resume settings for a node:

  1. Open the Dialog task and then hover over the node whose settings you want to change.
  2. Go to the Properties panel by clicking the gear icon and then click the instance tab.
  3. In the Instance Properties panel, select Advanced Controls.
  4. Under the Interruptions Behavior section, select Customize for this node and make the necessary configurations. These configurations are the same as discussed above for the Bot Level Interruptions Behavior settings.

Dialog Level Settings

The Dialog level Interruption customizations have higher priority over Bot level settings but rank lower than the Node level customizations or any exceptions.

To customize the Interruption settings for a Dialog:

  1. Open the Dialog task whose settings you want to customize.
  2. On the top right-hand corner of the Dialog Builder, click the more options icon and then click Manage Interruptions.
  3. Under Interruptions Behavior section, select Customize for this task and make the necessary configurations. These settings are the same as discussed above for the Bot Level Interruptions Behavior.
Note: If you do not customize Interruptions settings at Node or Task level, the bot level settings come into play.

Manage Behavior for FAQs

You can choose whether FAQs should honor the Hold & Resume Settings or if FAQs should be always responded. This feature was introduced with ver 7.0.

The flag Interruption Behavior for FAQs will allow you to:

  • Always identify and respond to FAQs when interruptions are enabled. This is the default setting.
  • Always identify FAQs when interruptions are enabled and proceed as per the Hold & Resume settings.

For the bot interruption behavior for FAQs refer Interuption and Resume behavior given in the above sections. Following are the exceptions to the Resume Behavior involving FAQs:

Interruption Setting Resume Setting Exception Behavior
Hold the current tasks and resume back Get confirmation with the user before resuming an on-hold task If the FAQ ended in a single volley ie single question and response
then the interrupted task will be resumed without seeking confirmation from the user
Hold the current tasks and resume back Notify the user with a message that the on hold task is being resumed If the FAQ ended in a single volley ie single question and response
then the interrupted task will be resumed without any notification to the user
Discard the current task and switch to new Notify the user that we have canceled the current task to switch to another. The current task will be discarded and the FAQ will be executed without any notification to the user
Continue the current task and add new task to the follow-up task list The current task will be kept on hold and the FAQ will be initiated without putting it on the follow-up task list and then the task on hold would resume without any notification to the user
Allow the end user to select the behavior Get confirmation with the user before resuming an on-hold task FAQ will be executed without presenting any choice to the user and if the FAQ ended in a single volley ie single question and response then the interrupted task will be resumed without seeking confirmation from the user
Allow the end user to select the behavior Notify the user with a message that the on hold task is being resumed FAQ will be executed without any notification to the user and if the FAQ ended in a single volley ie single question and response then the interrupted task will be resumed without any notification to the user
Allow the end user to select the behavior Resume the on hold task without any specific message to the user FAQ will be executed without presenting any choice to the user and the interrupted task will be resumed without any interaction with the user

Manage Behavior for Small Talk

You can choose whether Small Talk should honor the Interruptions or if Small Talk should be always responded. This feature was introduced with ver 7.1.

The flag Interruption Behavior for Small Talk will allow you to:

  • Always identify and respond to Small Talk when interruptions are enabled. This is the default setting.
  • Always identify Small Talk when interruptions are enabled and proceed as per the Interruptions settings.

For the bot interruption behavior for Small Talk refer Interuption and Resume behavior given in the above sections. Following are the exceptions to the Resume Behavior involving Small Talk:

Interruption Setting Resume Setting Exception Behavior
Hold the current tasks and resume back Get confirmation with the user before resuming an on-hold task The interrupted task will be resumed without seeking confirmation from the user
Hold the current tasks and resume back Notify the user with a message that the on hold task is being resumed The interrupted task will be resumed without any notification to the user
Discard the current task and switch to new The Small Talk will be triggered without any notification to the user
Continue the current task and add new task to the follow-up task list The current task will be kept on hold and the Small Talk will be initiated without putting it on the follow-up task list and then the task on hold would resume without any notification to the user
Allow the end user to select the behavior Get confirmation with the user before resuming an on-hold task The interrupted task will be resumed without seeking confirmation from the user
Allow the end user to select the behavior Notify the user with a message that the on hold task is being resumed The interrupted task will be resumed without any notification to the user
On Hold Quantity Small Talk is always shown irrespective of this setting

Manage Behavior for Ambiguous Intents

(Introduced in ver 7.1 of the platform)

You can handle ambiguous intents during a conversation flow by setting the flag Behavior for Ambiguous Intents which will allow you to:

  • Present the ambiguous intents to the end-user and proceed as per the H&R Settings. In case the user selects a task and the Hold & Resume setting is:
    • ‘Continue the current task and add new task to the follow-up task list’, then the current task will be kept on-hold and the new task will be initiated
    • ‘Allow the end user to select the behavior’, then the new task will be initiated without asking the user since the selection has been already made
    • All other ‘hold’ options will be applied as usual
  • Do not present ambiguous intents to the end users and continue on the current task. This is the default setting.

For the bot interruption behavior for Ambiguous Intents refer Interuption and Resume behavior given in the above sections. Following are the exceptions to the Resume Behavior involving Ambiguous Intents:

Interruption Setting Exception Behavior
Allow interruptions Tasks with dialog level interruption behavior set to ‘Do not allow hold and resume’ will not be included in the disambiguation flow.

For example in a Banking Bot scenario, consider the case wherein “Transfer Funds” task has “Bill Payment” under “Do not allow hold and resume” exceptions. Now during the Transfer Funds task, if a disambiguation intent is detected with two possibilities – “Check Payment” and “Bill Payment” then Bill Payment will not be considered in the disambiguation flow.

Continue the current task and add new task to the follow-up task list Once the user selects a task from the disambiguation list , the current task will be kept on hold and the selected task will be initiated without putting it on the follow-up task list.
Allow the end user to select the behavior Once the user selects a task from the disambiguation list , the new task will be initiated without a message to the user
Menu