JS-трекерEOL
Скрипт может быть запущен триггером Трекер. Блок срабатывает каждые 5 минут (параметр невозможно изменить) и собирает статистику о действиях посетителей на сайте, в код которого встроен сниппет. Информация автоматически подгружается пакетно в систему Proceset, где объединяется с данными из других систем. Количество элементов в пакете – 1 (отправка каждого события происходит сразу). На основании полученной статистики можно проводить аналитику по выделению сценариев или процессов.
Работа трекера состоит из 3 компонентов:
- Snippet – небольшой фрагмент кода, в котором содержатся настройки подключения трекера;
- Трекер – блок-триггер, который осуществляет сбор данных и их передачу на сервер;
- Модуль трекинга на платформе Proceset – модуль, осуществляющий прием данных от трекера.
Данные с сайта копятся в локальном хранилище и передаются JS-трекером каждые 15 секунд. В случае, если сервер не принимает отправленные данные от трекера, эти и все следующие собираемые с сайта данные будут храниться в буфере размером 1 Мб до момента, пока сервер не станет вновь доступным. После того как события будут успешно переданы, буфер очищается.
В левой панели представлены параметры блока:
- имя веб-приложения;
- UUID;
- адрес сервера сбора аналитики;
- встраиваемый код (snippet).
Если при настройке блока добавить имя веб-приложения, оно также отобразится во встраиваемом коде. Встраиваемый код можно просмотреть и скопировать, но он недоступен для редактирования. Для выполнения скрипта скопируйте встраиваемый код и вставьте его в код сайта, с которого необходимо получать события.
Примечания:
- В системе не может быть двух одинаковых UUID: они уникальны для каждого трекера.
- Для корректной работы скрипта имя веб-приложения и UUID должны совпадать в блоке и на сайте.
Список возвращаемых полей по умолчанию:
Поле | Тип | Описание |
---|---|---|
event | Информация о событии | |
event.name | string | Имя события |
event.props | Array [] string | Словарь с пользовательскими данными |
event.time | number | Временная метка вызова метода (количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC) |
event.element | Информация о DOM-элементе, на котором сработало событие: кнопка, ссылка, поле и др. | |
event.element.id | string null | Идентификатор элемента (берется только атрибут id) |
event.element.name | string null | Имя/данные элемента. Вычисляется индивидуально для каждого типа элемента |
event.element.webctrl_selector | string null | Способ идентификации элемента на странице https://docs.uipath.com/studio/docs/about-selectors#webctrl |
person | Информация о пользователе | |
person.user_id | string null | Идентификатор зарегистрированного пользователя |
person.anonymous_id | string | Сгенерированный анонимный UUID v4 идентификатор |
person.ids | Array [] string | Словарь идентификаторов, полученных из сторонних трекеров, подключенных к странице |
app | Информация о сайте, подключающем трекер | |
app.name | string | Имя приложения. Указывается в конфигурационном файле, по умолчанию используется текущий домен |
lib | Информация о трекере | |
lib.version | string | Номер версии трекера |
campaign | UTM-метки, полученные из url | |
campaign.source | string null | Источник перехода, рекламная площадка |
campaign.medium | string null | Тип рекламы |
campaign.name | string null | Название рекламной кампании |
campaign.term | string null | Ключевая фраза |
campaign.content | string null | Дополнительная информация по объявлению |
page | Информация о web-странице | |
page.title | string | Заголовок вкладки браузера |
page.referrer | string | url, с которого произошел переход на текущую страницу |
page.url | string | url текущей страницы |
page.path | string | Часть url между хостом и параметрами |
screen | Информация об экране | |
screen.width | number | Ширина экрана в пикселях |
screen.height | number | Высота экрана в пикселях |
navigator | Состояние и особенности (свойства) пользовательского агента | |
navigator.user_agent | string | Строка агента пользователя для данного браузера |
navigator.language | string | Предпочитаемый пользователем язык, как правило, это язык пользовательского интерфейса браузера |
time_zone | string | Временная зона |
Сбор кастомных событий
Кастомные события автоматически собираются с помощью параметра interceptor. В качестве значения параметра передается массив объектов.
Чтобы JS-трекер собирал кастомные события, дополните встраиваемый код:
{
action: "Click" | "FieldChange",
interceptor: (target: EventTarget) => {
eventName: string,
elementName: string,
element: Element,
eventProps: object
} | null
}
Где:
- action - тип события, по которому будет вызван interceptor;
- interceptor - обработчик события. Принимает элемент, по которому произошло событие, и возвращает структуру, описывающую кастомное событие. Также в коде можно указать null, если событие следует проигнорировать.
В зависимости от того, какие данные необходимо получать, у параметра могут быть указаны следующие поля:
- eventName;
- elementName;
- element;
- eventProps.
Настройка cors_policy для междоменного обмена данным
В случаях, когда JS-трекер находится в домене отличном от того, на котором располагается Proceset, необходимо настроить политику cors, предоставляющую доступ к этому домену. Для этого необходимо в конце конфигурационного файла Proceset com.infomaximum.subsystem.frontend.json добавить перед последней фигурной скобкой:
"cors_policy": "*"
Файл расположен на сервере Proceset в каталоге: C:\ProgramData\Infomaximum\config\com.infomaximum.subsystem.frontend.json.
Несовместимость типов при получении Null в активности
При возникновении несовместимости типов при получении Null в активности, собираемой JS-трекером, необходимо привести колонки целевой таблицы в скрипте к типу Nullable. Если таблица была создана ранее, то можно воспользоваться следующим способом устранения данной проблемы:
- Создайте блок «SQL-запрос» в целевом скрипте;
- Введите SQL-запрос ALTER TABLE NAME_TABLE(название таблицы) MODIFY COLUMN person_user_id Nullable(String);
- Измените тип целевой колонки;
- Удалите блок «SQL-запрос», созданный в п. 1 и 2;
- Используйте обновленную таблицу с типом колонок Nullable и ранее созданным скриптом.
Способ подходит для решения любой подобной ситуации, связанной с несовместимостью типов.
Была ли статья полезна?