Як ми робили бота для банку "Відкриття"

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


Що у бота під капотом?
Приступаючи до роботи, ми думали про ситуаціях, коли користувачеві буде зручніше взаємодіяти з ботом, а не з основним мобільним додатком. Список переваг бота вийшов таким:

  • Доступний для всіх клієнтів і не-клієнтів банку
  • Не потрібно нічого встановлювати
  • Легко авторизовуватись
  • Можна вбудовувати на веб-сайт і в термінал самообслуговування
  • Багатоплатформовий
Але природно, в порівнянні з додатком бот має і ряд серйозних обмежень:
  • Стороння середовище
  • Обмежене якість візуалізації
  • Не-realtime система і менша чуйність, наприклад, при виборі фінансового продукту
  • Неможливо працювати зі складними даними
  • Не видно всіх доступних опцій
Проаналізувавши ситуації взаємодії бота з користувачем, ми склали список потенційного функціоналу:

Інформаційний функціонал
  • Курси валют
  • Банкомати, офіси
  • Реквізити і про банк
Операції
  • Авторизація
  • Шаблони
  • Поповнення телефону
  • Переклади
  • Автоплатежи
Інше
  • Замовлення карти
  • АСВ (це виплати клієнтам інших банків через Агентство Страхування Вкладів)
  • Push-нотифікації про операції та інші події
  • Перемикання на живих операторів
  • Запис у чергу в офісах
  • Новини
  • Зворотний зв'язок
NLP (Natural language processing) для обробки запитів

Звичайно, все це не могло вміститися в перший реліз, і ми в підсумку зупинилися на наступному MVP:

Інформаційний функціонал
  • Курси валют
  • Банкомати, офіси
  • Реквізити і про банк
Операції+баланс
  • Авторизація
  • Поповнення телефону
Інше
  • Замовлення карти
  • АСВ
Проте ми відразу вирішили, що функції оплати будуть реалізовані «універсальним» чином, щоб згодом підключати та інших контрагентів.

imageОлександр Нестеров, Відкриття Digital, product owner
“Звичайно, бот не замінить нашу службу підтримки, мобільний додаток або інтернет-банк, але деякі прості запитання і регулярні завдання простіше і зручніше вирішувати в звичному інтерфейсі месенджера. Тому бот — це ще один додатковий канал обслуговування наших клієнтів, який робить спілкування з банком ще більш зручним та доступним".

Обробка природної мови vs. кнопки
Спочатку ми планували зробити бота з NLP, але зрештою відмовилися від цієї ідеї. Платформи з лінгвістичного процесингу, з якими ми експериментували — WIT.AI (належить Facebook) і API.AI (російський стартап в кремнієвої долині, який буквально місяць тому купила Google) — справляються з російською мовою відверто погано. Живі користувачі задають боту зовсім не ті питання, які він очікує почути, тому більш ніж в 50% випадків система не видає релевантних відповідей, і користувачі засмучуються.

imageАртур Цукрів, технічний директор Redmadrobot
“Поки в цих системах майже не працює визначення синонімів і машинне навчання. З тими конкретними фразами, на які движок навчений, проблем немає. Але крок у бік — і ваш бот взагалі не розуміє, що він нього хочуть. І ще API.AI шалено доріг за той функціонал, який там є, а розробляти власну NLP-систему для першого запуску ми не планували. Незважаючи на те, що в підсумку ми все-таки зробили вибір на користь «кнопкового» бота, було запилено два повноцінно працюють прототипу c нашим бэкэндом і лінгвістичним процесингом — і в Telegram, і в Facebook Messenger".

Ось ці прототипи:

Bot Demo. Інфо.

Bot Demo. Операції 1.

Bot Demo. Операції 2.

Bot Demo. Telegram.

Чому Facebook Messenger
У Telegram реалізовано якусь кількість банківських ботів, але всі вони обмежені в можливостях з-за особливостей системи безпеки цього месенджера. При виборі платформи для запуску бота банку «Відкриття» ми оцінювали і безпеку, і популярність месенджерів. З месенджерів, що підтримують створення повноцінних ботів, перше місце за популярністю в Росії займає Facebook Messenger. За даними TNS Russia, він у п'ять разів популярнішим Telegram.

У Messenger є багато важливих елементів для забезпечення безпеки, які відсутні в Telegram: контроль доступу адміністраторів, двофакторна аутентифікація акаунтів, авторизація користувачів з відправкою підтвердження на наш сервер по другому каналу. На момент створення системи навіть не було надійного способу визначити, хто передає повідомлення на ваш бекенд: телеграм або http-клієнт зловмисника. На відміну від Telegram, безпека акаунтів, адміністрування і повідомлень для ботів були відразу закладені в платформу Facebook. У Telegram є деяка кількість банківських ботів, але в жодному з них немає авторизації платежів. Скрізь це лише інформаційний функціонал типу банкоматів та акцій: АльфаБанк, Райффайзен, Ощадбанк, Промсвязьбанк, АК Барс, Росбанк. Свій платіжний бот був у «Рокетбанка» (@rocketbank_bot), але його досить швидко закрили, так і бот «Тинькоффа» (@MoneyTalkBot) більше не працює і відправляє користувача в окремий додаток.


Авторизація і інтеграція з банківською інфраструктурою
У Facebook існує кілька способів зробити безпечну авторизацію. Ми використовували такий: коли користувач хоче авторизуватися, бот просить його ввести код, який треба отримати через мобільний додаток.

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

Отримання даних про рахунки
Користувач може запросити через бот інформацію про своїх рахунках. Але є і мобільний додаток, яке звертається до API банку «Відкриття» за тими ж даними. Щоб обійтися без доопрацювань на стороні «Відкриття», ми просто використовували готовий API і відправляли туди запит від свого бекенда — такий же, яким він був би від мобільного додатку.

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

Запис на виплату від АСВ
В CRM-системі «Відкриття» зберігається інформація по виплатах від Агентства страхування вкладів — коли і в яких банках є вільні слоти для запису на виплату. Коли клієнт через Facebook говорить, що йому треба здійснити запис, бекенда теоретично міг би залізти безпосередньо в мережу банку, але в цілях безпеки система реалізована іншим чином.

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

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

Що в підсумку
На даний момент система працює так. В майбутньому ми плануємо розширити можливості бота — поліпшити механізм авторизації і ввести оплату за шаблонами.
Джерело: Хабрахабр

0 коментарів

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