Недавно мы с банком “Открытие” запустили банковского бота с платежными функциями для физических лиц в 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 говорит, что ему надо осуществить запись, бэкэнд теоретически мог бы залезть напрямую в сеть банка, но в целях безопасности система реализована иным образом.

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

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

Что в итоге


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

Поделиться с друзьями
-->

Комментарии (13)


  1. Sp0tted_0wl
    23.11.2016 18:53

    Планируете ли вы в будущем перейти к полноценному NLP?


    1. mc_murphy
      25.11.2016 15:51

      Да, конечно. Вопрос в том, что считать «полноценным». Если говорить про все сценарии, то полная автоматизация дело не столь близкой перспективы. А вот основные категории обращений можно обрабатывать в ассистирующем режиме уже сейчас, и даже на нашем рынке гуглятся несколько примеров.


  1. crea7or
    23.11.2016 23:16
    +2

    Хайп про ботов спадает и это хорошо. Далеко не везде они применимы не говоря уже о полезности.


  1. Xalegi
    23.11.2016 23:37

    Из мессенджеров, поддерживающих создание полноценных ботов, первое место по популярности в России занимает Facebook Messenger. По данным TNS Russia, он в пять раз популярнее Telegram.


    спорное утверждение, а с учетом полторагодичной давности (июнь 2015)… и сегодняшнего дня — конец ноября 2016, картина мне видится совсем другой.

    Надеюсь данный платежный бот будет жить, в отличии от других!

    Всем добра :)


    1. mc_murphy
      25.11.2016 15:53

      спорное утверждение, а с учетом полторагодичной давности (июнь 2015)… и сегодняшнего дня — конец ноября 2016, картина мне видится совсем другой.
      Да, данные поактуальнее были бы не лишними, но мы не нашли более свежего масштабного сравнения. Если поделитесь ссылкой, будем благодарны.


  1. and7ey
    23.11.2016 23:54

    В Messenger есть много важных элементов для обеспечения безопасности, которые отсутствуют в Telegram: контроль доступа администраторов, двухфакторная аутентификация аккаунтов, авторизация пользователей с отправкой подтверждения на наш сервер по второму каналу.

    Что из этого потребовалось в вашем боте?
    Если описанное в статье подтверждение чего-то получением кода через мобильное приложение, то в чем проблема сделать то же самое с Telegram?
    На момент создания системы даже не было надежного способа определить, кто передает сообщения на ваш бэкенд: телеграм или http-клиент злоумышленника.

    Сервер телеграма или http-клиент? Для того, чтобы передавать сообщения на ваш бэкенд через «http-клиент», нужно ваш бэкенд сначала найти. Как это сделать (в случае с Telegram)?


  1. NeonXP
    24.11.2016 00:03

    На момент создания системы даже не было надежного способа определить, кто передает сообщения на ваш бэкенд: телеграм или http-клиент злоумышленника.

    Accepts incoming POSTs from 149.154.167.197-233 on port 443,80,88 or 8443.
    Ну ок.
    Минимум с полгода видел этот список надежных IP, а скорее всего он там гораздо дольше, если вообще не с самого начала.


  1. maxp
    24.11.2016 05:07

    Бот очень сырой, еле работает — «я вас не понял ...», «что-то пошло не так ...», или просто засыпает.

    Я просто перешел по ссылке в начале статьи, потыкал в менюшку, пробовал найти банкоматы по своему адресу.


  1. sshikov
    24.11.2016 12:04

    А не мог бы автор прояснить вопрос доверия в случае применения подобного приложения?

    Скажем прямо — лично у меня уровень доверия к Facebook сильно ниже нуля. Ну пусть я не показатель, и средний пользовател доверяет мессенджеру. Но когда речь заходит о платежах, ведь этого мало.

    Представим, что FB взломали, и у пользователя украли деньги. Или украли персональные данные.

    Кто будет отвечать в этом случае? Даже в случае двусторонних отношений ответ на данный вопрос далеко не очевиден. А тут отношения трехсторонние, что может все еще больше запутать.

    В широком смысле речь даже не о FB и конкретном банке, в случае платежных систем от Apple или Samsung напрашиваются теже самые вопросы.


  1. corr256
    25.11.2016 18:23
    -1

    Пока в этих системах почти не работает определение синонимов и машинное обучение

    Да все ваши нейросейти и машинное обучение — очередной мыльный пузырь, кому оно нужно кроме вашего ген.дира?


  1. evnik
    25.11.2016 18:23

    Из мессенджеров, поддерживающих создание полноценных ботов, первое место по популярности в России занимает Facebook Messenger.

    Но ведь, судя по подписи к вашему графику, это Skype.


  1. KramerIT
    25.11.2016 18:23

    Недавно вышел в продакшен платёжный бот BYNgo для беларуского рынка.
    Так у нас Telegram по возможностям и продуманности api оказался в лидерах, далее Viber, и Facebook на последнем месте.


  1. simpam
    28.11.2016 18:45

    Могу ошибаться, но на вопрос про курс евро надо называть две цены — цену покупки и цену продажи.