Как мы делали бота для банка “Открытие”

в 15:34, , рубрики: mobile development, redmadrobot, Блог компании REDMADROBOT, боты, разработка мобильных приложений

Недавно мы с банком “Открытие” запустили банковского бота с платежными функциями для физических лиц в Facebook Messenger. Сейчас клиентам «Открытия» доступна оплата мобильной связи, с помощью бота можно найти ближайший банкомат или офис банка, узнать курс валют, выяснить, как заказать карту, позвонить в банк и записаться на выплату от Агентства по страхованию вкладов. В этой статье мы расскажем о работе над проектом.
Как мы делали бота для банка “Открытие” - 1

Что у бота под капотом?

Приступая к работе, мы думали о ситуациях, когда пользователю будет удобнее взаимодействовать с ботом, а не с основным мобильным приложением. Список преимуществ бота получился таким:

  • Доступен для всех клиентов и не-клиентов банка
  • Не нужно ничего устанавливать
  • Легко авторизовываться
  • Можно встраивать на веб-сайт и в терминал самообслуживания
  • Кроссплатформенный

Но естественно, в сравнении с приложением бот имеет и ряд серьезных ограничений:

  • Сторонняя среда
  • Ограниченное качество визуализации
  • Не-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.
Как мы делали бота для банка “Открытие” - 4
В Messenger есть много важных элементов для обеспечения безопасности, которые отсутствуют в Telegram: контроль доступа администраторов, двухфакторная аутентификация аккаунтов, авторизация пользователей с отправкой подтверждения на наш сервер по второму каналу. На момент создания системы даже не было надежного способа определить, кто передает сообщения на ваш бэкенд: телеграм или http-клиент злоумышленника. В отличие от Telegram, безопасность аккаунтов, администрирования и сообщений для ботов были сразу заложены в платформу Facebook. В Telegram есть некоторое количество банковских ботов, но ни в одном из них нет авторизации и платежей. Везде это только информационный функционал типа банкоматов и акций: АльфаБанк, Райффайзен, Сбербанк, Промсвязьбанк, АК Барс, Росбанк. Свой платежный бот был у «Рокетбанка» (@rocketbank_bot), но его довольно быстро закрыли, да и бот «Тинькоффа» (@MoneyTalkBot) больше не работает и отправляет пользователя в отдельное приложение.

Как мы делали бота для банка “Открытие” - 5

Авторизация и интеграция с банковской инфраструктурой

В Facebook существует несколько способов произвести безопасную авторизацию. Мы использовали такой: когда пользователь хочет авторизоваться, бот просит его ввести код, который надо получить через мобильное приложение.
Как мы делали бота для банка “Открытие” - 6
Тут уместно замечание, что для авторизации в боте нужно приложение банка, и это может показаться странным: обычно ведь авторизацию делают через интернет-банк. Однако это странно только для тех банков, где web-версией пользуется намного больше клиентов, чем приложением. Сейчас аудитория мессенджеров живет преимущественно в мобайле, поэтому авторизация через мобильное приложение логична.
Как мы делали бота для банка “Открытие” - 7

Получение данных о счетах

Пользователь может запросить через бот информацию о своих счетах. Но есть и мобильное приложение, которое обращается к API банка “Открытие” за теми же данными. Чтобы обойтись без доработок на стороне “Открытия”, мы просто использовали готовый API и отправляли туда запрос от своего бэкэнда — такой же, каким он был бы от мобильного приложения.

Оплата услуг

Фактически система такая же, как и со счетами: когда пользователь хочет положить денег на телефон, за кулисами в “Открытие” прилетает запрос по спецификации API для мобильного приложения. Бэкенд бота сам трансформирует программный интерфейс работы схем оплаты поставщиков в диалоговый интерфейс общения с пользователями.

Запись на выплату от АСВ

В CRM-системе “Открытия” хранится информация по выплатам от Агентства страхования вкладов — когда и в каких банках есть свободные слоты для записи на выплату. Когда клиент через Facebook говорит, что ему надо осуществить запись, бэкэнд теоретически мог бы залезть напрямую в сеть банка, но в целях безопасности система реализована иным образом.

Задача решена при помощи очереди, в которую мы кладем запросы. Например, “мне надо получить свободное время для записи для такого-то офиса”. Внутренняя система сама проверяет очередь раз в несколько секунд и забирает данные, предварительно валидируя и проверяя их, обрабатывает запросы и кладет данные обратно в очередь, откуда их уже забирает наш бэк. Таким образом мы разносим эти системы и можем обойтись без прямых соединений с локальными БД.

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

Что в итоге

На данный момент система работает так. В будущем мы планируем расширить возможности бота — улучшить механизм авторизации и ввести оплату по шаблонам.

Автор: REDMADROBOT

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js