This article includes a conversation design pattern that handles more than just the regular expressions for positive and negative confirmations.
In a conversation we sometimes need positive or negative statements from the user. Depending on the circumstances, the answer of the user can vary. For example, the simple question "Is the booking for you?" might not only be answered with "Sure", "Of course" or "Yes", but also with something like "It is for my manager".
To be interpreted as a negative answer, the virtual agent needs more knowledge than pure positive and negative expressions. What we can do here, is to train a specific intent model to recognize alternative statements.
There are many ways to include this Intent Model in your Flow Architecture, either as a separate Flow or within a Flow. In this article we present two different approaches, and we’ll look into the advantages and disadvantages of each pattern, so that you can evaluate what’s best for your scenario.
Trigger automatically via attached Flow
In this pattern we’ll make use of the Attach Flows functionality.
The Intents are in a separate Yes-No Detector Flow (see image above) and we attach it to the Main Flow.
And we enable the Setting Continue Main Flow after attached Flow in the Main Flow. With that the Intents will automatically be recognized, the Yes-No Detector Flow will be executed and the Main Flow will be continued afterwards. The advantage is that it is not necessary to trigger this manually, because when a positive or negative Intent is found, the process takes place automatically. On the other hand, the setting Continue Main Flow after attached Flow can cause conflicts in your architecture, for example if you don't want another Flow you’ve attached to have the same behavior.
For this pattern, the Question Type is Yes/No since we do not have to process the answer of the user afterwards. The structure of the attached Yes-No Detector Flow is the same as in the pattern above, but it could also be included in the Universals, which would look like this:
The advantage of including it in the Universals is, that it’s always accessible and it always listens for positive or negative statements, but this can of course also be a disadvantage. Especially when you have a lot of Intents this can cause conflicts, so be aware of your Intent Model.
Question Node with Escalation Intents
A completely different approach is to include the positive and negative Intent Model in the Flow itself. You may need this pattern for specific use cases, for example when the Intents have different positive and negative meaning in different Flows or if there is a Flow where the Intent Model should not overlap with other Flows. The advantage is that we’re able to only use it for this specific Flow, the downside is that this approach requires a lot of Flow Nodes. So we recommend using this approach only when you definitely need it.
What we need is a Question Node with the Type Yes/No and the Escalation Intents with the Escalation Action Skip Question.
With that we make sure when an Intent in this particular Flow is found, we skip the Question and execute the Lookup on Intent and if nothing is found on Type.
In this article we talked about three different approaches to extend the understanding of positive and negative responses. Each of the patterns has its pros and cons, for some use cases it might make sense not to share the Intents with other Flows or to share the Intents but trigger them manually. In the end it depends on your scenario what you want to use.
You can find all of the showcased Flows in the attached package.
Feel free to take a look at other conversation design patterns.