Недавно мы с банком “Открытие” запустили банковского бота с платежными функциями для физических лиц в Facebook Messenger. Сейчас клиентам «Открытия» доступна оплата мобильной связи, с помощью бота можно найти ближайший банкомат или офис банка, узнать курс валют, выяснить, как заказать карту, позвонить в банк и записаться на выплату от Агентства по страхованию вкладов. В этой статье мы расскажем о работе над проектом.
Что у бота под капотом?
Приступая к работе, мы думали о ситуациях, когда пользователю будет удобнее взаимодействовать с ботом, а не с основным мобильным приложением. Список преимуществ бота получился таким:
- Доступен для всех клиентов и не-клиентов банка
- Не нужно ничего устанавливать
- Легко авторизовываться
- Можно встраивать на веб-сайт и в терминал самообслуживания
- Кроссплатформенный
Но естественно, в сравнении с приложением бот имеет и ряд серьезных ограничений:
- Сторонняя среда
- Ограниченное качество визуализации
- Не-realtime система и меньшая отзывчивость, например, при выборе финансового продукта
- Невозможно работать со сложными данными
- Не видно всех доступных опций
Проанализировав ситуации взаимодействия бота с пользователем, мы составили список потенциального функционала:
Информационный функционал
- Курсы валют
- Банкоматы и офисы
- Реквизиты и о банке
Операции
- Авторизация
- Шаблоны
- Пополнение телефона
- Переводы
- Автоплатежи
Прочее
- Заказ карты
- АСВ (это выплаты клиентам других банков через Агентство Страхования Вкладов)
- Push-нотификации об операциях и других событиях
- Переключение на живых операторов
- Запись в очередь в офисах
- Новости
- Обратная связь
NLP (Natural language processing) для обработки запросов
Конечно, все это не могло уместиться в первый релиз, и в мы итоге остановились на следующем MVP:
Информационный функционал
- Курсы валют
- Банкоматы и офисы
- Реквизиты и о банке
Операции+баланс
- Авторизация
- Пополнение телефона
Прочее
- Заказ карты
- АСВ
Однако мы сразу решили, что функции оплаты будут реализованы «универсальным» образом, чтобы впоследствии подключать и других контрагентов.
Александр Нестеров, Открытие Digital, product owner
“Конечно, бот не заменит нашу службу поддержки, мобильное приложение или интернет-банк, но некоторые простые вопросы и регулярные задачи проще и удобнее решать в привычном интерфейсе мессенджера. Поэтому бот — это еще один дополнительный канал обслуживания наших клиентов, который делает общение с банком еще более удобным и доступным”.
Обработка естественного языка vs. кнопки
Изначально мы планировали сделать бота с NLP, но в итоге отказались от этой идеи. Платформы по лингвистическому процессингу, с которыми мы экспериментировали — WIT.AI (принадлежит Facebook) и API.AI (российский стартап в кремниевой долине, который буквально месяц назад купила Google) — справляются с русским языком откровенно плохо. Живые пользователи задают боту совсем не те вопросы, которые он ожидает услышать, поэтому более чем в 50% случаев система не выдает релевантных ответов, и пользователи расстраиваются.
Артур Сахаров, технический директор Redmadrobot
“Пока в этих системах почти не работает определение синонимов и машинное обучение. С теми конкретными фразами, на которые движок обучен, проблем нет. Но шаг в сторону — и ваш бот вообще не понимает, что он него хотят. И еще API.AI безумно дорог за тот функционал, который там есть, а разрабатывать собственную NLP-систему для первого запуска мы не планировали. Несмотря на то, что в итоге мы все-таки сделали выбор в пользу “кнопочного” бота, было запилено два полноценно работающих прототипа c нашим бэкэндом и лингвистическим процессингом — и в Telegram, и в Facebook Messenger”.
Вот эти прототипы:
Почему Facebook Messenger
В Telegram реализовано какое-то количество банковских ботов, но все они ограничены в возможностях из-за особенностей системы безопасности этого мессенджера. При выборе платформы для запуска бота банка «Открытие» мы оценивали и безопасность, и популярность мессенджеров. Из мессенджеров, поддерживающих создание полноценных ботов, первое место по популярности в России занимает Facebook Messenger. По данным TNS Russia, он в пять раз популярнее Telegram.
В Messenger есть много важных элементов для обеспечения безопасности, которые отсутствуют в Telegram: контроль доступа администраторов, двухфакторная аутентификация аккаунтов, авторизация пользователей с отправкой подтверждения на наш сервер по второму каналу. На момент создания системы даже не было надежного способа определить, кто передает сообщения на ваш бэкенд: телеграм или http-клиент злоумышленника. В отличие от Telegram, безопасность аккаунтов, администрирования и сообщений для ботов были сразу заложены в платформу Facebook. В Telegram есть некоторое количество банковских ботов, но ни в одном из них нет авторизации и платежей. Везде это только информационный функционал типа банкоматов и акций: АльфаБанк, Райффайзен, Сбербанк, Промсвязьбанк, АК Барс, Росбанк. Свой платежный бот был у «Рокетбанка» (@rocketbank_bot), но его довольно быстро закрыли, да и бот «Тинькоффа» (@MoneyTalkBot) больше не работает и отправляет пользователя в отдельное приложение.
Авторизация и интеграция с банковской инфраструктурой
В Facebook существует несколько способов произвести безопасную авторизацию. Мы использовали такой: когда пользователь хочет авторизоваться, бот просит его ввести код, который надо получить через мобильное приложение.
Тут уместно замечание, что для авторизации в боте нужно приложение банка, и это может показаться странным: обычно ведь авторизацию делают через интернет-банк. Однако это странно только для тех банков, где web-версией пользуется намного больше клиентов, чем приложением. Сейчас аудитория мессенджеров живет преимущественно в мобайле, поэтому авторизация через мобильное приложение логична.
Получение данных о счетах
Пользователь может запросить через бот информацию о своих счетах. Но есть и мобильное приложение, которое обращается к API банка “Открытие” за теми же данными. Чтобы обойтись без доработок на стороне “Открытия”, мы просто использовали готовый API и отправляли туда запрос от своего бэкэнда — такой же, каким он был бы от мобильного приложения.
Оплата услуг
Фактически система такая же, как и со счетами: когда пользователь хочет положить денег на телефон, за кулисами в “Открытие” прилетает запрос по спецификации API для мобильного приложения. Бэкенд бота сам трансформирует программный интерфейс работы схем оплаты поставщиков в диалоговый интерфейс общения с пользователями.
Запись на выплату от АСВ
В CRM-системе “Открытия” хранится информация по выплатам от Агентства страхования вкладов — когда и в каких банках есть свободные слоты для записи на выплату. Когда клиент через Facebook говорит, что ему надо осуществить запись, бэкэнд теоретически мог бы залезть напрямую в сеть банка, но в целях безопасности система реализована иным образом.
Задача решена при помощи очереди, в которую мы кладем запросы. Например, “мне надо получить свободное время для записи для такого-то офиса”. Внутренняя система сама проверяет очередь раз в несколько секунд и забирает данные, предварительно валидируя и проверяя их, обрабатывает запросы и кладет данные обратно в очередь, откуда их уже забирает наш бэк. Таким образом мы разносим эти системы и можем обойтись без прямых соединений с локальными БД.
Надо сказать, услуга популярна среди пользователей — в первые дни выплат запись делают по несколько сотен человек.
Что в итоге
На данный момент система работает так. В будущем мы планируем расширить возможности бота — улучшить механизм авторизации и ввести оплату по шаблонам.
Автор: REDMADROBOT