Why your Dialogflow questions go unanswered on StackOverflow
Recently, I took a look at StackOverflow questions on the topic of Dialogflow. A lot of them were unanswered.
Here are some stats when I last checked:
- 17 of the last 30 questions have 0 answers
- 27 questions had 0 votes, and 2 had negative votes
- Exactly 2 answers (of the 13 questions which have answers) have at least one upvote
That third point is actually a pretty interesting stat, as it says that even when questions receive answers, they are not very helpful for the asker (well, plus sometimes the asker doesn’t upvote the answer)
I think there are some important reasons why these questions are going unanswered, and they may be somewhat inherently difficult problems to solve.
The 4 layers of a Dialogflow chatbot
Recently I wrote an article about the 4 layers of a Dialogflow chatbot. It is just a useful representation to understand what is going on inside your bot.
Let us call the UI and middleware layers the “front layers” as they are closest to the user, and the conversation and fulfillment as the “back layers” as they are farther from the user.
The front layers are usually invisible
Generally speaking, people don’t have questions about the front layers as they tend to be invisible. For example, the 1-click Dialogflow web demo integration takes care of both the front layers and you only need to worry about the back layers.
Similarly, the typical 1-click integration with Facebook, Slack, Skype etc already handles the front layers for the user.
The back layers are intertwined
This is quite important to note – there is a lot of interaction between the conversation (NLU) layer and the fulfillment layer, which means they are heavily intertwined. And this has some implications when you ask questions on SO.
Why your questions go unanswered
With that background, here are the reasons why I think Dialogflow questions go unanswered on StackOverflow.
1 You need to specify both the back layers
This is probably the biggest challenge when posting questions. Since the Conversation Layer and the Fulfillment layer are so heavily intertwined, you cannot describe only one layer and leave out the other.
This is usually the first reason your question goes unanswered.
2 Sharing the complete agent description
As it turns out, even the Conversation layer description isn’t very simple to completely describe.
When you ask a Dialogflow question, you need to provide a complete description of your agent so people can understand what is going on. This isn’t very easy to do.
First, you probably don’t want to just share the agent’s ZIP file (which completely describes the agent) because you don’t want to reveal some private info (e.g. your webhook URL). Plus people are not always going to be downloading your agent ZIP file just to give you an answer.
So with that option ruled out, there is no simple way to convert all the information you have inside your agent (the training phrases across all your intents, mainly) into a format that can be shared easily. I tried to do something like this with my Dialogflow viewer, but it isn’t very hard to see that it is a somewhat inadequate tool.
By the way, it might be an excellent idea to create a tool which simply iterates through the intents in an agent ZIP file and outputs all the training phrases in plain Markdown format. This will be quite easy to share on StackOverflow even if it isn’t a full description of the agent. Plus it will be better than pasting enormous screenshots of intents which somehow leave out the important bits. 🙂
The difficulty of completely describing the agent is the second reason why your answer goes unanswered.
3 Candidate intents
Quite often, questions on Dialogflow can be reduced to the following:
“I expected Intent A to fire. Intent B fired instead. Why?”
If you are asking this question, it is very likely you don’t understand how candidate intents work.
Not understanding how candidate intents work is the next reason your question goes unanswered.
4 Conversation Design is still not very well understood
In my view, we are only at the very beginning stages when it comes to creating and designing multi-turn chatbot conversations. For example, while I think slot filling may be a great concept, in my view it is a feature which should be avoided.
In addition, there are things like the influence of the context lifespan on your eventual conversation flow.
This is why I generally recommend an explicative approach to Dialogflow even if it means more work initially.
5 StackOverflow is geared mainly towards the fulfillment layer
StackOverflow is mainly concerned with answering questions about coding. This is why questions on designing conversations are not easy to ask or answer. When questions (and answers) can be a bit opinionated, StackOverflow can be a very poor place to submit questions. Even the folks who run the site agree with this.
For example, I would think a lot of people would consider my views on Dialogflow conversation design to be opinionated. So providing these opinions on SO would be a big challenge, as I might end up spending more time defending my opinions than on actually answering the question at hand.