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

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

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

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

    Что в итоге


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

    Redmadrobot

    97,00

    №1 в разработке мобильных решений для бизнеса

    Поделиться публикацией

    Похожие публикации

    Комментарии 13
      0
      Планируете ли вы в будущем перейти к полноценному NLP?
        0
        Да, конечно. Вопрос в том, что считать «полноценным». Если говорить про все сценарии, то полная автоматизация дело не столь близкой перспективы. А вот основные категории обращений можно обрабатывать в ассистирующем режиме уже сейчас, и даже на нашем рынке гуглятся несколько примеров.
        +2
        Хайп про ботов спадает и это хорошо. Далеко не везде они применимы не говоря уже о полезности.
          0
          Из мессенджеров, поддерживающих создание полноценных ботов, первое место по популярности в России занимает Facebook Messenger. По данным TNS Russia, он в пять раз популярнее Telegram.


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

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

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

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

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

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

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

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

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

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

                  В широком смысле речь даже не о FB и конкретном банке, в случае платежных систем от Apple или Samsung напрашиваются теже самые вопросы.
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Из мессенджеров, поддерживающих создание полноценных ботов, первое место по популярности в России занимает Facebook Messenger.

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

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

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое