There are some situations where you shouldn’t use followup intents, because it will not work.
The while loop
There was a chatbot called the Florist bot that was originally used as an example bot in the Dialogflow documentation (when it was still called API.AI).
This is what the flowchart of the Florist bot looked like.
In the figure below, the area marked in red is actually a while loop. In theory, the user can just keep indefinitely adding red roses into the bouquet and never say “No, thanks” and exit the loop. This is the “while loop” in software terminology.
It is not possible to use followup intents for this conversation flow, since you wouldn’t know how many levels deep you need to go.
The Split and Merge pattern
Another common conversation flow pattern is the split and merge pattern.
The flowchart for a Quiz bot would follow a split and merge pattern and would look a little like this:
Note that at various points the conversation splits, and then merges back.
You can in theory use followup intents for the split-and-merge pattern, but you would be duplicating a lot of intents. And the longer your conversation (for e.g. more questions in the Quiz bot above), the more duplication you will have in your follow-up intents.
Graph Theory notation
This section is somewhat advanced, but I am hoping the figures will illustrate what I am talking about.
There is the regular directed tree. To go from any node A (represented by a circle) to any other node B, there is exactly one path. If your flow structure looks like this, followup intents are a good choice.
Directed Acyclic Graph
If you have a directed acyclic graph, you potentially have a split-and-merge pattern. In the directed acyclic graph below, it is possible to go from node a to node d via two different paths. You can go a->b->d or a->c->d. But you cannot follow the arrows and go back to the same node where you started.
If your flow structure has split-and-merge patterns like the directed acyclic graph, you will end up creating a lot of duplicate intents.
Directed graph with cycle
In the graph below, you can start at node a, go along edge 1 to node b, then along edge 2 to node c, and then along edge 3 and go back to node a. This is a “cycle” in graph notation. If your conversation flows like this, you have a while loop in your flowchart.
If your flow structure looks like a directed graph with a cycle, you cannot use followup intents.
You might believe that you won’t have split-and-merge patterns and it is safe to use followup intents. Sometimes this is true, but sometimes you might be surprised down the line. So unless you are also fairly confident your conversation flow will not change much down the line, I would recommend avoiding followup intents and instead using input and output contexts to simulate them.
- Actions Builder vs Dialogflow CX
- 5+ ways Dialogflow CX is better than Dialogflow ES
- How to bulk upload training phrases for Dialogflow Messenger
- Dialogflow CX vs ES: First look
- How to send rich responses from webhook to Dialogflow Messenger
- Dialogflow CX now generally available
- Dialogflow CX Missing Features
- Dialogflow Messenger integration for CX: First look
- Dialogflow Conversation Analytics Tips
- A simple method to evaluate multiple bot frameworks