I have created a tool which you can use to improve the accuracy of your Dialogflow ES bot.
It checks for basic mistakes and also makes recommendations based on the best practices I recommend.
Here is a list of things the tool checks. You can also do all these manually, but it becomes more challenging as your bot gets more complex.
Does the bot use slot filling?
I recommend that you avoid slot filling when building your Dialogflow ES bots.
Here are the results from uploading the agent ZIP file for the slot filling quickstart template.
The output is a table with the intent name, then a Status column, followed by a column for each issue which is being checked. If the Status column has a red cross mark, then the tool is flagging a potential issue.
The Column called “No Slot Filling” lists the required parameters in the intent called book.a.flight
Note: just because the tool flags an issue does not mean you have to fix it. Sometimes you might intentionally add some feature. This is just a quick way to do a sanity check as you keep updating your chatbot.
Do you use context lifespan more than 1?
I recommend that people minimize context lifespan, all the way down to 1 if possible.
The tool checks to see if you have contexts with larger lifespans.
Here is the output for the followup intent quickstart template.
Does the intent have at least one training phrase?
Sometimes when you are building multi-turn conversations it is easy to forget to add training phrases into intents.
The tool checks to see if all intents have training phrases.
For example, the quickstart template which explains how to use webhook for slot filling has some intents which are triggered by followupEvents, so don’t contain any training phrases.
Does the intent have at least one response message?
Some times you might forget to add a response message to an intent.
For example, I intentionally modified the list and composite entities quickstart template and left out the response, so you can see the results.
Do all input contexts have a matching output context?
It is a common mistake to forget to “pair” input and output contexts, which you need to do correctly to chain intents together.
The Audit tool helps you identify all input contexts which do not have matching output contexts.
For example, the quickstart template which gets user’s birthdate sets the input context from the webhook but no intent sets the context explicitly as an output context.
In the table you can see that the Status has been set to the red cross mark and it also lists all input contexts (in this case only one – await_birth_year) which does not have a matching input context.
Do all output contexts have a matching input context?
The Audit tool also helps you identify all output contexts which do not have matching input contexts.
If you remember, this is true for session variables.
So this is what the quickstart template looks like
Note - this is a very good example of why you should take this tool's recommendation into account but there are very good reasons to continue doing what you were doing
Are all Dialogflow Messenger suggestion chips used (handled)?
This feature is still in Beta and I am still improving it
This is a pretty common error. You will have multiple suggestion chips inside a decision tree bot and not all suggestion chips are handled in the next intent. So if the user clicks one of the buttons it will not work properly.
This works only for the Dialogflow Messenger integration for now.
I modified the Decision Tree Bot quickstart template to introduce an error (basically I deleted an intent which handled a suggestion chip)