Botfuel Dialog

An open-source Node.js framework and SDK for building highly conversational chatbots.

The Internet is being transformed by chatbots and voice assistants. More and more services are provided through these new channels. In China, Tencent’s WeChat messaging app is becoming the main way to access information and services. Other countries are experiencing something similar: more than 100, 000 chatbots have been built on Facebook Messenger since its opening to bots during the F8 conference in April 2016. Unfortunately, most of the current chatbots do not take full advantage of the exciting possibilities that truly conversational messaging offers. Instead, they are very rigid because they are built using decision trees. As a consequence, they are very frustrating for their users and barely used.

At Botfuel, we think that the conversation is the new user interface. Probably the ultimate UI until brain implants arrive… Since early 2016, we have been working on a framework that would allow chatbot developers to build highly conversational chatbots easily. For a chatbot, to be conversational means:

Understands multi-intents well. This is important because people often express several intents in a single sentence:

Bot: Your plane ticket is in your cart.
User: Thank you, and now I would like to book a hotel room

Recover from digressions gracefully. When something comes to your mind, it’s natural to talk about it right away:

Bot: When do you leave for London?
User: Is extra luggage included in the price of the ticket?
Bot: Yes. When do you leave?

Handle change of minds nicely. People make mistakes or change their minds. Bots have to react to the unexpected:

Bot: When do you leave for London?
User: Made a mistake, flying to Liverpool instead.
Bot: Ok. When do you leave for Liverpool?

Moreover, we think that chatbots are, by nature, not very different from web or mobile applications and should be built as such. This has several key implications:

  • Developers, and not business people, should be responsible for their actual implementation
  • While most chatbot building platforms try to make it as easy as possible to develop simple chatbots, we think that developers deserve a flexible and powerful framework that would allow them to develop sophisticated and robust chatbots
  • Finally, treating chatbots as code makes it possible to version, to fork, to share and to test them … to name a few of the capabilities usually not available on UI-based chatbot platforms

Botfuel Dialog is an opinionated framework and SDK. Let’s review some of the decisions we made while building it.

Node.js

We believe that as chatbots become more and more prevalent, many developers who develop web and mobile applications will also be interested in developing chatbots. Therefore, the choice of Node.js for developing our SDK was a no-brainer. Indeed, the Node.js community is already the largest and is constantly growing.

Model-View-Controller

At Botfuel, we have developed many bots for enterprise customers. In the process, we have learned that organization of the code is one the main challenges in bot development. The MVC pattern is an elegant solution for structuring a client-server web application and the latter is not much different from a chatbot. With our SDK, a chabot is composed of dialogs (controllers in MVC), views (also view in MVC) and a brain (model in MVC).

Convention over configuration

We have been inspired by Ruby on Rails in many aspects and the notion of sensible defaults (convention over configuration) is one of them. We want to make it easy for a developer to build simple bots while letting him/her configure almost everything when needed.

Views and React.js

At Botfuel, we use React.js a lot for building web interfaces. When we had to design the message generation layer for our SDK, we realized that it was not much different from a view in the MVC pattern and were inspired by React.js’s code-driven approach.

Botfuel has worked with many clients such as banks and insurance companies, among others, and Botfuel Dialog has been designed to fulfill the requirements of such sophisticated enterprises. Among these requirements, the following are probably the most important:

Testability

Nobody would disagree that testing is essential when developing software. Why would chatbots be any different? This is why we had testability in mind when developing Botfuel Dialog. As a result, it comes with a test framework allowing for the quick development of various kinds of tests.

Internationalization

Successful chatbots are very frequently deployed in several languages. The framework should make it easy to adapt a chatbot to another language without having to re-develop it from scratch.

Scalability

Being able to serve hundreds or thousands of concurrent requests is mandatory when your chatbot is used by millions of users. The architecture of the bot should allow for horizontal scalability while maintaining data consistency.

Avoiding lock-in

Corporate clients usually have internal technology constraints and are interested in avoiding any vendor lock in. Botfuel Dialog does not add any new constraints regarding either hosting or third party software used by the bot (for example, imposing a specific database for a persistent brain).

The result of this work is Botfuel Dialog - an open-source Node.js chatbot development framework and SDK. It is available on GitHub and comes with several samples aimed at illustrating how it can be used for several use cases.

We look forward to seeing the incredible conversational experiences you will build with Botfuel Dialog. As we continue to improve our platform, your feedback is very valuable for us. If you have any issues, questions, or suggestions feel free to open a ticket here.