Як ми написали чат для програми банку «Відкриття»

новий додаток банку «Відкриття» ми вбудували чат для підтримки клієнтів, і це стало, мабуть, однією з найбільш великих і складних історій в рамках масштабного оновлення. Зробити чат, який відповідає вимогам банку по функціональності та захисту інформації, виявилося зовсім не тривіальною задачею.



Навіщо банку чат
На щастя, багато питань з банком можна вирішити віддалено, наприклад, зателефонувавши до колл-центр або написавши лист. Але апогей віддаленості — це чат з оператором служби підтримки: в онлайн-листування клієнт швидко, конфіденційно (розмова ніхто не підслухає) і навіть іноді весело (оператори в чаті жартують!) управляє своїми фінансами. За останні пару років мобільні месенджери стали звичним способом комунікації, і для сучасного банківського сервісу чат — абсолютний must have.

imageОлексій Круглов, старший віце-президент і директор з digital-продуктів банку «Відкриття»
«Чат для будь-якого сучасного сервісу — це трансформація підходу до комунікацій з клієнтом. Люди переїхали в месенджери, вони там живуть. І кожен раз, змушуючи їх вилазити з цього світу, щоб зателефонувати в колл-центр або написати email, ми напружуємо їх. Вкладаючись у розробку чату зараз, ми сподіваємося отримати довгостроковий ефект — не стільки зниження витрат на інші канали комунікації з клієнтами, скільки зниження відтоку клієнтів з банку, а також приплив нових клієнтів, яким імпонує сервіс, прагне бути максимально зручним».

І, звичайно, чат — ще й цінний канал збору зворотного зв'язку.

imageАнастасія Графська, менеджер проектів, «Відкриття Digital»
“В основному в чат пишуть по двох випадках: або із запитом на обслуговування (фінансові та інформаційні питання), або з якоюсь претензією. У нашому випадку чат зіграв дуже важливу роль у зборі фідбек з недавнього редизайну програми. Люди пишуть про те, що їм подобається або не подобається, запитують, коли додасться та чи інша функція. Чат – абсолютно новий функціонал програми. Він змусив нас встати з ніг на голову і навчитися ходити на руках. Крім впровадження чату в сам додаток, знадобилося багато часу і сил, щоб розгорнути його в інфраструктурі банку. Багато моменти доводилося довго погоджувати зі службою безпеки, колеги з претензійного департаменту теж проробили колосальну роботу: потрібно було найняти і навчити нових співробітників і навчити їх спілкуватися з клієнтами живою мовою".

Предпредпилот
Думка про те, що в мобільному додатку «Відкриття» потрібен чат, зародилася в банку близько року тому. Тоді, ще задовго до старту розробки та появи дизайн-концепції, команда «Відкриття Digital» вирішила провести експеримент, такий собі «предпредпилот». До фахівців, яким в майбутньому мав спілкуватися з клієнтами через чат, було необхідно донести особливості цього каналу комунікації, в якому оператори — живі люди, які відповідають живим язиком, а не витягами з статутів, правил і регламентів.

imageКирило Курашов, адміністратор проектів, «Відкриття Digital»
“Я купив симкарту, зареєстрував акаунт у Telegram і створив там груповий чат для digital-команди і служби підтримки. Коли видавався вільний момент, ми всією командою «Відкриття Digital» відправляли в цей загальний чатик запити. Оператори відповідали, і потім ми поштою або за телефоном (служба підтримки «Відкриття» базується в Саратові) разом з ними розбирали відповіді. Спочатку були суперподробные листи-розбори, потім просто невеликі коментарі. Тоді ми поставили стандарт спілкування з клієнтами в чаті".

Потім були особисті зустрічі, тренінги і з'явився спеціальний гайд, в якому зібрані рекомендації для операторів служби підтримки — як звертатися і вітатися, які слова використовувати, а які ні, чи доречні емодзі — в залежності від віку клієнта, а також інших факторів.

Відміну від звичайного месенджера
З точки зору користувача чат в мобільному додатку банку не відрізняється від звичайного месенджера. В ньому точно так само можна відправляти текст, посилання, фотографії та місце розташування. У разі, якщо з якоїсь причини чат недоступний, у користувача залишається можливість зв'язатися з банком через один із звичних каналів: поштою або телефоном.



Чат доступний тільки в авторизованій зоні програми, і це дозволяє фахівцям підтримки відразу ідентифікувати клієнта і отримати всю необхідну для роботи з його зверненням інформацію (а також вибирати стиль спілкування). Користувач при цьому позбавлений від необхідності проходити додаткову процедуру ідентифікації.

Для операторів чат виглядає як звична їм HelpDesk-система: з тікетами, інструментами їх маршрутизації, аналізом і статистикою звернень.



В даний момент фахівці підтримки виступають у двох ролях:

  • Оператори — ті, хто безпосередньо веде листування з користувачами, вирішує їх проблеми і закриває тікети.
  • Адміністратори — по суті контролери роботи операторів, які стежать за швидкістю і якістю роботи.
Кожне нове звернення клієнта створює в системі тікет, який автоматично призначається одному з вільних операторів. Оператор отримує повідомлення в браузері і відповідає користувачеві. Коли питання вирішене, оператор прощається з користувачем і закриває тікет.



imageЮлія Белоногова, керівник управління претензійної роботи, банк «Відкриття»
“В цілому за місяць у банк надходить 17-18 тисяч звернень по всіх каналах: телефон, електронна пошта, соціальні мережі, чат. Через соцмережі приходить близько 200 звернень. Чат у нас заробив 6 липня, і за першу добу через нього поставили понад півтори тисячі питань, це багато. Ми запустилися в другій половині дня і не очікували такого відгуку. У першу ніч всі оператори були зайняті тим, що старанно підтримували клієнтів. Зараз у нас шість операторів, і вони щодня обробляють близько 150 тікетів. Тікет — це не одиничний запит, а діалог, в якому може міститися від одного до 20-30 питань клієнта. Закритим тікет вважається, коли клієнт говорить, що у нього більше немає питань".

Для відповіді на перше звернення через чат оператору відводиться одна хвилина. За цей час клієнтові треба дати зрозуміти, що він не один, і банк вже почав вникати в суть питання і піднімати інформацію. Час вирішення питання варіюється в залежності від його суті. Якщо це стандартний інформаційний запит — наприклад, як нараховуються відсотки по карті або коли треба внести мінімальний платіж, швидкість відповіді, як правило, не перевищує трьох хвилин. Якщо йдеться про фінансове відшкодування, то це може зайняти від 20 хвилин до доби.

Адміністратор може виконувати роль керуючого з можливістю перегляду і вивантаження всіх діалогів і статистики, так і роль оператора, відповідаючи на переадресовані йому тікети. Також адміністратор може створювати нових операторів і припиняти доступ існуючих.



Статистика, зібрана на сервері, включає:

  • кількість оброблених і відкритих тікетів
  • час першої відповіді
  • час обробки звернень
Все це дає можливість оцінювати ефективність роботи як окремого оператора, так і команди в цілому. Графік розподілу звернень по годинах і днях тижня дозволяє адміністраторам краще планувати роботу відділу.

Готове рішення VS кастомний розробка
Ринок рішень для миттєвого обміну повідомленнями зараз вирує і, здавалося б, знайти відповідний компонент і вбудувати його в свій продукт не складе праці. Але коли на основі чату потрібно збудувати канал підтримки клієнтів, доводиться враховувати багато нюансів, в тому числі:

В цілях безпеки рішення повинно бути розгорнуто у внутрішній IT-інфраструктури банку. Чат повинен мати можливість інтеграції з системами банку для отримання інформації про клієнтів, перегляду історії їх операцій, включення тікетів в загальний контур для вимірювання ефективності роботи всієї служби підтримки. Метрики і звітність повинні відповідати корпоративним стандартам HelpDesk-підрозділу.

Ми аналізували доступні на ринку opensource-продукти, і з різних причин нам не підійшов жоден з них. Або вони не проходили за критеріями безпеки, яких не влаштовував мова реалізації, або потрібно зробити велику кількість доопрацювань до коду, так як існуючі рішення більшою мірою орієнтовані на функціональність звичайних месенджерів — листування клієнта з клієнтом. Треба зауважити, що цей аналіз був проведений рівно рік тому, і за цей час функціональність деяких рішень могла зазнати змін. В результаті прийняли рішення писати чат самостійно.

Ми не стали зав'язуватися на існуючі протоколи для передачі повідомлень, такі як XMPP або WAMP, через їх громіздкість, надмірності і високої складності. Більшість сторонніх рішень перевантажене зайвими подробицями на всі випадки життя, нам довелося б це все підтримувати і ще пояснювати службі безпеки, навіщо передаються зайві параметри. Якість бібліотек під всі потрібні нам мови також було під питанням. Тому ми реалізували чат через WebSocket на власній JSON-специфікації.

Реалізація і розгортання чату
Чат складається з трьох блоків:

  • Безпосередньо сервер, де працює вся логіка і направляються повідомлення.
  • Клієнтська частина — SDK, вбудований в мобільних пристроїв (iOS і Android) і на сайт.
  • Робочі місця операторів підтримки і адміністраторів веб-панелі для ведення листування з клієнтами і перегляду та вивантаження статистики повідомлень.

imageВолодимир В'ялов, розробник бекенду, Redmadrobot
“Необхідність написання власного асинхронного чат-сервера виділяла цей проект на тлі інших. На самому початку потрібно було вибрати фреймворк: основний вибір був між nodejs, Tornado і asyncio. Оскільки ми вже використали Python 3.5 в продакшені в інших проектах, то найбільше очок набрала бібліотека asyncio, яку ми обрали. Було необхідно реалізувати асинхронне взаємодія з PostgreSQL, Redis, RabbitMQ, передачу повідомлень через вебсокеты і покрити асинхронний код тестами. У підсумку досвід з asyncio виявився вдалим, і я знову виберу її для наступних проектів".

Перші півтора місяці всі компоненти системи розроблялися паралельно і не були пов'язані між собою. Менеджери нервово ходили коридорами в очікуванні початку інтеграції :) Нарешті цей момент настав, і після декількох подпиливаний чат заробив! Спочатку з'явилася можливість писати один одному, і ми змогли підключити відділ QA. Однак назвати систему в тій її стабільної версії навряд чи було можна — повідомлення губилися, з'єднання рвалися, сервер падав. Нам потрібно якийсь час, щоб стабілізувати систему і знайти причини проблем. Між браузером і сервером довелося зробити ping/pong для визначення стану з'єднання, за декілька ітерацій пофиксили баги в зв'язці RabbitMQ/чат-сервер і навчилися боротися з дублюванням повідомлень на мобільних пристроях. Але деякі баги на початковому етапі ми все-таки пропустили, тому що вони дають про себе знати тільки тоді, коли операторам починають одночасно писати сотні людей, а на тестовому оточенні повноцінно сэмулировать таку активність складно.

Розгорнути чат було непросто, оскільки в банку безліч вимог з безпеки і свій погляд на організацію бекенда.

imageАртур Цукрів ( mc_murphy ), технічний директор, Redmadrobot
«Зрозуміло, не всі з нашого стека технологій використовується в банку. Зазвичай ми пишемо на Python, беремо базу даних Postgres, підключаємо черзі RabbitMQ, тримаємо кеш на Redis, піднімаємо Docker-контейнери на Linux — для банку вся ця середовище за замовчуванням вважається ненадійна. Там звикли, що скрізь стоїть MS SQL, додатки написані на .Net або на Java, і багато розгорнуто на Windows Server. Для цього стека опрацьовані всі необхідні процедури, налаштовані аналізатори, фахівці банку вміють самостійно їх підтримувати і розгортати.
В результаті ми знайшли компроміс зі службою безпеки, замінили невелику частину наших стандартних компонентів, а по більшості рішень (приміром, ми залишили Python і Postgres) не вписалися в поточний стек банку, а в майбутні плани по оновленню інфраструктури IT. Вийшло, що цей проект в тому числі і став полігоном для СБ, архітекторів і супроводу, на якому вони піднімали необхідні процедури. Завдяки виділеній команді і допомоги „Відкриття Digital“ це вдалося зробити в максимально стислі терміни».


Як це працює
Нещодавно через чат написав клієнт. Він перебував у Грузії і не міг отримати в банкоматі кошти з-за перевищення ліміту на зняття готівки, який встановлений в цілях безпеки. «Зрозумійте» — каже — «мені ще п'ять днів тут бути, а гроші я зняти не можу, не на що купити зворотний квиток, та ще й на телефоні кошти закінчилися». Збільшити ліміт технічно було неможливо, тому операторові довелося проявити кмітливість:



Всі в банку розуміють, що спілкування через чат повинно бути простим і людяним, але трапляються проколи :) Один з клієнтів задав через чат запитання і одержав на нього замість дружнього відповіді витяг з банківських умов. Клієнт здивувався, заскриншотил листування і відправив в Твіттер. Паралельно він поставив запитання: «А як рахунок-то закрити у вашому банку?». У відповідь на це йому вислали повну докладну інструкцію про те, як це зробити. Це був epic fail.

@otkritieплювати на клієнтів, відповідають заготовлеными текстом c цитатами з угоди.Повернувся в улюблений @rocketbank pic.twitter.com/pIg9JFbnYf  Lev Pirogov (@pirogovoe) 28 липня 2016 р.

@pirogovoe вибачте, ми тільки вчимося поговоримо з Людмилою, щоб помилки більше не повторювалися.  Банк «Відкриття» (@otkritie) 28 липня 2016 р.

Проблему клієнта, який цілком обґрунтовано розлютився на Сtrl C + Сtrl V, звичайно, вирішили. А для банку цей випадок став еталонним кейсом того, як слід вчитися на своїх помилках.

@otkritie виправився, повернув гроші і навіть запросив у гості. Добрий і хороший колектив. pic.twitter.com/ZqqOOaQYMP  Lev Pirogov (@pirogovoe) 3 серпня 2016 р.

Підсумки і плани
Дещо з планів на майбутнє:

  • Запуск чату на Android і прелогин-зоні (в обмеженому режимі);
  • Автоматизація відповідей за допомогою бота;
  • Аналітичний дашборд адміністратора, що дозволяє в режимі реального часу відстежувати завантаження як конкретного оператора, так і всього відділу, а також швидкість обробки звернень;
  • Інтеграція з різними бэкендами на стороні замовника. В першу чергу — з банківської CRM;
  • Додавання другого рівня підтримки: нових ролей фахівців підтримки і сценаріїв маршрутизації тікетів (тікети будуть розподілятися після оцінки їх складності і почнуть літати ще швидше);
  • Підключення IP-телефонії: маршрутизація викликів аналогічно телефонним дзвінкам.
Ну а поки банк продовжує експериментувати з новим каналом комунікації і деколи доводиться розбиратися не тільки у фінансових питаннях



… і рвати шаблони :)


Stay tuned!
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.