Как сделать событие в битриксе
Сервисов онлайн-чатов много. Но какой бы вы ни выбрали, будет полезно отслеживать, как часто им пользуются посетители сайта. В данной статье мы расскажем, как настроить отслеживание обращений в онлайн-чат Битрикс24 без программистов.
Поэтому следуя данной инструкции, вы сможете самостоятельно настроить отправку событий онлайн-чата Битрикс24 и использовать их в качестве микроконверсий в Google Analytics. Нужен только доступ к установленному на сайте Google Tag Manager для совершения всех настроек и доступ к Google Analytics для установки целей.
За основу был взят скрипт обработки событий из статьи, который я адаптировала под цели для Google Analytics.
Настройка отслеживания событий чата
Для настройки в Google Tag Manager необходимо создать тег со скриптом, тег с автособытием для онлайн-чата, триггер с пользовательским событием для отправки автособытия, переменные категории и действия по событию.
Теперь по порядку создания настроек контейнера GTM.
Тип календаря: в данном поле нужно выбрать тип календаря. Это может быть календарь сотрудника (user) или календарь группы (group).
Идентификатор владельца календаря: в данном поле следует указывать id сотрудника, либо id группы. Значение указывается простой цифрой (без квадратных скобок). Нельзя подставлять пользователя из списка пользователей.
Дата начала события: в данном поле требуется указать, когда начнётся планируемое событие.
Дата завершения события: в данном поле требуется указать, когда завершится планируемое событие.
Идентификатор календаря: в данном поле требуется указать id календаря пользователя или группы.
Чтобы понять, какое значение сюда требуется прописать, необходимо:
1. Для календаря пользователя.
Перейдите в список календарей и нажмите "Настройки"
Далее необходимо нажать F12 в браузере и навести курсор на список календарей выбора по умолчанию для приглашений.
К сожалению, в API Битрикс24 нет метода, который бы выбирал календарь пользователя по умолчанию для приглашений самостоятельно.
Вы можете ускорить появления данного метода, обратясь в поддержку Битрикс24 с указанием данного номера обращения.
2. Для календаря группы.
Перейдите в календарь группы и нажмите F12.
Нажмите на инструмент выбора блока и наведите на календарь.
В классе bxec-sect: содержится id календаря.
Значение даты передается без времени: эта опция позволит устанавливать даты события без указания времени.
Наименование события: в данном поле вы указываете тему создаваемого события.
Описание события: в данном поле вы указываете текстовое описание создаваемого события.
Цвет фона события: в данном поле вы указываете цвет создаваемого события в календаре. Применяется код цвета HTML.
Цвет текста события: в данном поле вы указываете цвет текста создаваемого события в календаре. Применяется код цвета HTML.
Доступность на время события: в данном поле вы определяете отметку занятости, которая будет отображаться в планировщике событий.
Важность события: в данном поле вы можете выбрать категорию важности создаваемого события в календаре.
Частное событие: при указании значения "да" в данном поле, Вы ограничиваете видимость содержания создаваемого события. В календаре будет отображаться что событие есть, но прочесть другим сотрудникам его не получится.
Место проведения: в данном поле вы можете указать место проведения создаваемого события.
НАПОМИНАНИЕ (за сколько): в данном поле вы можете указать, что система должна Вас уведомить за какое-то время. Значение указывается в целых числах.
НАПОМИНАНИЕ (единица измерения): в данном поле вы можете указать, в каких единицах измерения вести отсчет времени до напоминания (дни,часы,минуты)
Список участников события: в данном поле указываются участники создаваемого события. Поле является множественным. Каждый участник добавляется в отдельное поле. Значение указывается простой цифрой (без квадратных скобок).
Организатор события: в данном поле указывается организатор создаваемого события. Значение указывается простой цифрой (без квадратных скобок). Это поле важно заполнять, когда это событие календаря типа встреча и в него будут приглашаться другие участники.
Создать встречу: данное поле позволяет создавать событие тип встреча, на которую приглашаются участники.
ВСТРЕЧА: Текст приглашения - в данном поле указывается описание для события типа встреча.
ВСТРЕЧА: признак открытой встречи - в данном поле указывается тип события. Встреча может быть общедоступная или закрытая.
ВСТРЕЧА: флаг запроса повторного подтверждения участия (при редактировании события) - в данной опции (с помощью системного механизма Битрикс24) указывается необходимость повторно уведомлять участников события если в него будут вноситься изменения.
Запускать от имени: данное поле необходимо для того, чтобы установить сотрудника, с правами которого выполнять действие данного активити. Если у сотрудника не будет прав на выполнение действия, то активити не сработает. Рекомендуем выбирать всегда сотрудника с правами администратора системы.
Устанавливать текст статуса: данное поле позволяет включать возможность установки статуса бизнес-процесса. Это необходимо для того, чтобы во время работы активити информировать пользователя в истории о том, что бизнес-процесс остановился на конкретном шаге. Это особенно важно в момент отладки и выяснения причин неполадок в работе механизма.
Текст статуса: в данном поле указывается текстовый вариант статуса, который Вы можете изменять.
Ожидать ответа: данное поле Вами не управляется. Оно необходимо для того, чтобы определить, нужно ли ожидать реакции от нашего активити после запуска.
Период ожидания. Время ожидания ответа от приложения - Данная опция позволяет ограничить срок ожидания ответа от приложения. Технические особенности платформы Битрикс24 иногда создают ситуацию при которой создаётся очередь из огромного числа запросов. Это может помешать работе нашего активити и бизнес-процесс будет ожидать длительный период времени. Для того, чтобы не останавливать дальнейшие действия, вы можете установить своё время ожидания. Если время истекло и результат не получен, то бизнес-процесс будет двигаться далее по заложенной вами логике.
Поставим перед собой абстрактную задачу: пусть для каждой создаваемой группы в соцсети (или в корпортале) в описание добавляется информация о том, что ругаться нельзя и некоторому пользователю вообще нельзя создавать группы.
Анализ вызова события
Для начала разберемся в событиях как таковых. Теорию вы уже знаете, рассмотрим на практике.
Вызов обработчиков всегда одинаковый, меняются только переменные и логика обработки ответа. Для анализа необходимо обратиться к исходным кодам. Это можно сделать просмотрев файлы системы, а лучше с использованием модуля Живое АПИ.
Выберем для примера событие OnBeforeSocNetGroupAdd:
Количество переменных. В этом событии переменных всего одна ( $arFields ). Именно столько же переменных нам надо будет вызвать в нашем обработчике. Переменных также может быть две или больше, например в событии OnSocNetGroupAdd:
Переопределение переменных. Если перед одной из переменных стоит &, значит ее можно переопределить (это называется передача по ссылке).
Отмена действия. В нашем случае для события OnBeforeSocNetGroupAdd есть такая возможность:, если мы в нашем обработчике сделаем return false , группа создана не будет. А, к примеру, в OnSocNetGroupAdd возможности отмены действия нет. Ибо действие уже произведено.
Создание обработчика события
Напомним теорию: для обработки событий в ваших модулях вам надо использовать RegisterModuleDependences. А для обработки в иных случаях вам надо использовать AddEventHandler.
Имя модуля нам известно (socialnetwork), имя события известно (OnBeforeSocNetGroupAdd), пишем функцию/метод по правилам из теории и не забываем про:
- количество переменных
- возможность переопределения
- отмену действия
Как узнать что содержится в переменных, какие ключи массива и так далее?
Делаем вывод на экран переменных с завершением работы в теле функции:
Отмена действий
Отмена действия с передачей ошибки в систему:
Мы собрали абстрактный обработчик, который добавляет к описанию группы правило, и запрещает пользователю с создавать группы в принципе.
Совет от Антона Долганина: Лучше не плодить функции, а создать класс ваших обработчиков (в идеале по одному классу на каждый модуль), и писать обработчики внутри классов. Например, CForumHandlers::onBeforeTopicAdd();.
В этой статье я покажу на примерах как работать с событиями в ядре d7 на примере модуля grain.forum (Простой адаптивный форум). Будет показано и как создавать обработчик события с возможностью и изменения данных с позиции разработчика сайта, и как вызываются обработчики событий внутри модуля. Это статья не про ORM-события (т.е. события, связанные с хранением данных в базе, и где используется более стандартизованный подход), а про обычные события, которые могут использоваться для чего угодно.
[spoiler]
Пояснение: событие OnGlobalsGetFilter в модуле grain.forum предназначено для модификации глобального фильтра для форумов и их разделов (фильтра, который применяется в компонентах всегда и в основном используется для привязки форумов и разделов к сайтам).
Пример обработки события (со стороны разработчика)
Обработчик события может (но не обязан) вернуть объект типа \Bitrix\Main\EventResult;
Создать такой объект можно так
где $type может принимать значения:
\Bitrix\Main\EventResult::SUCCESS - при успешной обработке
\Bitrix\Main\EventResult::ERROR - если нужно вернуть ошибку
$event->getEventType() - статус на входе (например, после другого обработчика)
$arReturn - возвращаемое значение, зависит от события, и может быть, как числом или строкой, так и, например, массивом
Пример вызова события (со стороны модуля)
Читайте также: