In 2017, we developed a Java framework for building smart chat bots to explore the trending technology. The framework provides a bunch of abstractions and allows developers to concentrate on implementation of business logic.
The behavior logic is split into independent components. Users can create different sets of bot replies, randomly rotate answers for the same input, and setup different reply styles to simulate different bot “characters”. Bots built on this framework can be connected to different chat platforms easily. This framework was further used to produce specific chat bots for internal use to help with time tracking and managing some internal assets like virtual machines.
We wanted to use chatbots within the existing infrastructure, avoiding deploying any cloud-based solutions due to internal security policy. At that time, the existing solutions did not match our requirements and limitations, so it was decided to develop our own.
We used our framework to create a couple of internal solutions. One of them helped engineers with their time tracking. This chatbot was integrated into our company RocketChat. People would write text in a free form in a dedicated chat room, like “Today I spent 2 hours developing my component X”. The chatbot would analyze the data and determine the person, project, task, number of hours spent and fill all this data into the proper spreadsheet for further analysis. On top of our framework, we used Rasa NLU, an open-source tool for intent classification and entity extraction, which is a set of high level APIs for building a language parser using existing NLP and ML libraries.
Another solution was built to manage our complex virtual machines' cluster which we use to support development infrastructure for one of our customers. Numerous virtual machines were stored together with their snapshots and actively used for development and QA. The machines were exposed to outer connections through a DMZ, but the number of simultaneous external connections was limited. Team members could ask the chat bot and get info whether a specific virtual machine was up and running, display the list of virtual machines, and the list of available IPs reserved for them. The info from the chatbot allowed quick re-configuration of the virtual machines if needed. To enable different chats, we used Hubot by GitHub, which, along with pre-built functionality, allows writing your own scripts.
Both solutions were in use for a year until replaced by modern versions of respective apps.
- Back-end: Hubot, Rasa NLU