Recently, I received a comment on my post which talks about whether Dialogflow is open source. The comment linked to an open source chatbot framework, and helped me remember that I have wanted to write a post on this topic for a while now.
In my view, it is possible to measure the flexibility and power of a chatbot framework by using it to develop the following types of chatbots. That is, in my view, building out a set of about 7 chatbots is plenty to get a very good idea of the capabilities of a bot framework.
Comparisons with other Bot Frameworks
There was also another type of question which motivated this. Some of my coaching students have asked me about the following:
Dialogflow vs Amazon Lex
Dialogflow vs Microsoft Bot Framework (LUIS)
Dialogflow vs IBM Watson
Since I specialize in Dialogflow, and haven't gone nearly as deeply into any of the other frameworks, I cannot give a complete answer to this question. However, if you are one of those people evaluating these frameworks, you could actually use this as a little checklist to do your own research.
Try and see how easy it is to build the following types of bots in the framework of your choice. Search for some code samples, and maybe some chatbot templates, and play around with them and try and customize it to your own needs. You will be able to figure out the pros and cons of each chatbot framework by doing this exercise. (I am not saying it will be quick, but I am saying it will be a pretty methodical approach).
An FAQ bot is quite straightforward. After you train your chatbot with a group of phrases, it should be able to do decent pattern matching when someone asks a question which is close to but not exactly the same question.
An FAQ chatbot is the simplest test (in my opinion) if you are trying to incorporate "AI" into your chatbot. It shows how well your bot framework can do "word pattern matching" - ultimately this is the core functionality of a chatbot framework (again, in my opinion), with a lot of helpers such as entities and contexts and webhooks to assist in the process.
This is a bot which collects a list of inputs from a user. For example, you can think of creating a chatbot which gets information from users instead of your website's contact form. 
When you collect a list of inputs from the user, quite often you need something similar to system entities in Dialogflow. In addition you need to sequence your questions and you need to be able to implement some kind of conversation ordering, so you would likely also use contexts to move the conversation from one step to the next. (Also, can you do this without using slot filling?)
Chemical Element lookup bot
This is a chatbot which takes as input a question such as the following:
what is the atomic number of Nitrogen?
what is the symbol of Boron?
and responds with the appropriate answer.
To work properly, you need to use non-system defined entities (called developer entities in Dialogflow) to specify the list of elements. In addition, you need some rudimentary business logic (that is, code which does the actual lookup) for which you need to implement some kind of webhook.
Sports stats chatbot
On my website, you will find a chatbot which can give you stats for cricket players based on the StatsGuru portal on the Cricinfo website. If you are not familiar with the game of cricket, just imagine that this is a chatbot which can take questions in natural language about your favorite sport and provides the appropriate sports statistic for the player/team/entity of interest.
This will usually reveal the more advanced capabilities of a bot framework. How many values can you add for a given entity (e.g. number of pro players in the entire sport)? Can your bot distinguish between two queries which use very similar phrases but are actually asking different types of stats? How well can you train it to improve this performance over time?
Other than the general interest amongst your audience, this will also reveal how flexible your chatbot can be. For example, in my demo quiz bot, I use the wildcard entity to capture wrong answers. You need something similar to handle the wrong answers in your quiz bot too.
Yes/No Branching bot
This is a "diagnostics" chatbot which can ask a series of simple yes/no or multiple choice questions to help users diagnose a problem. Or it can be a sales-related chatbot which asks a series of yes/no questions to verify if a product is suitable for a given customer. It could also be a dichotomous key chatbot asking a series of yes/no questions to identify an unknown species you just saw on your walk today.
The idea is, there are many scenarios where you would be interested in a chatbot which branches into two or more paths based on user's answers.
The followup intent is a feature in Dialogflow which can help you implement branching chatbots. Do you have an easy way to do that in your chatbot framework? Also, if you need to implement the same functionality without using followup intents, is it possible to do so in your framework (in Dialogflow you can define your own contexts to mimic this behavior).
"Tell me a Joke" Bot
For example, I have built a chatbot which gives you a random Chuck Norris joke on request.
This is a chatbot which reveals how easy it is for you to incorporate external APIs into your chatbot.
When presenting or promoting your chatbot framework, it would be helpful if you can showcase some example chatbots. It would be even better if the bot's behavior can be easily replicated by the user - as an example it is very easy to do this in Dialogflow by exporting the agent ZIP file. Today's website contact form plugins incorporate a TON of functionality, including things like advanced Zapier integrations. So you don't get feature parity with a contact form plugin by simply implementing a chatbot. It is just a suggestion to test your bot framework's capabilities, so don't go and replace your contact form with a chatbot yet.
- Dialogflow vs RASA NLU
- Dialogflow vs Lex vs LUIS vs Watson vs Chatfuel
- Machine Learning vs non-Machine Learning algorithm
- BotFlo update
- Learn Dialogflow basics for free (till May 31)
- 10+ practical projects to learn spaCy in depth
- An Epidemiology Glossary for Programmers
- All my mini-courses are free this week
- Reader Question: What if a specific system entity isn’t available in all languages in a multi-lingual bot?
- How much can Machine Learning ACTUALLY help with answering free-form questions?