As we wrote a chat for the Otkritie Bank application

  • Tutorial
In the new application of Otkritie Bank, we have built chat for customer support, and this has become one of the largest and most complex stories in the framework of a large-scale update. To make a chat that meets the requirements of the bank in terms of functionality and information protection was not at all a trivial task.



Why bank chat


Fortunately, many issues with the bank can be resolved remotely, for example, by calling the call center or writing a letter. But the apogee of remoteness is a chat with a support service operator: in online correspondence a client quickly, confidentially (no one eavesdrops on a conversation) and even sometimes cheerfully (chat operators are joking!) Manage their finances. Over the past couple of years, mobile messengers have become a familiar way of communication, and chat is an absolute must have for a modern banking service.

imageAlexey Kruglov, Senior Vice President and Director of Digital Products, Otkritie Bank
“Chat for any modern service is a transformation of the approach to communication with the client. People moved to messengers, they live there. And each time, forcing them to get out of this world, to call the call center or write an email, we strain them. Investing in the development of the chat now, we hope to get a long-term effect - not so much reducing costs for other channels of communication with customers, as reducing the outflow of customers from the bank in principle, as well as the influx of new customers who are impressed by the service, striving to be as convenient as possible. ”

And, of course, chat is also a valuable channel for collecting feedback.

imageAnastasia Grafskaya, Project Manager, “Discovery Digital”
“Basically, they write in the chat on two occasions: either with a request for service (financial and informational issues), or with some kind of complaint. In our case, chat played a very important role in collecting feedback on the recent redesign of the application. People write about what they like or dislike, ask when this or that function will be added. Chat is a completely new application functionality. He made us stand upside down and learn how to walk on our hands. In addition to introducing chat into the application itself, it took a lot of time and effort to deploy it in the bank’s infrastructure. Many moments had to be coordinated with the security service for a long time, colleagues from the claims department also did a tremendous job: it was necessary to hire and train new employees and teach them how to communicate with customers in a living language. ”

Pre-pilot


The idea that you need chat in the Otkrytie’s mobile app originated in the bank about a year ago. Then, long before the start of development and the emergence of a design concept, the team “Discovery Digital” decided to conduct an experiment, a kind of “pre-pilot”. It was necessary to convey to specialists who in the future had to communicate with customers via chat, the features of this communication channel, in which operators are living people who respond in a living language, rather than excerpts from the charters, rules and regulations.

imageKirill Kurashov, Project Manager, Discovery Digital
“I bought a sim card, registered a Telegram account and created a group chat there for the digital team and support service. When there was a free moment, we sent requests to this shared chat with the whole team of “Discovery Digital”. The operators answered, and then we mailed or sorted the answers together with them by mail or by phone (the Otkrytie support service is based in Saratov). At first there were super-detailed parsing letters, then just small comments. Then we set the standard for chatting with customers. ”

Then there were personal meetings, trainings and a special guide appeared, which collected recommendations for support service operators - how to handle and say hello, which words to use and which not, whether emojis are appropriate - depending on the age of the client, as well as other factors.

Unlike a regular messenger


From the point of view of the user, chat in the bank’s mobile application is no different from a regular messenger. In it, in the same way, you can send text, links, photos and location. If, for some reason, the chat is unavailable, the user still has the opportunity to contact the bank through one of the usual channels: by mail or phone.



Chat is available only in the authorized zone of the application, and this allows support specialists to immediately identify the client and get all the information necessary for working with his appeal (as well as choose a communication style). The user is thus relieved of the need to undergo an additional identification procedure.

For operators, the chat looks like a HelpDesk system familiar to them: with tickets, their routing tools, analysis and statistics of calls.



Currently, support specialists act in two roles:

  • Operators are those who directly correspond with users, solve their problems and close tickets.
  • Administrators are essentially controllers of the work of operators who monitor the speed and quality of work.

Each new client’s call creates a ticket in the system, which is automatically assigned to one of the free operators. The operator receives a notification in the browser and answers the user. When the issue is resolved, the operator says goodbye to the user and closes the ticket.



imageYulia Belonogova, Head of Claims Management, Otkritie Bank
“In total, over the course of a month, the bank receives 17-18 thousand calls through all channels: telephone, email, social networks, chat. About 200 calls come through social networks. The chat started working on July 6, and during the first day more than one and a half thousand questions were asked through it, that's a lot. We started in the afternoon and did not expect such a response. On the first night, all operators were busy diligently supporting customers. Now we have six operators, and they process about 150 tickets daily. A ticket is not a single request, but a dialogue, which can contain from one to 20-30 customer questions. A closed ticket is considered when a client says that he has no more questions. ”

To answer the first call via chat, the operator is given one minute. During this time, the client needs to make it clear that he is not alone, and the bank has already begun to delve into the essence of the issue and raise information. The time to resolve the issue varies depending on its essence. If this is a standard information request - for example, how are interest calculated on a card or when you need to make a minimum payment, the response speed, as a rule, does not exceed three minutes. If it comes to financial reimbursement, then it can take from 20 minutes to a day.

An administrator can perform both the manager’s role with the ability to view and download all dialogs and statistics, and the operator’s role, responding to tickets forwarded to him. Also, the administrator can create new operators and suspend access to existing ones.



Statistics collected on the server include:

  • number of processed and open tickets
  • first response time
  • call processing time

All this makes it possible to evaluate the performance of both an individual operator and the team as a whole. The distribution schedule of calls by hours and days of the week allows administrators to better plan the work of the department.

Ready-made solution VS custom development


The market for instant messaging solutions is boiling now and it would seem that finding the right component and integrating it into your product is not difficult. But when you need to build a customer support channel on the basis of chat, you have to take into account many nuances, including:

For security reasons, the solution should be deployed in the bank’s internal IT infrastructure. The chat should be able to integrate with the bank's systems to obtain information about customers, view the history of their operations, include tickets in the general circuit to measure the effectiveness of the entire support service. Metrics and reporting must comply with the corporate standards of the HelpDesk division.

We analyzedopen source products available on the market, and for various reasons, none of them came up to us. Either they did not pass according to security criteria, or did not suit the implementation language, or they needed to make a large number of improvements to the code, as existing solutions are more focused on the functionality of ordinary instant messengers - correspondence between the client and the client. It should be noted that this analysis was carried out exactly a year ago, and during this time the functionality of some solutions could undergo changes. As a result, they decided to write a chat on their own.

We did not become tied to existing protocols for sending messages, such as XMPP or WAMP, due to their bulkiness, redundancy and high complexity. Most third-party solutions are overloaded with unnecessary details for all occasions, we would have to support all this and still explain to the security service why the extra parameters were passed. The quality of libraries for all the languages ​​we need was also in question. Therefore, we implemented chat via WebSocket on our own JSON specification.

Implementation and deployment of chat


Chat consists of three blocks:

  • Directly the server where all logic works and messages are routed.
  • The client part is the SDK, which is embedded in mobile applications (iOS and Android) and on the site.
  • Workstations of support operators and administrators - web panels for conducting correspondence with customers and viewing and downloading message statistics.


imageVladimir Vyalov, backend developer, Redmadrobot
“The need to write your own asynchronous chat server set this project apart from others. At the very beginning, you had to choose a framework: the main choice was between nodejs, asyncio and Tornado. Asyncio is only available since Python 3.4, but we have already used the latest generation language in production in other projects, so we selected it. It was necessary to implement asynchronous interaction with PostgreSQL, Redis, RabbitMQ, message passing through web sockets and cover the asynchronous code with tests. As a result, the experience with asyncio was successful, and I will choose it again for the next projects. ”

For the first month and a half, all components of the system were developed in parallel and were not interconnected. Managers nervously walked along the corridors in anticipation of the start of integration :) Finally, this moment has come, and after several filings the chat started working! Initially, it was possible to write to each other, and we were able to connect the QA department. However, it was hardly possible to call the system stable in that version - messages were lost, connections were broken, the server crashed. It took us a while to stabilize the system and find the causes of the problems. Between the browser and the server I had to do ping / pong to determine the status of the connection, for several iterations we fixed bugs in the RabbitMQ / chat server bundle and learned how to deal with duplication of messages on mobile devices. But we still missed some bugs at the initial stage,

It was not easy to open a chat, because the bank has many security requirements and its own view on the organization of the backend.

imageArthur Sakharov ( mc_murphy ), Technical Director, Redmadrobot
“Of course, not all of our technology stack is used in the bank. Usually we write in Python, take the Postgres database, connect the RabbitMQ queues, keep the cache on Redis, raise the Docker containers on Linux - for the bank, this whole environment is considered untrusted by default. They got used to the fact that MS SQL is everywhere, applications are written in .Net or Java, and much has been deployed to Windows Server. For this stack, all the necessary procedures have been worked out, analyzers are set up, bank experts are able to independently support and deploy them.
As a result, we found a compromise with the security service, replaced a small part of our standard components, and for most of the solutions (for example, we left Python and Postgres), they did not fit into the current bank stack, but into future plans to update the IT infrastructure. It turned out that this project, among other things, became a training ground for the Security Council, architects and escorts, at which they raised the necessary procedures. Thanks to the dedicated team and the help of “Discovery Digital”, we managed to do this as soon as possible. ”


How it works


Recently, a client wrote via chat. He was in Georgia and could not receive funds at the ATM due to exceeding the cash withdrawal limit, which is set for security purposes. “Understand,” he says, “I have five more days to be here, but I can’t withdraw money, I don’t have anything to buy a return ticket for, and even the funds are over on the phone.” It was technically impossible to increase the limit, so the operator had to be smart:



Everyone at the bank understands that chatting should be simple and human, but punctures happen :) One of the clients asked a question via chat and received an excerpt from banking conditions instead of a friendly answer. The client was surprised, took a screenshot of the correspondence and sent to Twitter. At the same time, he asked the question: “How can I close an account in your bank?” In response to this, they sent him full detailed instructions on how to do this. It was an epic fail.



The problem of the client, who quite rightly got angry with Ctrl C + Ctrl V, of course, was solved. And for the bank, this case has become a reference case of how to learn from your mistakes.


Results and plans


Some of the plans for the future:

  • Chat launch on Android and in the prelogin zone (in limited mode);
  • Automation of answers using a bot;
  • The analytical dashboard of the administrator, which allows real-time monitoring of the loading of both a specific operator and the entire department, as well as the speed of processing calls;
  • Integration with various backends on the customer side. First of all - with banking CRM;
  • Adding a second level of support: new roles for support specialists and ticket routing scripts (tickets will be distributed after evaluating their complexity and will fly even faster);
  • IP Telephony Connection: Call routing is similar to phone calls.

In the meantime, the bank continues to experiment with the new communication channel and sometimes it is necessary to understand not only financial issues ...



... and tear templates :)


Stay tuned!

Also popular now: