На Хабре уже есть несколько статей про телеграм бота. Но как же следить за использованием бота? Под катом собираем данные для оценки наиболее используемых функции бота, эффективности кампаний и показателей отказа.

image

Сперва небольшая ремарка. Я не являюсь ни аналитиком, ни seo-специалистом. Возможно, некоторые задачи можно решить эффективнее, но об этом крайне мало информации. Так сложилось, что наши коллеги за океаном наотрез отказались работать с продуктом Яндекса botan и требовали знакомый интерфейс “как в google analytics”. Было решено использовать google analytics measurement protocol. С его помощью можно передавать почти все те же данные в google analytics, что и обычным образом (например, скриптом на сайте).

Если ваш бот написан на laravel, мы можем посоветовать пакет irazasyed/laravel-gamp для работы measurement protocol.

Как пользуются ботом?


В нашем боте мы разметили основное взаимодействие пользователя с ботом по диалогам и шагам. Например, диалог настроек выглядит примерно вот так:

image

На самом деле это один шаг диалога с кнопками и 6 отдельных шагов настройки конкретных параметров. Эту структуру можно представить в виде адресов:

  • /settings
    • /settings/gender
    • /settings/frequency
    • /settings/language

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

use Irazasyed\LaravelGAMP\Facades\GAMP;
...

$gamp = GAMP::setClientId( '123456' );
$gamp->setDocumentPath( '/settings' );
$gamp->sendPageview();

...

image

Откуда появляются новые пользователи?


Если аналогия страниц сайта с состоянием пользователя (его текущей клавиатурой) вполне очевидна, то как провести аналогию с источником трафика? По факту мы никак не можем узнать, каким именно образом пользователь нашел нашего бота. Но есть одна хитрость. У нас уже имелся инструмент для передачи аналога utm_campaign в Google Analytics.

Телеграм дает возможность начинать диалог с пользователем не с чистого листа. Когда пользователь нажмет на кнопку “start” в приложении телеграма, бот получает сообщение “/start”. Это сообщение можно расширить дополнительным параметром. Каждый бот имеет ссылку, которая открывает чат с ним в телеграмме — telegram.me<bot_name>. К этой ссылке можно добавить параметр “start” (или “startgroup”), например:

https://telegram.me/bot_name?start=habr-gamp

В данном случае мы можем передать в аналитику источник “habr” и даже уточнить его каналом “gamp”.

if($campaign){
   if(strpos($campaign,'-')){
       list($campaign,$medium) = explode('-',$campaign);
       $gamp->setCampaignMedium($medium);
   }
   else{
       $gamp->setCampaignMedium('none');
   }
   $gamp->setCampaignSource($campaign);
}

С этого момента мы можем следить за успешностью рекламных компаний:

image

Что делать, если пользователь заблокировал бота?


При очередной отправке сообщения вы можете столкнуться с неприятной ситуацией — пользователь заблокировал бота. Как это отразить в аналитике? На самом деле мы не можем отдать аналитеке просмотр страницы “/unsubscribe” или подобной, т.к. пользователь сейчас находится в другом состоянии (на другой ”странице”). Но gamp поддерживает и события. Соответственно, отправляем ему событие о блокировке пользователя.

use Irazasyed\LaravelGAMP\Facades\GAMP;

...
$gamp = GAMP::setClientId( '123456' );
$gamp->setEventCategory('User')
	->setEventAction('Unsubscribe')
	->setEventLabel('Blocked')
	->sendEvent();
...

География использования бота


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

  • У api google карт есть замечательный сервис геокодирования и, в частности, обратного геокодирвоания. Соответственно, остается отдать в аналитику соответствующую страну:

      $gamp->setGeographicalOverride($oChat->country);
    


  • Альтернативный способ заключается в вычислению по ip получении ip пользователя. Единственный способ узнать его — это “заманить” пользователя на сайт. Например, через короткие ссылки-редиректы.

    В таком случае уже не обязательно выяснять, какой стране принадлежит ip, google умеет это делать самостоятельно.

    $this->gamp->setIpOverride($oChat->last_ip_address)
    

image

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

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


  1. EkaterinaSava
    09.09.2016 21:00

    А этого хвалёного бота можно где-то пощупать?


    1. Visionary
      09.09.2016 21:22
      +1

      Конечно. @EpytomBot


  1. and7ey
    09.09.2016 21:04

    Отправлять статистику по боту в Google Analytics, а затем ее же смотреть в Telegram (например, с помощью @MetricsBot)? Хм, кажется, где-то я об этом уже писал :).

    Важное замечание, о котором вы не написали — в Google Analytics нужно указать, что вы отслеживается Сайт, а не Мобильное Приложение. Так как во втором случае pageViews с описанным вами способом работать не будут.


    1. Visionary
      09.09.2016 21:26

      Да, не хватает только бота, через который заменит настройку аналитики (добавление отображений и отчетов).
      Спасибо за замечание!


  1. bodqhrohro
    10.09.2016 14:44

    про телеграм бота
    <GN>Почему делает бот нуждаться телеграммы?</GN>