I got this via Twitter:
@aravindmc Hello Aravind. I just read one of your DialogFlow Articles. Do you think it would be possible to build a full, robust bot only using DialogFlow? If I was building the same bot with ChatFuel vs. DialogFlow, could they have the same features? Can one do more?
— RankPull (@RankPull) April 20, 2018
Let me answer the second part of the question: If I was building the same bot with ChatFuel vs. DialogFlow, could they have the same features?
The short answer is : No
There are three aspects to this, although you might say they are all connected.
The AI required to understand user requests
Chatfuel recently added some AI to their bots. It is effectively doing simple keyword matching (and probably a little extra intelligence) to try and understand what the user says.
Suppose you create a Chatfuel chatbot and want to provide city-specific information to your users. How can you specify these cities? In Dialogflow, you just use the built-in system entity called @sys.geo-city and be done with it. In Chatfuel, to the best of my knowledge, there isn't an easy way to implement it.
In other words, without a more bottom-up paradigm, it is very hard for Chatfuel's Natural Language Understanding (NLU) to match Dialogflow's NLU capabilities, for the simple reason that they were architected in completely different ways to begin with.
Conversation building blocks
The built-in, readily available conversation building blocks are the main reason you might want to use a bot framework such as Dialogflow. Interestingly, I don't even think there is completely parity between the different AI-based bot building frameworks - Dialogflow, LUIS, Lex etc. (But I am not saying one is better than the other here).
For example, Dialogflow has the concept of hard-coded, static contexts. I believe (and please correct me if I am wrong), the other frameworks such as Lex only allow you to specify contexts via code. As it turns out, this is a pretty big difference.
For example, because of these hard-coded contexts, it is possible to build fairly sophisticated Dialogflow chatbots without leaving the visual editor. You still need to get the help of a programmer to code the business logic, but the bot creator has a much better high level overview of what is going on.
Now let us get back to the Chatfuel and Dialogflow comparison. Since Chatfuel doesn't really have the "conversation building blocks" that Dialogflow does (e.g. system entities, developer entities, contexts) the NLU capabilities of your Chatfuel bot will always be a little limited.
Coding the business logic
Dialogflow has this concept called webhooks which you can use to add business logic to your chatbot. Once Dialogflow understands the user's request and extracts the relevant information, it sends all this extracted data to some code which is running on your server. This code, also called webhook, allows you to build very powerful chatbots.
While Chatfuel also has a somewhat similar concept via the JSON API, there is a big difference in capabilities.
Since Dialogflow is able to extract more information from a user's message (e.g. the city name discussed in the previous paragraph) and also able to maintain the conversation state using the context, the data sent over to the webhook is more complete. To achieve the same effect in Chatfuel would require a lot more work from the bot creator.
Now let me answer the other questions.
Do you think it would be possible to build a full, robust bot only using DialogFlow?
Yes, and I have written about it in some detail here.
Can one do more?
This doesn't have a simple answer.
- If you absolutely need a tool where you specify all the business logic using nothing more than visual building blocks, then clearly Chatfuel is better.
- On the other hand, if you want more sophisticated NLU, then Dialogflow is better.
- There are some plugins in Chatfuel which make you very productive if you need those features (e.g. Live Chat). Implementing the same using Dialogflow is usually a lot more effort
- If you are building a bot which might evolve into requiring more sophisticated NLU capabilities, you will probably get stuck if you go with Chatfuel
I would also ask people who are comparing Chatfuel with Dialogflow to consider a few more things.
First, you can use Dialogflow to add AI to your Chatfuel bot. I have created a course on how to do this, but I got feedback from the Chatfuel community that it is "too Dialogflow focused". So buyer beware!
Second, there is also the question of whether Dialogflow bots can mimic Chatfuel bots. For example, I have a course on creating "Rich Webchats using Dialogflow" which lets you add buttons, images, formatted text and other bells and whistles to your website chatbot built using Dialogflow. Since the course is not a plugin and only provides the framework, you can extend it to do pretty much whatever you want (it is just a web app).
Third, while Chatfuel bots are created to be deployed on Facebook Messenger, Dialogflow allows you to target multiple messaging platforms such as Messenger, Skype, Slack, Telegram etc. Given Facebook's recent policy changes, going all in on Facebook Messenger Bots doesn't look like a very smart thing to do at the moment (although, it is just my opinion and I don't have any special insight into these things).
- How to debug your Dialogflow bot
- Client Question: Can I use GPT2 for my Dialogflow bot?
- Weekly Free Mini Courses
- 15 things all Dialogflow bot makers should know
- Autogenerating FAQ bot from training text
- A MUST read article on Dialogflow training phrase quality
- Using Collect.chat for preNLU bots
- Reader Question: How to get some sample training data for Dialogflow?
- Getting the top 3 (or top N) intents in Dialogflow: An experiment
- Dialogflow Regexp (regular expression) entity