Обмен валюты – скучный и стандартный процесс, через который по тем или иным причинам проходит каждый. Кажется, технически там делать уже особо и нечего. ВТБ24 так не считает – мы как банк знаем о нескольких не лежащих на поверхности проблемах валютного обмена, с которыми можно столкнуться внезапно и в самый неподходящий момент. Поэтому мы решили эти проблемы с помощью ИТ-технологий. Какие и как – читайте под катом.





ВТБ24 придумал новый сервис по обмену валюты – зафиксировав курс обмена в онлайне, можно прийти в офис и обменять валюту. Курс можно фиксировать на сайте банка или в чат-боте в Фейсбук. Сервис позволяет клиентам зафиксировать курс обмена валюты на два рабочих дня, не считая день заказа, и совершить обмен наличной валюты, даже если курс на рынке изменится.
Сервис доступен клиентам с картой любого российского банка как для покупки, так и для продажи наличной валюты с фиксированием курса онлайн в режиме 24/7.

Как банк пришел к такой идее

Было несколько предпосылок к формированию идеи и создании нового сервиса.
Это самые распространенные вопросы в сезон отпусков у населения: «Где поменять валюту? Где лучший курс? Как поменять выгодно?», а также с динамические изменения курсов валют и желание большей определенности со стороны клиентов.
Всё больше покупок происходит онлайн, поэтому и банковские услуги тоже меняются, даже для такого консервативного рынка как обмен наличной валюты. Новации идут, как это обычно бывает, от потребностей клиентов. Когда у клиента возникает потребность обменять наличную валюту, он, как правило, направляется в обменный пункт банка, при этом никто никогда не уверен в наличии достаточной суммы валюты в кассе, особенно если речь идёт о сколь-нибудь значимой сумме. В лучшем случае продвинутый клиент постарается позвонить в банк и уточнить про наличие валюты. При этом все понимают, что банк может продать валюту другому клиенту, который пришёл раньше, или выдать валюту вкладчику, что для многих банков зачастую в приоритете. Кроме того, в любой момент банк может поменять курсы, иногда это бывает по 5-6 раз в день. Все это создаёт дискомфорт потребителю.

Поэтому было решено реализовать идею интернет-магазина, в котором можно зафиксировать курс в режиме реального времени и при этом обменять наличную валюту.

Таким образом, новый сервис решает две проблемы:
1) даёт клиенту возможность зафиксировать курс онлайн и прийти с суммой сделки для наличного обмена позднее в удобное время;
2) гарантирует клиенту наличие необходимой суммы валюты или рублей для обмена в кассе банка.

Кто-то скажет, что обменять валюту можно и в интернет-банке, но надо учесть, что там сделка совершается безналично, и сумму покрытия заранее надо иметь на счете. Многие предпочитают иметь дело с наличными и не ограничивать свой выбор тем банком, в котором есть счёт и интернет-банк.

Банк принял решение реализовать сервис не только через сайт, но и сделать его доступным через популярные социальные сети – например, чат-бот в Facebook.
ВТБ24 одним из первым из банков реализует это в своих отделениях, а для клиента взаимодействие с известным банковским брендом с госучастием это удобно и надежно.

Технически процесс выглядит так.
Пользователь заходит на сайт obmen.vtb24.ru или в чат-бот в Facebook и видит курс обмена, который он может зафиксировать на 2 дня.
Далее вводит свои данные – фамилию, имя, отчество (не является обязательным), контактный телефон (не является обязательным), e-mail. В чат-боте все эти параметры сохраняются до того момента, пока сам пользователь не скажет боту это удалить, при повторном заказе вводить личные данные не требуется, что экономит время. При вводе суммы заказа рассчитывается сумма, которая будет зарезервирована на карте клиента (10% от суммы сделки), указывается срок, до которого клиент должен обменять валюту в офисе и предупреждение, что зарезервированная сумма будет удержана банком, если клиент не совершит обмена в офисе до наступления крайней даты. Похожее резервирование путешественники делают, бронируя отели в интернете или арендуя автомобиль, предоставляя при этом средства на карте в качестве страхового депозита.

После подтверждения оформления заказа, клиент переходит на платежную страницу, вводит реквизиты карты, и в случае, если операция резервирования средств пройдет успешно, на следующей странице получает подтверждение заказа (номер и параметры). Квитанция о заказе будет направлена на e-mail.









С точки зрения обновления курсов, бот и сайт связаны с фронт-офисной системой Банка, которая в режиме реального времени даёт котировки валюты (режим реального времени – по тикам с биржи, то есть раз в секунду).







Как мы с этим справились?

Для разработки сайта и чат-бота мы привлекли партнёров из EPAM и InspiredGames и
попросили их прокомментировать технические особенности проекта.
Слово InspiredGames:
“Наша студия взялась за задачу реализации бота для всех основных мессенджеров для предоставления банковской услуги в области валютообменных операций. Казалось бы – ничего сложного, почти обычный интернет-магазин.
Однако:
— банк даёт очень динамичные курсы. В рабочие часы они real-time отражают котировки на бирже, ночью (а сервис, естественно, — круглосуточный) они тоже очень правильные. Банк передает в «движок» бота эти котировки, используя свой уникальный сервис.

— реализована подготовка резерва и оплата (точнее, блокирование средств) по банковской карте прямо из бота с переходом на только одну web-страницу платежной системы (конечно, мы работаем и над новыми платёжными возможностями в мессенджерах).

При этом хоть бот и является интерфейсом, реализованы и функции, обычно связываемые с back-end частью (АРМ для его уполномоченных сотрудников, обсчёт данных по заказам, транзакционные действия с платежной системой, напоминания, аудит и др.)
Задача была успешно решена, сервис работает, и нам хотелось бы рассказать о нескольких подходах, которые мы применили. Конечно, будем рады и верификации этих подходов, и любому мнению.
Итак, прежде всего встал выбор – использовать ли какие-то фреймворки или конструкторы? Microsoft Bot Framework – замечательно, но нет коннектора к Viber и уж тем более к ВКонтакте. Другие конструкторы (по крайней мере, те, что мы нашли) не обладали нужной нам гибкостью. Поэтому приняли решение сделать всё сами. Что касается инфраструктурного решения, то посчитали, что лучше всего будет наше обычное и привычное использование RESTful Web API, соотв., – IIS, а для удобства – и MS SQL как СУБД (со всеми представлениями, разделением доступа, парой хранимых процедур и триггеров).
Это всё понятно. Но есть две вещи, которые для нас не были очевидны с самого начала, и которые мы не увидели в тех ботах, с которыми мы знакомились.

Первая. Модульность.

Движок («ядро») бота «общается» как с мессенджерами, так и с другими системами (специализированная часть бэк-офиса банка, платежная карточная система) не напрямую, а через специализированные модули – «коннекторы». Кроме того, отделён и сервис данных. Таким образом, есть:
— набор коннекторов к мессенджерам и другим системам;
— ядро (о нем чуть ниже);
— сервис данных;
— некоторые другие сервисы (пример – простой, но важный сервис окончательного подтверждения курса сделки банком).
Взаимодействие модулей, кстати, — тоже посредством REST API.
Когда от пользователя мессенджера, — неважно, какого, — поступает сообщение, соответствующий коннектор передаёт его в ядро, ядро анализирует его, формирует ответное сообщение (для этого нужен и сервис данных, и, часто иные сервисы) и отправляет его обратно в этот коннектор. Это позволило нам:
— вынести всю специфику и настройки работы с разными мессенджерами на уровень коннекторов. Viber, в отличие от Facebook Messenger, позволяет менять шрифт и цвета кнопок в клавиатуре? Отлично, «покрасим» их в цвета в соответствии с brand book прямо в настройках коннектора. В Facebook Messenger есть «карусели»? Очень хорошо, настроим коннектор к нему так, чтобы в ответе с показом отделений эти отделения были показаны именно «каруселью». А ядру бота «знать» об этих особенностях необязательно;
— в случае необходимости — распространять бот на другие мессенджеры, только лишь разработав новый (новые) коннектор и добавив его в пул, не трогая ничего другого;
— если потребуется, то разнести коннекторы и другие модули на разные хосты.

Вторая. Концепция «текст-контекст-подтекст».

Если говорить кратко, то в рамках этой концепции ответ ядра бота зависит не только от текста (семиотически геолокация, которую передает пользователь, — тоже текст) сообщения пользователя, но и от контекста (в каком состоянии сейчас находится пользователь в диалоге с ботом, о чем пользователь говорит сейчас), и, далее, от подтекста (истории диалога, причем не только данного конкретного пользователя, -«о чем шел разговор до этого»).
Наверное, кто-то уже догадался, что такую концепцию можно реализовать в терминах конечного автомата Мили (текст-контекст-> новый контекст-ответ) с бесконечной памятью (подтекст). Но если не вдаваться в детали, то проще всего пояснить на примерах.

Пользователь шлет боту сообщение «заказ». Текст = «заказ», но мало знать текст. Ядро обращается к сервису данных и получает текущий контекст этого пользователя. (Справочно: у нас сейчас чуть более 200 контекстов, и они могут быть настроены без программирования).
Если полученный контекст – «пользователь отправляет сообщение сотруднику банка», то подтекст не нужен, нужно лишь отправить сообщение в банк, ответить пользователю, что всё отправлено, и попасть в новый контекст «главное меню».

Если же полученный контекст – «главное меню», то нужен еще и подтекст. А именно: ядро получает от сервиса данных подтекст, состоящий из совокупности формальных (как в паспорте) фамилии, имени, отчества и адреса электронной почты пользователя. И теперь ответ бота зависит от подтекста. Если такой подтекст не пуст (а это означает, что пользователь ранее его боту сообщил), то бот предложит использовать его (или изменить, в случае необходимости) и сделать заказ. Если же такой подтекст пуст, то бот как условие для совершения заказа, выдаст необходимость сообщить эти данные. Когда данные будут получены, появится и нужный подтекст, и заказ можно будет сделать. Следующий контекст – «все данные пользователя получены, продолжаем заказ». Ясно, что при всём этом накапливается история. Она, в свою очередь, будет использована для получения нового подтекста.

Отлично, но где же NLP? Верно, NLP (Natural Language Processing, обработка естественного языка) сейчас очень модная аббревиатура. Но вот только пока даже здесь, на Habrahabr, довольно-таки мало публикация по этой теме. NLP – обработка русского сейчас работает не так хорошо, как хотелось бы. Вдобавок есть ещё одна тонкость по- нашему мнению и по-мнению других экспертов, пользователь не хочет общаться с ботом как с человеком. Он понимает, что это программа, и хочет получить UI как с программой – кнопки, цвета, картинки…
Но если у Вас есть лимон, то можно из него сделать лимонад. Именно поэтому мы:
— предпочли сделать «командный» (а не в чистом виде чат) бот;
— используем сервис NLP как модуль (сервис для ядра, как было описано выше), позволяющий вместе с контекстом и подтекстом разобрать по тексту, чего же хочет пользователь. Этот модуль (в зависимости от контекста!) нам возвращает массив объектов, которые анализируются ядром. Простой пример: если контекст «оформление заказа на стадии выбора основных параметров обмена», то на текст «500 долларов» именно этот сервис выдаст массив
{
«deal_candidates»:
[
{
«direction»: «buy»,
«amount»:500,
«ISOCode»: «USD»},
{
«direction»: «sell»,
«amount»:500,
«ISOCode»: «USD»}
]
}
А уже по этому массиву ядро бота спросит «выберите, что хотите».

Итог нашего опыта:

— удобные транзакционные боты для финансовых сервисов делать можно и нужно;
— есть проверенные подходы, которые такие боты (и, соответственно, сервисы) позволяют создавать быстро, эффективно и, самое главное, масштабируемо и тиражируемо.”

Почему для сервиса была выбрана площадка не только сайта, но и чат-бота:
— мессенджеры использует очень большое количество пользователей, не требуется отдельно искать и устанавливать специализированное мобильное приложение, достаточно просто добавить бота в список контактов и начать диалог с ним.
— операции в мессенджере – это работа в привычном интерфейсе. Не требуется переучиваться или искать нужные функции, при этом реализован удобный доступ к финансовым транзакциям.
Запуская очередной бот, банк учитывает растущий интерес со стороны клиентов к новым каналам коммуникации.

ВТБ24 в дальнейшем планирует выпустить сервис, позволяющий фиксировать курс валюты во всех доступных мессенджерах (добавим Вайбер и Вконтакте, а также ждем открытия API WhatsApp ?).

Также, несмотря на все сложности, продолжим углубляться в тему NLP для более удобного взаимодействия с пользователем. В личном кабинете на сайте банка уже работает чат-бот, с которым можно пообщаться и получить от него советы и помощь. Результаты работы и обучения этого бота будут внедрены и в конверсионные чат-боты в мессенджерах.

Также будем увеличивать спектр финансовых услуг, предлагаемых чат-ботами, не только связанными с валютообменными операциями.

Фиксирование оффлайнового курса в онлайне — это новый важный канал предоставления услуг населению.
Это инновационная услуга, очередной небольшой шаг в цифровизации банковского сервиса. Новый сервис даёт возможность обменять наличную валюту «здесь и сейчас». При этом ВТБ24 становится ближе к потребителям массового сегмента: необязательно быть клиентом ВТБ24, чтобы воспользоваться услугой, достаточно иметь карту любого российского банка.

Для ВТБ24 — это также отличная возможность протестировать новые технологии, чтобы определить вектор дальнейшего развития.
Поделиться с друзьями
-->

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