Сервис воронок умеет работать не только с системными событиями. Их также можно генерировать и вызывать самостоятельно или сторонними сервисами.
Для этого нужно использовать блок "Событие":
![]()
Существует несколько способов активировать такое событие.
Ключевой настройкой для этого блока является идентификатор события.
![]()
По этому идентификатору система понимает, какой именно блок вы хотите активировать. Обратите внимание! Этот идентификатор не привязан к воронке/сценарию и если вы используете такой же идентификатор в других воронках, то они все будут активироваться одновременно.
Теперь о каждом способе вызова отдельно.
Чтобы вызвать событие из формы на странице, вам нужно использовать обработчик "Добавить действие ReFunnels". И указать код из настроек блока.
![]()
Этот обработчик рекомендуется размещать после ключевых действий с пользователем, до редиректа.
Когда форма будет отправлена, будут автоматически выполнены действия, настроенные после этого события
![]()
Для того, чтобы вызвать событие обычной кнопкой (без формы), выберите обработчик "действие расширений", а затем "Отправить событие ReFunnels". Работает также, как форма - создает событие, которое будет тригггерить настроенные действия.
![]()
Этот вариант бывает очень полезен, когда нужно протестировать действие для конкретного объекта.
Перейдите в режим "отладка", выберите объект и его внешний идентификатор. По умолчанию указан ваш id пользователя. После этого нажмите "Создать". Важно! Не забудьте сохранить сценарий перед запуском события.
![]()
После такого запуска, можно быстро повторить запуск из контекстного меню блока "событие". Событие будет повторно создано для последнего сохраненного объекта.
![]()
Используя этот вариант можно произвести интеграцию с внешним сервисом. При этом есть 2 варианта развития событий:
Для того, чтобы событие было возможно активировать по ссылке, перейдите на вкладку "Внешний вызов" и установите чек-бокс "Разрешить вызов внешней системой"
![]()
После этого система выдаст уникальную ссылку для вызова события и будет фиксировать входящие запросы.
В данном случае внешняя система должна передать один или несколько идентификаторов (по 1 для каждого типа объекта) по ссылке, указанной в настройке.
Тело запроса может содержать следующие параметры:
userId?: string
dealId?: string
sessionId?: string
uid?: string // id сессии из объекта window.clrtUid
chatId?: string
botId?: string
email?: string
createUser?: boolean
createUserParams?: {
firstName?: string
lastName?: string
}
customData?: Record<string, string>
Формат ответа:
{
success: boolean
message: string
}
Обязательно нужно передать один из следующих параметров: sessionId, userId, dealId, email, chatId. Если параметра не будет, сформируется случайный идентификатор сессии и событие зафиксируется для объекта "сессия".
Если будет передан идентификатор объекта, которого нет в аккаунте, будет возвращена ошибка.
Если вы передаете email, которого нет в аккаунте и хотите зарегистрировать нового пользователя, необходимо передать параметр createUser: true.
При создании нового пользователя, опционально можно передать имя (firstName) и фамилию (lastName).
Значение customData будет доступно в переменной события event.params.
Существует 2 способа передать chatId.
![]()
botId, чтобы не замешались идентификаторы из разных соц сетей. Чтобы получить id бота, перейдите в настройки этого бота (в /chtm/app/sender) и скопируйте идентификатор из адресной строки.
![]()
![]()
Как подставить переменные можно узнать из этой инструкции.
Готово! Теперь, когда процесс выполнит блок "вызвать url", в воронке добавится событие по заказу. Это значит, что в следующем блоке действия можно отправить письмо по заказу.
В информации о задаче видно, что вызов сработал корректно:
![]()
В воронке видно, что действие выполнилось успешно
![]()
Если вы хотите построить автоматизацию с событиями от внешней системы с фиксированным телом запроса, понадобится настройка "Вычислить ID объектов из параметров запроса".
![]()
Выберите тип объекта и путь, по которому передан его идентификатор в параметрах входящего события. В качестве универсального агента можно использовать сессию - передавая в неё идентификатор объекта из интегрируемой системы (например id заявки) - таким образом можно построить логику обработки разных событий по одному и тому же объекту внешней системы.
Дополнительно, вы можете сразу задать значения переменных нового объекта. Для этого используйте настройку "Преобразовать объекты из параметров запроса":
![]()
Например, запрос из внешней системы может выглядеть так:
{
gcUserId: 111222,
ticket: {
id: 111444,
title: 'Билет #376'
}
}
Тогда, чтобы сразу сохранить в переменную пользователя данные билета, можно написать так:
user.ticketId = body.ticket.id
user.ticket = body.ticket.title
После чего в воронке можно использовать user.ticket и user.ticketId.
Посмотрите пример интеграции с AMOcrm. В данном случае в качестве сессии представлена заявка. Благодаря этому есть возможность использовать логику красных стрелок, задержек и реакций, если статус заявки не поменялся в ожидаемый.
Если вы хотите узнать, какой объект отправляет внешняя система в body, установите чек-бокс "Логировать все входящие данные"
![]()
После этого отправьте тестовый запрос из источника. Данные входящего запроса будут отображены в отладке.
В воронках можно "поймать" любые действия пользователя на странице. Для настройки вам понадобится понимание JavaScript.
Чтобы сформировать такое событие на странице:
В функции обработки события страницы, вызовите функцию rfnl("<ваш_код_события_из_настроек_блока_в_refunnels>").
Если ваша страница находится не на GetCourse, то сначала нужно установить счетчик refunnels на свою страницу. Код счетчика выглядит так
<!-- refunnels counter start-->
<script src="https://<домен вашей школы>/chtm/s/metric/clarity.js"></script>
<!-- refunnels counter end-->
Если на странице находился авторизованный пользователь, то событие будет вызвано для пользователя. Если нет - для его сессии.
P.s. Это актуально также для вызова события при заполнении формы на сторонней CMS. Вам нужно в настройках формы настроить "вызов javascript" и в параметрах указать
rfnl("<ваш_код_события_из_настроек_блока_в_refunnels>")