📜 ⬆️ ⬇️

How we wrote a chat for the application of the bank "Opening"

We have built a chat for customer support into the Otkrytie Bank application , and this has become perhaps one of the largest and most complex stories within the framework of a large-scale update. Making a chat that meets the requirements of the bank in terms of functionality and information protection turned out to be not a trivial task at all.



Why can chat


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

image Alexey Kruglov, senior vice president and director of digital products at Otkritie Bank
“Chat for any modern service is a transformation of the approach to communication with the client. People moved to instant 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. By investing in chat development now, we hope to get a long-term effect - not so much a reduction in the cost of other communication channels with customers, but a reduction in the outflow of customers from the bank in principle, as well as an 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 feedback channel.

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

Preprepilot


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

image Kirill Kurashev, Project Administrator, “Discovery Digital”
“I bought a sim card, registered an account with Telegram and created a group chat for a digital team and a support service there. When the free moment was given out, we with the whole team “Discovery Digital” sent requests to this general chat. The operators answered, and then we mailed or by phone (the Otkrytie support service is based in Saratov) together with them analyzed the answers. Initially, there were super-detailed parsing letters, then just small comments. Then we set the standard for communicating with customers in the chat. ”

Then there were personal meetings, trainings and a special guide appeared in which recommendations for support service operators were collected - how to contact and greet, which words to use and which are not, whether emoji is relevant depending on the age of the client, as well as other factors.

Difference from the usual messenger


From the user's point of view, the chat in the bank’s mobile application is no different from the usual messenger. It also allows you to send text, links, photos and location. If for some reason the chat is unavailable, the user can still 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 request (as well as to choose the style of communication). The user is free from the need to go through an additional identification procedure.

For operators, the chat looks like the HelpDesk system they are used to: with tickets, routing tools, analysis and access statistics.



At the moment, support specialists are playing in two roles:


Each new client request 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 responds to the user. When the issue is resolved, the operator says goodbye to the user and closes the ticket.



image Yulia Belonogova, Head of Claims Management, Otkritie Bank
“In total for the month, the bank receives 17-18 thousand calls from all channels: telephone, email, social networks, chat. Through social networks comes about 200 hits. Our chat started working on July 6, and in the first 24 hours over 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 the operators were busy supporting the customers diligently. Now we have six operators, and they process about 150 tickets every day. A ticket is not a single request, but a dialogue, which can contain from one to 20-30 client questions. A ticket is closed when a customer says that he has no more questions. ”

To answer the first call through the chat, the operator is given one minute. During this time, the client should be made to understand that he is not alone, and the bank has already begun to delve into the essence of the issue and raise information. Time to resolve the issue varies depending on its essence. If this is a standard information request - for example, how interest is charged on a card or when you need to make a minimum payment, the response rate, as a rule, does not exceed three minutes. If we are talking about financial reimbursement, it can take from 20 minutes to a day.

The administrator can perform as a manager with the ability to view and upload all dialogs and statistics, as well as the operator, responding to the tickets forwarded to him. Also, the administrator can create new operators and suspend access to existing ones.



Statistics collected on the server include:


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

Ready solution VS custom development


The market for instant messaging is now boiling and seemingly finding the right component and integrating it into your product is easy. But when you need to build a customer support channel based on the chat, you have to take into account many nuances, including:

For security reasons, the solution should be deployed in the internal IT infrastructure of the bank. The chat should be able to integrate with the bank's systems in order 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 HelpDesk-based corporate standards.

We analyzed the open source products available on the market, and for various reasons, none of them came up to us. Either they did not pass on the security criteria, or did not arrange the implementation language, or a large number of improvements to the code were required, since the existing solutions are more focused on the functionality of ordinary instant messengers - client correspondence with the client. It is necessary to make a reservation 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 didn’t bind to existing message passing protocols, 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 are transmitted. The quality of libraries under all the languages ​​we need was also in question. Therefore, we implemented chat via WebSocket on our own JSON specification.

Implementing and deploying a chat


Chat consists of three blocks:



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

For the first month and a half, all components of the system were developed in parallel and were not interconnected. Managers nervously walked through the corridors in anticipation of the start of integration :) Finally this moment came, and after a few filings, the chat started working! Initially, the opportunity to write to each other, and we were able to connect the QA department. However, it was hardly possible to call the system in that version of it stable — messages were lost, connections were torn, the server was falling. It took us some time to stabilize the system and find the causes of the problems. Between the browser and the server, I had to ping / pong to determine the connection status, for several iterations I fixed bugs in the RabbitMQ / chat server bundle and learned how to deal with duplicate messages on mobile devices. But at the initial stage, we missed some of the bugs, because they only make themselves known when hundreds of people start writing to the operators at the same time, and it’s difficult to fully emulate such activity on the test environment.

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

image Arthur Sakharov ( mc_murphy ), CTO, Redmadrobot
“Of course, not all of our technology stack is used in the bank. We usually 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 MS SQL everywhere, applications are written in .Net or in Java, and a lot of things are deployed on Windows Server. For this stack, all the necessary procedures have been worked out, analyzers are set up, the bank's specialists 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 solutions (for example, we left Python and Postgres) did not fit into the current bank stack, but in future plans for updating the IT infrastructure. It turned out that this project also became a training ground for the Security Council, architects and support, at which they lifted 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, through the chat, the client wrote. He was in Georgia and could not get money from an ATM due to exceeding the cash withdrawal limit, which is set for security purposes. “Understand” - says - “I have five days left to be here, but I cannot withdraw money, I have nothing to buy a return ticket for, and the money on the phone has run out”. It was technically impossible to increase the limit, so the operator had to be smart:



Everyone in the bank understands that communication through chat should be simple and humane, 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, scored a correspondence and sent to Twitter. In parallel, he asked the question: “How can you close the account with your bank?”. In response to this, he was sent full detailed instructions on how to do this. It was epic fail.



The problem of the client, who was rightly angry with Ctrl C + Ctrl V, of course, was solved. And for the bank, this case became the reference case for how to learn from their mistakes.


Results and plans


Some of the plans for the future:


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



... and tear the templates :)


Stay tuned!

Source: https://habr.com/ru/post/308398/


All Articles