There is work for the chatbot: a virtual support desk assistant

Chat bots from exotic features of online stores are increasingly turning into a useful tool, especially in the corporate sector. Recently, we have created a chatbot that makes it easier for our support team to work with applications of one of the largest customers.

Why did you need a chatbot when working with just one company? It's all about size. The client is a very large online store that needs round-the-clock technical support of IT infrastructure, notification of problems, processing and execution of incoming applications as soon as possible. The latter is especially important, given the daily audience of the client and the volume of trade.

However, high demands on the quality and speed of processing applications by technical support specialists clashed with all sorts of routine and distractions. Engineers had to constantly switch between completely different contexts, which increased the likelihood of error and reduced productivity. And this, in turn, is a direct way to increase the number of applications.

Well, in addition, applications can often be executed much faster if you speed up the flow of information about various events. In practice, the duty shift of the Service Center needed to be notified of the receipt of a new application, the engineers had to log in to the application management system and look for the right one, while they were tied to their workplace.

Therefore, the desire to partially automate our workflow for a long time did not allow me to sleep peacefully;). I wanted to come up with a way to remove part of the routine from the engineers, to reduce the number of distractions when fulfilling applications. It was also desirable to inform engineers and managers as quickly as possible, but at the same time so that they did not need to be seated at computers and spend time authorizing and searching. I wanted to combine the customer request management system with our monitoring system.

As a result, a solution was found - we decided to create a chat bot that would send notifications to specific employees or groups. They decided to write in Python, and Telegram was chosen as the environment as one of the most common messengers that can be integrated anywhere. In addition, Telegram clients are available for almost all platforms except some Nokia 3110, so all support staff can immediately receive notifications on their computers / laptops / smartphones / tablets.

The chatbot was an “initiative from below”, resources and working hours were not allocated for it, so they did it during after-hours hours, which took a lot of time. So what was implemented?

Firstly, we integrated the chatbot with Assyst, a customer request system . Now there is no need to separately notify the duty shift about the appearance of a new application or incident - the chat bot throws a message to the appropriate group.

The message shall indicate the application number, last name and first name of the engineer who worked on it earlier, urgency and three action buttons. You can immediately see the description, accept the application for the group or for yourself. If a specialist previously worked on the application and she returned back to the group, the bot will notify the person responsible and send a comment with which the application returned.

So engineers are now much quicker to understand returns, and the responsible person is always known.

We also added alerts for applications that have less than a day left before the deadline. Such notifications are sent several times a day, so that it would be convenient for engineers to plan their work day, and at the same time not to forget about any task. The message shall indicate the application number, the responsible officer and how much time is left before the deadline.

The chatbot was integrated with the application management system using two versions of the REST API - new and legacy . Technically, this API is not complicated: POST and GET requests, parsing and data conversion.

Our chatbot is also able to manage some means of restoring the server’s health and notifies the client when the servers are up again .

The chatbot checks the server’s performance based on data from the monitoring system, and timely reports on problems with a server.

In this case, the bot provides the ability to collect heap and thread dumps, providing output files for dump for subsequent transfer to the development team.

Of the key points here, it is possible to note the automatic check of free space to exclude the possibility of stopping the business application, determining the PID of the process and adding read permissions for the ability to download files.

Using a chatbot, an engineer can run a server reboot script .
If the engineer decides to restart the failed server, the bot sends a message that changes in real time, showing the stages of the reboot.

As part of the script, a whole bunch of automatic tasks are performed.

  • Our monitoring system creates a service mode.
  • Business users on the client side are not allowed to make changes to the "window" of the online store (implemented using Selenium Webdriver ), which these users are notified via the Skype bot. Now the shift on duty is not distracted by calls "Nothing works for us, help."
  • The server is removed from balancing so that user requests do not go to a non-working server.
  • The Java application is rebooted (implemented using the Weblogic Scripting Tool using Jython (this is a Python implementation of the Java language).
  • The server is added to the balancing again.
  • Server performance is checked by checking the main triggers from the monitoring system.
  • The monitoring system deletes the service mode.
  • The ban on changing the "showcase" of the online store is lifted, and business users receive an alert in the Skype group (implemented using the Skype bot ) that the servers are back in operation, you can work. Опять же ­— это делается автоматически, инженерам не нужно отвлекаться на рутину.

Finally, another task that our chat bot solves is preparing a report and predicting the timing of technical support tasks . What is it and why is it important? Suppose some application for technical support involves performing several sub-tasks that can be performed both sequentially and in parallel. The task itself is an XML file with a list of subtasks. And on different days, the list of these subtasks can be different. The engineer is asked: “When will it be ready?”, And what should he answer? This situation is perfectly described by the Gantt chart :

How we answered the question about the deadline for the implementation of the chat bot:

  • the start time of the work and the list of subtasks were determined,
  • then it was determined which subtasks were completed and which were performed,
  • for each subtask from the database, an approximate duration was pulled,
  • Based on all this data, the engineer could give an estimated date.

The chatbot greatly simplified our lives: it automatically determines the start time of the work, a list of subtasks (implemented using recursion and the lxml module ), determines the status of each subtask with the appropriate database queries (implemented using cx_Oracle ), and builds a forecast based on averaged statistics data on the duration of the subtasks for previous days.

Perhaps this functionality was the most difficult for me: I had to tinker a lot with calculations and data processing.

Our chat bot has been working for only two months, but you can already summarize some of its work.

Firstly, the response time of technical support for incidents and applications has decreased - the performance indicator of the OLA (Operational Level Agreement, agreement on the levels of operational support) has improved by 80%.

Secondly, each engineer on average began to fulfill 5% more applications. Each month, 1,200-1,800 applications are executed for this client, 20–70 per day.

Thirdly, specialists began to spend less time on routine procedures like marking applications: in order to set the reaction time in Assyst, you need to press a few buttons and wait for the download, and in Telegram you press the button and the application is marked.

We considered the experiment with the chat bot successful and in the future we plan to clone the bot for other workgroups (already implemented for the SAP BI group in terms of working with the application management system), we want to transfer functionality to other platforms (Skype, Slack, Whatsapp and Viber) and add new automation processes.

Alexey Egorov, Senior Administrator of Application Software, Jet Infosystems