I digress, Watson

Simon Burns
IBM watsonx Assistant
4 min readMar 29, 2018

This article describes a new feature in Watson Assistant (formerly known as Watson Conversation), called “Digressions”. If you are not familiar with building a dialog you may want to read “Getting Chatty with IBM Watson” first.

Normally in a conversation when you have gone down a particular flow in the dialog and the user says something that is not handled, the dialog falls back to the root level and tries to answer from there. Now, that point in the flow has been lost. With “Digressions” you are able to return to that point in the flow.

In the above example, we are working through slots to book a table at a restaurant. During this, the user asks about opening hours, and this question in handled by a root node (using digressions), after which it returns back to the slot.

As digressions change the behavior of a bot, they are not enabled by default. You will need to go and enable it where you want it.

There are two main parts to the digressions settings: digressing into and digressing away from. These options are available in the “Customize” part of a node.

Digressing INTO

As with the standard fallback mechanism, it is the root nodes that are available for digressing into. In each root node, you can choose whether to allow digressing into the node at all, and if allowed, whether to return to the previous point in the flow.

Allow digressions into this node

This option allows you to decide whether this root node is available for handling digressions. By default this is ON.

Disabling this, allows you to have root nodes that only trigger when the user is not currently in a flow, for example, if you don’t want to allow the user to start another large flow in the middle of another one.

Return after digression

This option allows you to decide whether or not to return after digressing. By default this is OFF.

Most likely you will want to enable this on most root nodes. However, not enabling returns can be useful, for example, if the user asks to speak to a human, then you don’t want to return to the original flow.

Digressing AWAY FROM

While digressing IN is limited to root nodes, digressing AWAY FROM is available on nodes at any level of the dialog.

Allow return from digression triggered after this node’s response

This option allows you to decide whether or not a digression will return to this node or not.

There are some nodes where this option is not available, as it is not possible to digress away:

  • Nodes that have a child node with a true or anything_else condition, as these force the dialog flow to stay in that flow
  • Nodes that have a “Jump To” or “Skip user input” set, as these take the flow away from the node before a digression is possible
  • Nodes that have no children, as the flow is ended so digressions are not possible

You may want to disable returning back to this point of the flow if, for example, you have an optional section of the flow such as asking for feedback after completing a task.

Slots

Nodes with slots have some additional options to control digressions while filling the slots.

Allow digressions away while slot filling

This option lets you choose whether digressions are allowed while slot filling. You may not enable this if you want to keep the user focussed within the slots, or perhaps you have “Not found” responses and handlers to deal with other inputs.

Only allow digress from slots to nodes that allow returns

If digressions are allowed while slot filling, you can use this option to decide whether to allow digressions to all nodes or only those that return. This allows the user to ask other questions while slot filling but stops them falling out of the slot filling process.

Digressions versus slot responses and handlers

It is worth clarifying how digressions interact with the slot responses and handlers:

  • When in the process of slot filling, the user input will first be used to attempt to fill a slot. If it fills a slot it will look at the “Found” responses as normal
  • If it fails to fill a slot, then the handlers will be checked
  • If none of the handlers trigger, then it will attempt to use digressions
  • If no digression triggers, then it will look at the “Not found” responses
  • If no “Not found” response triggers, then it will prompt again for the slot

Time to digress…

I hope this has given you some insight into the Digressions feature, and enables you to start using it in your bots.

Find more of my Watson articles in the Conversational Directory.

--

--