Страницы

Поиск по вопросам

Показаны сообщения с ярлыком yandex-metrika-api. Показать все сообщения
Показаны сообщения с ярлыком yandex-metrika-api. Показать все сообщения

четверг, 23 января 2020 г.

Вебвизор Яндекс.Метрики не показывает переходы по ссылкам с Turbolinks

#ajax #ruby_on_rails #yandex_metrika_api


Вебвизор записывает сеансы, видно перемещение мыши, нажатия на клавиши, скроллинг,
щелчки по ссылкам. Но при переходе по ссылкам - страница не обновляется. В чем может
быть проблема?

Использую Turbolinks 5.0.1. Сайт: gambala.pro

Счетчик метрики подключен с ключом trackHash:true для отслеживание хеша в url. Пробовал
размещать скрипт в body, и в data-turbolinks-permanent-блоке - вебвизор в обоих случаях
при переходах по ссылкам не обновляет страницу.

Код счетчика:






    


Ответы

Ответ 1



У яндекса есть такая вещь https://yandex.ru/support/metrika/code/ajax-flash.xml Попробуйте при перезагрузки содержимого страницы отправлять yaCounterXXXXXX.hit('http://example.com#contacts', {title: 'Контакты', referer: 'http://example.com/#main'});

суббота, 11 января 2020 г.

Метрика для телеграм-бота (сбор статистики)

#telegram_bot #любой_язык #telegram #yandex_metrika_api


Требуется обложить метрикой бота для телеграм. Нашел сайт http://botan.io и не понимаю,
жив ли проект... Актуален ли сегодня проект botan.io? У ресурса в футере указан 2015
год. И есть ли альтернатива?
    


Ответы

Ответ 1



Хороший вопрос. Увы - проект мёртв, как это можно понять по активности его репозитория на гитхабе. В декабре написал разработчикам. Сказали, что проект на данный момент не поддерживают, поэтому даже в pull request нет смысла. По датам возобновления работы над сервисом не сказали. Неизвестно, что именно послужило причиной сворачивания, но у проекта были проблемы с роскомнадзором и блокировками. Альтернатив не нашёл, к сожалению. С удовольствием премирую того, кто предложит адекватную альтернативу. UPD У меня две хорошие новости: Апи ботана работает Можно пользоваться апи ботана с токеном, полученным непосредственно в метрике (проверено опытным путём) Для бота будет актуальным, думаю, только один метод - track. Для этого можно юзать обычные нативные веб-запросы, без обёрток - никаких зависимостей от конкретных реализаций. Пример запроса: // token = qwerty; // chatID = 12345; // command = 'start'; https://api.botan.io/track?token=token&uid=chatID&name=command где: token - токен приложения, выданный метрикой (или ботом, если это настолько старый токен); uid - идентификатор, позволяющий разделить источники событий или наоборот, сгруппировать их (может быть любым уникальным значением, да даже и не уникальным - на усмотрение разработчика); name - наименование (произвольное) отслеживаемого действия пользователя Track message (метод Shorten url не работоспособен на территории РФ по причине блокировки домена, возвращающего "короткие" ссылки) Возможные альтернативы: chatbase.com botanalytics.co dashbot.io botlytics.co

воскресенье, 1 декабря 2019 г.

Как работает код счетчика метрики?

#javascript #яндекс #yandex_metrika_api


Стало интересно как работает код счетчика метрики, но в JavaScript я не очень силен,
знакомился с ним буквально по верхам. 

(function(d, w, c) {
(w[c] = w[c] || []).push(function() {
    try {
        w.yaCounterCOUNTER_ID = new Ya.Metrika({
            id: COUNTER_ID,
            clickmap: true,
            trackLinks: true,
            accurateTrackBounce: true,
            webvisor: true
        });
    } catch (e) {}
});
var n = d.getElementsByTagName("script")[0],
    s = d.createElement("script"),
    f = function() {
        n.parentNode.insertBefore(s, n);
    };
s.type = "text/javascript";
s.async = true;
s.src = "https://mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
    d.addEventListener("DOMContentLoaded", f, false);
} else {
    f();
}
})(document, window, "yandex_metrika_callbacks");


Не очень ясна конструкция в самом начале функции. Каким образом будет создан новый
объект Ya.Metrika, если его фактически в коде нет, а сам скрипт watch.js подгружается
в коде позже? 

И как здесь все-таки работает добавление самого скрипта watch.js? Ведь если посмотреть
код страницы с установленным счетчиком, тег script с параметрами и путем к watch.js
не будет виден в коде страницы. 

Заранее спасибо за объяснения!
    


Ответы

Ответ 1



Отличный вопрос! Давайте по-порядку: 1. Объявление и вызов главной функции (function(d, w, c) { ... })(document, window, "yandex_metrika_callbacks"); Здесь вы объявляете некую функцию, и сразу после объявления - ее же и вызываете с параметрами document, window и строковым ключом Яндекс.Метрики. Эти параметры используются внутри функции. 2. Сохранение конструктора метрики w[c] = w[c] || [] w - это ваше окно браузера. В нем вы можете хранить функции или данные, и они будут доступны глобально в других скриптах. По сути, здесь вы обращаетесь к w["yandex_metrika_callbacks"], и там либо уже будут какие-то значения (например, с других счетчиков Яндекс.Метрики), либо объявленный вами пустой массив. .push(function() { ... ); И далее в этот массив (уже существующий или только что созданный) вы добавляете элемент - функцию, которая попытается создать объект счетчика метрики. w.yaCounterCOUNTER_ID = new Ya.Metrika({ .. }); Создаете объект снова у окна w, чтобы он был доступен в любых других скриптах. 3. Асинхронная загрузка скрипта метрики n = d.getElementsByTagName("script")[0] Здесь вы находите первый попавшийся у вас на сайте тег