DialogFlow is an online service and platform to construct chat bots that can be used through a REST API or through the integration with other platforms as Slack. In this ocassion, I was developing a chat bot in Python and it connected to a websocket using ActionCable. I am not an expert in Ruby on Rails (RoR), but I learned something: ActionCable uses websocket underneath, and exposes a custom protocol in order to support several channels, I can write my own ActionCable client in any language that supports websocket protocols, however, since RoR uses CoffeeScript by default, it was hard to translate ActionCable examples from CoffeeScript to Python. In summary, ActionCable is great, but I don't like CoffeeScript.

I share some disgusts with Python as well. I think Python is an awesome programming language, I can write clear code really fast and threading was easy peasy. The deployment was delightful also. However, I dislike the indentation rules and the package manager, especially after several years of working with JavaScript and NPM. But still, I enjoyed developing this little script (it is just about 300 lines of code).

On the other end, DialogFlow is a superb platform. It is really easy to setup rules for the chat bot using what they call Intents, Events and Entities. Intents are rules for natural languages sentences, and events, well, for programmatical events comming from the apps. Entities were not what I thought, and at the end I didn't used them. And last but not least, DialogFlow also features contexts, little pieces of knowledge that can be used to share information between intents or events.

It is a shame that at the time of writing, DialogFlow does not offer offline support or models export, one of the new requirements of the chat bot is to be able to work offline in the apps so we are now developing our own implementation, leveraging the training and the model generation to TensorFlow.