(function(bannerClassName) { const sendEvent = (token, action) => { const value = 'Branding ' + token + ' – ' + action; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } else { console.log('GA send: ' + value); } }; const oneBeforePageChange = (callback) => { if (typeof Air === 'object') { const ajaxify = Air.import('module.ajaxify'); ajaxify.one('Before page changed', () => { try { if (callback) { callback(); } } catch (error) { console.log(error); } }); } }; const onLinkClick = (e) => { const link = e.target; const href = link.getAttribute('href'); sendEvent(href, 'Click'); link.removeEventListener('click', onLinkClick); }; const branding = document.querySelector(bannerClassName); if (!branding) { return; } const links = branding.querySelectorAll('a'); for (let i = 0; i < links.length; i += 1) { const isVisible = getComputedStyle(links[i]).display !== 'none'; const href = links[i].getAttribute('href'); if (isVisible) { sendEvent(href, 'Show'); } links[i].addEventListener('click', onLinkClick); } oneBeforePageChange(() => { for (let i = 0; i < links.length; i += 1) { links[i].removeEventListener('click', onLinkClick); } }); })('.entry-native-branding');

Скейты, квизы и два стабильно работающих бота

У нас не было шанса облажаться. Мы и не пытались.

Всем привет! На связи команда BotCreators. За 4 года существования нашей компании, нам встречались разные задачи: от самых простых и банальных, до необычных и сложных в исполнении. Эта статья именно о таком вот неординарном случае.

К телеграм-ботам можно относиться по-разному. Называть пустышкой или воспринимать как очередной инструмент маркетинга. А можно по фану делать прикольный тим-билдинг. Что мы и сделали.

Сейчас почти каждая уважающая себя компания проводит различные творческие, деловые или развлекательные игры, корпоративные тренинги и неформальные встречи. Цель таких мероприятий — улучшить взаимодействие в коллективе, сплотить сотрудников и научить работать в команде. Именно такая задача, точнее — техническая ее часть недавно встала перед командой BotCreators.

К нам обратились Brooke Event Engineering, чтобы мы создали чат-бот в телеграм для корпоративной игры Yota. Креативная часть за ними, а с нас — стабильно работающий бот, который не заглючит. Совсем, ни разу. Второго раза не будет.

Суть игры

В 11 городах России в фургонах прячутся художники. Готовят кастомные скейты. Задача участников: собраться в команды по 5 человек и ответить на вопросы в чат-бот викторине и специальные вопросы раундов. В конце игры команда по подсказкам ведущего должна “вычислить”, где находится фургон в их городе и первыми среди других команд добраться до него, чтобы забрать скейты.

Детали игры

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

В центральном офисе Yota ребята из Brooke развернули импровизированную студию, из которой велась трансляция на Youtube.

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

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

Подготовка к проекту

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

  • детально написали ТЗ. Не две страницы с хотелками, а 28 страниц, на которых указали все повороты сюжета и все частные/негативные случаи;
  • протестировали систему всеми реальными и нереальными юз-кейсами;
  • отрепетировали игру c командой Broоke.

Каждый из факторов кратно понизил вероятность ошибки.

Как мы создавали и контролировали чат-бот

Чат-боты хоть и не бином Ньютона, но по сути это такое же клиент-серверное приложение, как любой портал или веб-сервис. У него есть свой бэкенд, где записана бизнес-логика, есть своя база данных и даже админка для управления контентом.

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

Для управления чат-ботом сделали админку, чтобы:

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

Можно ли было обойтись без админки и все управление вести в боте? Скорее нет, чем да. В игре требовалось динамичность не только от игроков, но и от модераторов. А управлять списковыми таблицами в интерфейсе чат-бота — такое себе.

В итоге получилась CRM-ка для управления игрой:

Остановились на 10 вопросах на раунд, больше уже было бы ту мач
Так выглядит пульт управления игрой
Вынесли все возможные настройки в панель управления, чтобы тестировать без перезапуска проекта
Как это выглядело для игроков

К моменту запуска игры, админка и чат-бот были отлажены и подготовлены на все 100%. Приняли участие более 700 игроков. Техническая поддержка оперативно обрабатывала все запросы. Наша команда BotCreators сопровождала как онлайн, так и офлайн игру от старта, до объявления победителей.

Еще более подробно почитать об этом кейсе и посмотреть скриншоты можно по этой ссылке.

Чат-бот: нужен или нет?

Боты “хоронят” каждый год, когда якобы бизнес не увидел в них пользы.

Можно ли использовать чат-бота для сложных сценариев и заменить полностью мобильные приложения? До определенной степени, да. Мы же это делаем.

Если Телеграм продолжит развивать платформу веб-ботов и добавит доступ к камере и другим датчикам устройства, ожидаем еще большего интереса.

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

(function(bannerClassName) { const sendEvent = (token, action) => { const value = 'Branding ' + token + ' – ' + action; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } else { console.log('GA send: ' + value); } }; const oneBeforePageChange = (callback) => { if (typeof Air === 'object') { const ajaxify = Air.import('module.ajaxify'); ajaxify.one('Before page changed', () => { try { if (callback) { callback(); } } catch (error) { console.log(error); } }); } }; const onLinkClick = (e) => { const link = e.target; const href = link.getAttribute('href'); sendEvent(href, 'Click'); link.removeEventListener('click', onLinkClick); }; const branding = document.querySelector(bannerClassName); if (!branding) { return; } const links = branding.querySelectorAll('a'); for (let i = 0; i < links.length; i += 1) { const isVisible = getComputedStyle(links[i]).display !== 'none'; const href = links[i].getAttribute('href'); if (isVisible) { sendEvent(href, 'Show'); } links[i].addEventListener('click', onLinkClick); } oneBeforePageChange(() => { for (let i = 0; i < links.length; i += 1) { links[i].removeEventListener('click', onLinkClick); } }); })('.entry-article-footer');
0
1 комментарий
Фабрин Максим

Норм кейс )
И креативно, и технологично.
9 из 10 точно дам :)

У нас похожий был, правда для электроники )
Тоже игры + подарки...но без фургонов )))

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда
null