Новый опыт в написании сложных чат-бот-проектов (80 000 строк кода)
8 июня 2019

Чат-боты и геймификации

Геймификации, если говорить очень просто, – это усложнённые конкурсные проекты с более интересными действиями участников. Чем больше этих действий, тем выше вовлечённость в игровой процесс, длительнее и качественнее контакт с сообществом, брендом. В геймификациях используются различные технологии, например, чат-боты.

Максим
CEO & Founder

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

Ну-у-у, например, можно постить автоматические предупреждения о паводках. Как вариант, проинтегрировать группу с "Гуглдиском" и сохранять на него все загруженные фотки по какому-либо принципу. Или сформировать один из ответов в личку на основании цепочки некоторых действий участника группы. Да что там говорить, пока границы функционала ещё не найдены, идей можно запилить ну просто огромное количество. Люди нужны лишь там, где необходимо принимать нестандартные решения.

Вы сталкивались с голосовыми помощниками, которые распознают вербальные команды, например, позвонив на горячую линию Альфа-Банка? Это тоже чат-боты, только они построены внутри другой системы.

Бывает и наоборот – Google Duplex может позвонить в ресторан и заказать для вас столик на вечер. Правда, пока в 40% случаев ему приходится переключаться на живого оператора, но согласитесь – идея то хорошая!

Этой весной совместную геймификацию провели «ВКонтакте» и «Лентач». Проект был приурочен к премьере фильма «Мстители: Финал». Каждый второй участник флешмоба был «уничтожен» Щелчком Таноса – страницы половины смельчаков были заблокированы на 15 минут. Такие штуки можно делать только при поддержке представителей ВКонтакте. Это один из примеров нестандартного подхода. Надеемся, что когда-нибудь мы тоже сделаем совместный проект с ВКонтакте.

Каждый месяц мы запускаем конкурсы для наших клиентов и с удовольствием делимся инфой в своем уютном бложике, на встречах с коллегами и на конференциях. Конкурсы мы бережно упаковываем, подбираем интересные призы, продвигаем. Такие проекты часто принципиально не отличаются механикой (хотя всегда стараемся добавить фишечку), так как любое отхождение от правил или усложнение – риск не выполнить свои обязательства перед клиентом, например, недобрать новых подписчиков. При успешном запуске удается получить «вирусный эффект», который дарит профит клиенту и нам.

Дарья
Project Manager

Наша команда не смогла пройти мимо чат-ботов. Мы поставили задачу своими силами (благо есть прошлое, которое нас тесно связывает с программированием) реализовать чат-бот в связке с конкурсным проектом (далее чат-бот-конкурс). Нашу идею поддержал отдел маркетинга компании ВелКен (бренд Зум-Зум). Основную концепцию мы построили вокруг новинки клиента – семечек Зум-Зум с гималайской солью.

Максим
CEO & Founder

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

Нестандартная механика

Задача участников чат-бот-конкурса заключалась в поиске розовых семечек и получении приятных призов.

Почему мы выбрали именно розовый цвет, а не зеленый, голубой или оранжевый? Все просто – гималайская соль имеет необычный розовый оттенок, от чего мы и решили оттолкнуться.

Максим
Директор по маркетингу, ВелКен

В качестве мотивации выступили деньги – суммы от 100 до 5000 рублей, которые можно было получить на счет мобильного, активировав специальный код, отправленный ботом в личку (полностью автоматизировали награждение 411 участников).

Общий призовой фонд: 50 000 рублей. Общее количество призовых мест: 411.

Категории призов:

Участники могли построить свой сценарий участия в игре, все зависело от действий каждого, реакций на подсказки бота.

Максим
CEO & Founder

В самом начале игрок получал несколько стартовых попыток, чтобы «войти в раж». Кто-то выигрывал сразу, другим приходилось попотеть. Тут уж ничего не поделать – рандом есть рандом.

Далее, когда попытки заканчивались, чат-бот-конкурс проверял степень вовлечения участника в группу. Например, подписан ли он на сообщество, делал ли репосты и т.д. Исходя из анализа действий, система давала подсказки, косвенно намекая на различные действия (это все же игра, важно догадаться).

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

Если пользователь был верен сообществу – не отписывался или не удалял репосты, бот проявлял щедрость – давал ежедневные попытки «за преданность». Об этом участник узнавал из личных сообщений, которые рассылала автоматизированная система.

Играть можно было, не выполняя дополнительные действия, просто используя стартовые попытки. Обязательные требования мы исключили, но давали рекомендации, намекали на возможные действия. Хотя в процессе игры тестировали различные сценарии, меняли конфигурацию и смотрели, как меняются KPI.

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

Дарья
Project Manager

Конечно, фортуна улыбнулась не всем. Но были просто мегасчастливчики, которым удалось выиграть по 2-3 раза.

Мы несколько раз до запуска пересматривали механику старта, убирали лишние обязательные действия. В итоге игру можно было начать, выполнив лишь одно условие – оставив под записью на стене комментарий «Семки». Ну и в идеале нужно было открыть страницу в настройках приватности, в противном случае даже наш бот не мог увидеть, поделился участник информацией или нет. Последний момент был не критичен, потому как попытки можно было заработать иначе, следуя другим подсказкам.

Продакшн и контент

Проект был упакован в стиле пачки Зум-Зум с гималайской солью: волшебные горы, голубое небо и милые герои, покоряющие вершину семечки.

Основной пост

Конкурс активно поддерживался фирстильными постами. Анонсировались срезы по участникам, размещалась информация о призах.

Была создана рубрика «Факты о семечках с гималайской солью», в которой мы параллельно рассказывали аудитории проекта о преимуществах продукта клиента, правильно используя время участников на контакт с брендом.

Алина
Арт-директор

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

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

Техническая часть

ВКонтакте есть много инструментов для автоматизации. Мы использовали Bot Long-polling API – этот интерфейс был словно создан специально для нашей задачи (да что там, он действительно был создан именно для нее). Эта технология позволяет нам общаться с серверами ВКонтакте в реальном времени – комментарии, сообщения сообщества, лайки и репосты – все это мы регистрировали спустя долю секунды после того, как пользователь их совершил.

У всех игроков должны быть одинаковые шансы выиграть. И простое «подбрасывание монетки» тут не годится – участников много, призов мало, слишком многое отдается на волю случая, а нам нужно растянуть конкурс на несколько недель. Но и четко определять, когда и кто выиграет, мы тоже не могли – это было бы просто-напросто нечестно.

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

Статусы призов

Разработка программ – дело непростое. Очень легко допустить ошибку и не заметить ее. А пользователи – они такие, все замечают. Нам с самого начала хотелось все сделать максимально технологичным, стабильным и не требующим лишних проверок. Как это сделать? Пусть программа проверяет сама себя. Мы решили написать все на TypeScript. Это язык программирования, созданный корпорацией Microsoft и набирающий все большую популярность с каждым годом. Он устроен таким образом, чтобы код с явными ошибками и опечатками просто не работал. Мы проверили – все действительно так.

Но ошибки бывают и более изощренными. Чтобы избавиться от них, мы стали писать автоматические тесты. Представьте: при каждом изменении в коде проверяется, что правильно работает весь проект – и меньше, чем за секунду! Круто, да? Нам тоже понравилось. Но ведь и тесты можно написать с ошибками. Поэтому мы подключили статический анализатор. Он внимательно перечитывает код, как опытнейший программист, каждую строчку, и ищет ошибки. Очень въедливый тип – при первом запуске нашел ошибки в половине файлов проекта. Обидно, но ведь для того он нам и понадобился.

Файловый менеджер

Кроме самого бота нам нужен был и пульт управления к нему, чтобы не получилось восстание машин, как в дешевой фантастике. Мы хотели в реальном времени наблюдать, сколько у нас участников, как далеко они продвинулись, как они активны, и быстро реагировать, вносить исправления в тексты, настраивать взаимодействия. Мы решили использовать технологию React, разработанную в Facebook. Она настолько популярна, что уже фактически стала мировым стандартом. И, самое главное, она позволяет легко делать интерфейсы, которые работают в реальном времени.

Подключение сообществ

Действия участников

Спустя 250 часов, 80000 строк кода, несколько циклов переписывания и оптимизаций, и декалитры выпитых энергетиков (наш программист говорит, что у него нет зависимости, но мы-то всё знаем), проект был готов к развертыванию. Осталось решить, где его развернуть. Наш бот должен был выдерживать высокие нагрузки и стабильно работать несколько недель. Специально для таких задач придуманы облачные технологии. Мы одними из первых воспользовались сервисом Яндекс.Облако. Оказалось, что там есть и множество инструментов для анализа больших объемов данных, и сервисы машинного обучения, и распознавание и синтез речи (привет, Алиса!)

… В общем, у нас уже много новых идей, и, самое главное, мы знаем, как их реализовать!

Максим
CEO & Founder

Вариации регулярных конкурсных проектов – отличный способ привлечения дополнительного трафика и подписчиков, но хотелось поучаствовать в чем-то новом, разбавить онлайн-будни наших подписчиков чем-то интригующим и захватывающим. Проект Admarkus с геймификацией для новинки от «Зум-Зум» пришёлся кстати и стал бомбой – 507 000 просмотров, 240 000 комментариев, которые порадовали нас и подписчиков, взорвали мозг конкурентам. Большое спасибо команде Admarkus, с вами – как в высоком полёте под крылом сильной и мудрой птицы.

Максим
Директор по маркетингу, ВелКен

KPI

Вовлеченность за период (во время проекта):
22 мая 2019 - 4 июня 2019 (14 дней)

Вовлеченность за период (до проекта):
8 мая 2019 - 21 мая 2019 (14 дней)