Why Your Chatbot Conversation Must Allow For Digression

Don’t Force Users Into Constrained Dialog Paths

Cobus Greyling
6 min readDec 10, 2019



Digression is a common and natural part of most conversations. The speaker, introduces a topic, subsequently the speaker can introduce a story that seems to be unrelated. And then return to the original topic.

Digression can also be explained in the following way… when an user is in the middle of a dialog, also referred to customer journey, Topic or user story.

And, it is designed to achieve a single goal, but the user decides to abruptly switch the topic to initiate a dialog flow that is designed to address a different goal.

Digression Example Where an User Momentarily Digress

Hence the user wants to jump midstream from one journey or story to another. This is usually not possible within a Chatbot, and once an user has committed to a journey or topic, they have to see it through. Normally the dialog does not support this ability for a user to change subjects.

Often an attempt to digress by the user ends in an “I am sorry” from the chatbot and breaks the current journey.

Hence the chatbot framework you are using, should allow for this, to pop out and back into a conversation.

We Choose Our Tool

To illustrate this principle, I will use the IBM Watson Assistant environment.

Within IBM Watson Assistant, making use of the digression settings, enables the conversation to return to the dialog flow that was interrupted when the digression occurred.

For example, the user might be ordering a new phone, but switches topics to ask about tablets. Your dialog can answer the question about tablets, and then bring the user back to where they exited the customer journey for ordering a phone.

This approach gives your user a true unstructured conversation experience, being able to switch from one topic to another. This is analogous to a human conversation. Hence the user can change topics, following a dialog path or journey about the unrelated topic to its end, and then return to where they were before.

Again, this simulates a true, natural human to human conversation.

An Example of Persistent Digression

Using the IBM Watson Assistant environment as an example, the option of digression needs to be set on the dialog node, hence it is a controlled approach allowing digression at key points.

But First…

While building a Chatbot dialog, also referred to as a topic or journey, you need to decide where in your conversational tree you will allow digression.

And where a return can be made into the dialog again.

Every root node in your dialog is configured to allow digressions to target them by default. Child nodes cannot be the target of a digression.

Nodes with slots are configured to prevent digressions away from it.

All other nodes are configured to allow digressions away.

However, the conversation cannot digress away from a node under the following circumstances:

  • If any of the child nodes of the current node contain the anything_else or true condition
With IBM Watson Assistant Allows Digressions to come into node and bounce out again.

These conditions are special in that they always evaluate to true. Because of their known behavior, they are often used in dialogs to force a parent node to evaluate a specific child node in succession.

To prevent breaking existing dialog flow logic, digression are not allowed in this case. Before you can enable digressions away from such a node, you must change the child node’s condition to something else.

  • If the node is configured to jump to another node or skip user input after it is processed.

The final step section of a node specifies what should happen after the node is processed. When the dialog is configured to jump directly to another node, it is often to ensure that a specific sequence is followed. And when the node is configured to skip user input, it is equivalent to forcing the dialog to process the first child node after the current node in succession.

To prevent breaking existing dialog flow logic, digressions are not allowed in either of these cases. Before you can enable digressions away from this node, you must change what is specified in the final step section.

The Conversational Node Allowing “away” and “into” Digression

Design Considerations

The last thing you would want, is an instance where the user gets caught in a leg of the conversation. So most legs have a default message if a user does not exercise any input or if there is a “no match”. Users cannot digress away from dialog flows that use this approach.

Evaluate any branches that use this approach to determine whether it would be better to allow digressions away from the branch. If the user’s input does not match anything you anticipated, it might find a match against an entirely different dialog flow in your tree. Rather than responding with a generic message, you can effectively put the rest of the dialog to work to try to address the user’s input.

Many dialogs are designed to ask a standard closing question, like; Did this resolve your issue? Users cannot digress away from nodes that are configured to jump to another node. So, if you configure all of your final branch nodes to jump to a common closing node, digressions cannot occur. Consider tracking user satisfaction through metrics or some other means.

Digression Control

You do not define the start and end of a digression, the user is in complete control of digression at run time. You only specify how each node should or should not participate in a user-led digression. For each node, you configure whether:

  • a digression can start from and leave the node
  • a digression that starts elsewhere can target and enter the node

A Short Tutorial

Node Tracing

You can click on the pin next to the returned dialog; this will take you to your location in the dialog nodes. This is essential to figure out where you are jumping to in the dialog with each user utterance. To track how a user is traversing the dialog using digression, this is also essential.

Temporarily Digress Away From Dialog

You can see in the example below, that an reservation is in the process. But when the user asks about operating hours, the chatbot digresses to answer the question, but then stubbornly returns to the booking sequence.

IBM Watson Assistant ~ Temporarily digressing away from dialog

Disabling Digression

Here you see that the chatbot is very stubborn in not digressing and sticks to the booking process.

IBM Watson Assistant ~ Disabling Slot Digressions

Digressing To A Node That Does Not Return

In the example below, the chatbot digresses to operating hours, but does not return to booking. The user needs to explicitly ask to return to making a booking.

This is also a natural port of a conversion, when there is digression, and the dialog digresses away from is not important, there is no need to return to it.

IBM Watson Assistant ~ Digressing To A Node That Does Not Return


The easy approach is to structure the conversation very firmly from the chatbot’s perspective. And funnel the user in and out of the conversational interface, this might even present very favorably in reporting. But the user experience is appalling.

Overly structuring the conversation breaks the beauty of a conversational interface. Unstructured conversational interfaces is hard to craft but makes for an exceptional user experience.

One of the reasons is that user’s are so use to having to structure their input, that they want to enjoy and exercise the freedom of speech (spoken or text), which can lead to disappointment if the expectation of freedom is not met.



Cobus Greyling

I explore and write about all things at the intersection of AI & language; LLMs/NLP/NLU, Chat/Voicebots, CCAI. www.cobusgreyling.com