Google Analytics для телеграм бота

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

image
Спершу невелика ремарка. Я не є ні аналітиком, ні seo-спеціалістом. Можливо, деякі завдання можна вирішити ефективніше, але про це вкрай мало інформації. Так склалося, що наші колеги за океаном навідріз відмовилися працювати з продуктом Яндекса ботан і вимагали знайомий інтерфейс «як 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

Уважний читач міг помітити, що з якихось причин Гренландія має майже стільки ж сеансів, що і Росія. Справа в тому, що це маленька хитрість. Не всі користувачі переходять за посиланнями або відправляють свою локацію. Оскільки для нас важливо розуміти не тільки географічне розташування, але і скільки користувачів нам його не надали, ми вирішили всіх хто ще не встиг розповісти про своє місцезнаходження вважати великою, але малонаселеній Гренландії.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.