Иногда возникает задача не запускать воронку, если текущий пользователь уже проходит другую. Или запустить, но по другой ветке.
Для решения этой задачи можно использовать глобальные переменные.
Это переменные, которые присваиваются не агенту воронки, а исходному объекту (например пользователю или заказу). И к таким переменным можно обращать одновременно из разных воронок.
Для того, чтобы ограничить повторный запуск воронки для того же объекта, необходимо:
Ниже подробнее о том, как это сделать.
Для начала создадим переменную, которая будет отвечать за блокировку повторных запусков.
funnelStartedAt
. Т.е. записывать будем время, когда запустилась воронка. Таким образом можно будет не только проверять факт запуска, но и учитывать когда это произошло.Теперь необходимо во всех конкурентных воронках на старте добавить проверку этой переменной и добавить реакции в зависимости от значения.
Т.е. в этом шаге мы "перекладываем" значение из глобальной переменной в локальную.
В приведенной в п.1. схеме если пользователь уже проходит другую воронку, ему будет отправлено сообщение "Вы уже начали другой курс..." и следующее сообщение отложено на 4 дня.
Теперь, когда пользователь прошел проверку и воронка уже запустилась, необходимо "заблокировать" его для других воронок.
Для этого:
В данном примере в качестве основного объекта используется пользователь. Вы можете это поменять в зависимости от вашей воронки. Например, если у вас воронка по чату (нет пользователя), то используйте тип объекта "чат". Внимание! Тип объекта при проверке на старте воронки должен совпадать с тем типом, который выбираете при установке.
true
. В текущем примере, присваивается new Date()
- это специальная функция, которая возвращает текущее время (в часовом поясе UTC 0) в виде объекта даты.
Если хотите превратить дату в число, можно написать Date.now()
. Подробнее про числовое представление даты читайте здесь.
Вариант с датой позволяет строить разное поведение, в зависимости от того, когда объект начал проходить воронку.Готово! Теперь после успешного запуска воронки, будет записываться глобальная переменная для выбранного типа объекта. Её можно проверять из любой воронки, на любом этапе, с помощью блока "глобальная переменная".
При таком подходе блокировки запусков, важно не забыть убрать блокировку, когда объект уже прошел воронку. Для этого, в конце воронки, используем всё тот же блок "глобальная переменная".
В настройках блока устанавливаем значение переменной null
или false
.
После этого объект будет успешно проходить проверку "не проходит другие воронки"