28 декабря 2016 в 09:54

Как мы устроили квест в Telegram, и что из этого вышло. UPD: мы подвели итоги конкурса

Привет, Гиктаймс! В уходящем году мы запустили одну штуку, которая нам понравилась, и мы собираемся продолжать. Речь идет про наш канал и бот в Telegram, и конкурсе, который мы запускаем сегодня для вас. Но обо все по порядку: вся история началась полгода назад, в начале лета, с этого и начнем.


Итак, где-то в июне мы сели обсуждать, что хотим сделать на «Игромире». У нас было 90 метров площади, 4 фокусные модели игровых гарнитур, коллектив девушек гоу-гоу, новая клавиатура, легендарный капитан CS Даниил «Zeus» Тесленко, 12 коробок призов и бесконечное множество браслетов всех сортов и расцветок, а также оверклокер-шоy и стойка с Xbox. Не то чтобы это был необходимый запас для «Игромира», но раз уж начал готовиться к крупнейшей игровой выставке в стране, то сложно остановиться… Чего у нас не было – это тихого спокойного места, в котором мы могли бы поговорить с «продвинутыми» или «взрослыми» пользователями, которым интересны наши продукты, которые хотят узнать больше про технологические особенности, но в общем шуме и гаме теряются.

UPD: Мы подвели итоги конкурса! Кто победил? Читайте в конце поста.

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


С этими вводными уже стала более-менее ясна общая картина. Мы нашли четырех великолепных косплей-девушек, каждая из которых символизировала одну из гарнитур HyperX, выпущенных в 2016. На первом этапе квеста надо было собрать все новинки, а именно: найти их на выставке, сфотографироваться, а дальше уже перейти к взаимодействию с ботом, который выдаст еще серию заданий.

Сказано – не значит сделано. Наверняка, по мнению многих, кто не знаком с разработкой, создание бота в Telegram выглядит примерно так.


На деле всё немножко сложнее. Да, фронтэндом выступает сам Telegram со своим API, но вот бэкэнд надо написать. Сначала мы планировали обойтись своими силами. Почитали несколько гайдов, изучили возможности условно-бесплатных сервисов, в которых можно делать ботов. Но в конце концов решили, что лучше всё же поручить эту работу профессионалам, т.к. у самих ушло бы очень много времени и сил на это, к тому же мы руководствуемся принципом, что каждый должен заниматься своим делом.

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

Разработка


Нам требовалось не просто сделать «говорилку» на Bot API 2.0, для конкурса нужна была и база данных для регистрации участников и результатов, очередь на случай высокой нагрузки и облачный хостинг для всего этого. У IQBot были уже отработанные решения, так что ими и воспользовались: в качестве базы взяли свободную MariaDB (продвинутый форк MySQL), очередь боту организовали через популярную для таких целей RabbitMQ, а в качестве хостинга выступал казуальный heroku.com. С двумя первыми решениями всё понятно: это свободные продукты, к тому же давно обкатанные в спарке с мессенджерами и даже ботами Telegram. А вот облако Heroku – это неплохой хостинг, если нужны большие мощности на короткое время. У них есть планы с посуточной тарификацией и гибким платным регулированием производительности системы – так что работа того же бота с бэкэндом в течение недели может стоить совсем смешных денег. IQBot предусмотрительно выбрали на хостинге гибкий тариф, который позволял динамически менять производительность – это нас спасло в момент высокой популярности квеста и, как следствие, высокой нагрузки на бекэнд, т.к. мы смогли оперативно увеличить мощность сервера.

Так как создание бота в большей степени было связано с разработкой бэкэнда, был выбран язык PHP, популярный для ботов Python усложнил бы связь с базой и очередью.

Конечный алгоритм работы бота был такой:

  1. Пользователь подключается и присылает ссылку.
  2. Система регистрирует в базе его Telegram-имя, сохраняет ссылку и отправляет сообщение с благодарностью за участие (среди всех участников потом была разыграна гарнитура HyperX Cloud Stinger).
  3. После этого пользователю предлагают сыграть в блиц-викторину и при правильных ответах на все вопросы можно было сразу на «Игромире» получить призы.
  4. Спустя 3 дня конкурса бот закрывает прием работ, а всем зарегистрированным участником рассылает благодарность и имя победителя.
  5. После объявления победителя бот становится заглушкой с промо-сообщением.


Старт


За пару дней до начала «Игромира» бот был запущен. Окончательная проверка, что всё работает и… ожидание часа X. В день старта у нас на стенде стояли промоутеры, которые предлагали принять участие в квесте. Кроме того, информация активно продвигалась в группах Kingston в соц.сетях, в Telegram-канале @HyperX_Russia (и ещё нескольких дружественных каналах). Как обычно на «Игромире» мобильный интернет работал прескверно, высокая загрузка сети часто не позволяла работать в LTE и 3G, хоть какой-то трафик со стабильным сигналом можно было гонять только по EDGE. Но Telegram – едва ли не единственный мессенджер, который нормально функционирует в сетях 2G, так что у наших гиков всё было в порядке (а некоторые даже умудрялись скачивать мессенджер из AppStore или Google Play прямо на мероприятии).


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

Второй проблемой стал интерфейс самого Telegram. В самом начале мы спрашивали пользователя «Ready? Steady?», а ему нужно было нажать на кнопку «Go!», т.к. наш бот был кнопочным. Нам казалось, что это очевидный и единственный сценарий использования, пока пользователи не начали вводить слово «Go» вручную в поле ввода, причем в разных вариациях. Разумеется, алгоритм не понимал, что это в него тут пишут. К сожалению, заблокировать поле ввода в Telegram невозможно, т.к. это всё же мессенджер в первую очередь. Переписывать и перезапускать бота было проблематично, т.к. люди им пользовались и перезапуск сломал бы многим квест.


Поэтому наш костыль был самым что ни на есть материальным: на помощь снова пришли промо-девушки, к которым обращались пользователи за помощью. Но на будущее мы запомним, что надо продумать то, что пользователь может писать в текстовое поле и, значит, нужно сделать обработку полученных данных. А также то, что пока роботы без людей существовать не могут, только в тесном симбиозе.


За время работы над конкурсом мы выяснили несколько очевидных вещей:

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

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

Сейчас бот @HyperX_bot продолжает свою работу с сообщением-заглушкой, однако базу и очередь мы уже отключили до следующего раза. За время выставки мы получили 5658 сообщений от 846 пользователей. Что интересно, хотя «Игромир» и считается мероприятием для молодой аудитории, средний возраст наших участников составлял 24-26 лет, что подтверждает нашу гипотезу об аудитории.

Параллельно мы запустили канал в Telegram — @HyperX_Russia, в котором на выставке у нас была прямая трансляция всего происходящего на стенде. И наши подписчики всегда могли узнать, поливают ли в данный момент там жидким азотом плашки памяти или Зевс раздаёт автографы. Изначально все активности в Telegram имели проектную основу, и были запанированы только на период выставки (и пару недель вокруг). Но за время работы на «Игромире» на наш канал подписалось более 1500 человек, поэтому мы решили не бросать его, а преобразовать его в некий филиал GeekTimes блога компании Kingston Technology. Для начала мы расширили тематику канала от игр в частности до технологий в целом и переименовали его в Red Head Pub (вы же знаете историю, почему на логотипе красная голова Рекс?). Сейчас там публикуются анонсы новых продуктов и акций, промо-коды на скидки, а также различные технологические новости, проводятся розыгрыши призов и многое другое. Заходите и смотрите сами: @HyperX_Russia (пст-пст, мы даже выпустили свой стикерпак!).

Конкурс


А теперь самое главное! Нам понравилось работать с ботом в Telegram, так что мы планируем и дальше его использовать, но сейчас решили обратиться за консультацией к сообществу. Итак, нам нужны ваши идеи, что можно реализовать в боте. Например, организовать в нём службу поддержки или использовать его для розыгрышей в канале. Но это может быть и какой-то квест или другая игра, ответы на часто задаваемые вопросы или что-то совершенно иное, но интересное.



Подумайте и напишите в комментарии к этому материалу все свои идеи, и обязательно подпишитесь на наш блог на Geektimes. 16 января (да, вы можете думать все новогодние каникулы) среди тех, кто подписан на наш блог, мы выберем самые интересные идеи и выставим их на голосование в нашем канале в Telegram. А уже 20-го января подведем итоги, и того, чья работа наберет больше всего голосов, наградим SSD-накопителем HyperX Savage 240 Гбайт. Это самый быстрый твердотельный SATA-накопитель с 4-ядерным и 8-канальным контроллером Phison S10, который обеспечивает скорость чтения до 560 Мб/с. Его можно устанавливать в большинство ноутбуков, ПК и даже в домашние кинотеатры.

И не забудьте подписаться на наш канал @HyperX_Russia в Telegram.



После долгого обсуждения был составлен шорт-лист финалистов:

1) Бот-каталог, который владеет всей информацией по продуктам Kingston/HyperX, и при запросе поделится ей с вами. Ознакомит с интересующим товаром, его характеристиками, и поделится ссылками на обзоры. (автор идеи streetflush)

2) Бот-викторина задаёт вопросы, а пользователи на них отвечают. В зависимости от скорости и правильности ответов игроки получают очки. У кого больше очков – тот и победил, и получил приз. (автор идеи AVX)

3) Бот-инженер. Если вы сомневаетесь в выборе комплектующих к своему ПК, бот предложит вам лучшие варианты сборок. (автор идеи argentum36)

4) Бот-геймер даёт советы, которые помогут вам добиться успеха в популярных играх. (автор идеи stigGGG)



На канале HyperX в Telegram было организовано голосование и…

Уверенную победу одержал бот-инженер, которого предложил товарищ argentum36. Он получает SSD HyperX Savage 240 GB, поздравляем! А мы уже пошли планировать реализацию нашего инженера.

Автор: @Kingston_Technology
Похожие публикации

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

  • +1
    Например, организовать в нём службу поддержки или использовать его для розыгрышей в канале. Но это может быть и какой-то квест или другая игра, ответы на часто задаваемые вопросы или что-то совершенно иное, но интересное.
    Первое, что приходит в голову в таком случае, это:
    «Если хотите обратиться в поддержку, ответьте „1“. Если хотите сыграть, ответьте „2“...»
    • 0
      Это телеграмм бот, там кнопочки есть, не надо никаких 1 и 2 отвечать.
      • 0
        Но судя по тексту, есть те, кто всё же отвечает GO, вместо того, чтобы на кнопку нажать. Бывает же… =)
  • +2
    — Все любят соревновательный момент. Можно вести в реальном времени таблицу со скоростью прохождения квеста. И победителей поощрять

    — Т.к. одной из главных целей является раскрутка бренда, фотографии из квеста отсылать не боту, а в инстаграмм с хештегом

  • +4
    Теперь пускай бот рассылает фотографии этих девушек — косплееров, зря что ли с ними фотографировались.
  • 0
    > популярный для ботов Python усложнил бы связь с базой и очередью.
    Что? почему?
  • +1
    Если делать ботов, то можно организовать «помощника в покупках».
    Пишешь ему комплектующую какую хочешь приобрести и свой город/метро. А он тебе выдает самое ближайшее и дешевое место, где она продаётся
  • 0
    Хотелось бы побольше таких историй)
    А если о предпочтениях контента в боте, то 100% интересны новые технологии и вот такие посты о том, как вы справляетесь со сложными, большими задачами.
    И что-то заинтересовало меня: неужели такую вещь, как бот в Telegram, не сможет реализовать обычный прогер. Почитал и понял, что это достаточно просто, а вот сама реализация очереди и связки с БД слегка сложнее будет.
  • +1
    Для идеи развития бота, я бы предложил ваш каталог забить в бота.
    Выбираем SSD -> Выбираем объем -> Выбираем скорость -> получаем фото товара с описанием и ссылками на магазины, тесты, обзоры…
  • 0
    Честно говоря, по описанию проблем функционирования бота создается впечатление, что его писали какие-то начинающие студенты. Затыки при нагрузке «до 16 сообщений в секунду» это просто детский сад, не говоря уж о том, что «мы не могли исправить ботак, так как он был запущен и с ним общались люди».
    • 0
      Так не сообщений же, а картинок. Текст не подвесил бы, а изображения могли спокойно, имхо.
  • +2
    Пишешь название модели, в ответ получаешь технические характеристики, условия гарантийного обслуживания и юридический адрес куда можно претензию отсылать. :)
  • 0
    Можно сделать гида по продукции, например «недорогой SSD для мультимедийного ПК» или «Быстрая память DDR3», бот отвечает списком, который можно отфильтровать, например «SSD на 120 Гб» или «ОЗУ 8 гигов 2 планки». А после фильтрации бот выдает готовые продукты, про которые можно почитать поподробнее и ссылку на магазин.
    Еще можно мини-игры добавить, за которые даются виртуальные баллы, которые можно обменять на плюшки типа промо-кодов
  • +1
    Помощника по подбору комплектующих.
    Вот такой диалог к примеру:

    Б — Бот. П — пользователь.

    Б: Ваш процессор?
    П: Intel i7 4600K
    Б: Хоршо, материнская плата?
  • 0
    Нужен высоктехноологичный собутыльник.
  • 0
    Может быть, кто-то помнит ресурс ru.intel.com (ныне закрыт). Там кроме блогов и форума был такой чат-викторина (iqtest.intel.com): бот задаёт вопросы о продукции (понятно какой) и не только (есть и общего характера), а пользователи отвечают. От скорости и правильности ответа зависит сколько пользователю будет начислено очков. Периодически там разыгрывали призы: кто в определённый период наберёт больше очков (читай — больше правильных ответов и быстрее отвечает) тот выигрывает. Плюсы: популяризация, привлечение новых (потенциальных) клиентов (халява всегда нарасхват), возможность рекламировать прямо в чате новую продукцию (задавать вопросы по ней). В периоды проведения конкурсов народ прямо сутками сидел. Есть и обратная сторона — некоторые продумали способы автоматизации ввода ответов, хоть это и подразумевает сбор базы вопрос-ответ и какой-то способ быстрого поиска.
    Предложение — сделать что-то подобное. Думаю, будет востребовано.
  • 0
    А что с голосованием?)
  • 0

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


    Кнопка со «звездочкой» — информация о распродажах, акциях и др.


    Кнопка с "вопросом" — показывает контактную информацию о новых заданиях конкурсов.

  • 0

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

  • 0
  • 0

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

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