Статья была полезной?
Переменная — это атрибут, вместо которого подставляются индивидуальные данные пользователя или связанного с ним объекта. Эти данные воронка «запоминает» с помощью переменных, и их можно в дальнейшем использовать в любом месте воронки:
- для вывода пользователю персонализированной информации, например, чтобы показывать ему количество заработанных очков/баллов/монет или обратиться по имени в сообщении;
- для проверки перед запуском действий, например, чтобы добавлять пользователя в группу, только если он посетил страницу с оффером.
Для создания переменных используются выражения, работу с которыми рассмотрели в статье «Работа с выражениями в модуле „Воронки“». В этой статье рассмотрим два типа переменных — локальные и глобальные, — а также как их правильно использовать в воронках.
Локальные переменные
Локальная переменная — это переменная, которая будет действовать только в рамках отдельно взятой воронки.
Переменные можно присваивать для всех агентов:
- сессия (session),
- пользователь (user),
- заказ (deal),
- чат (chat).
Чтобы создать локальную переменную:
- Перейдите на вкладку «Запуск», зайдите в настройки реактивности интересующей ноды.
- Отметьте чекбокс «Установить переменные» и пропишите нужное выражение в поле «Код преобразования». Например:
user.visitedPage = true — в нашем примере будет означать, что пользователь посетил страницу с оффером.
Подробнее о том, как правильно прописать переменную и присвоить ей значение, читайте [в разделе ниже ▼].


Когда агент «пользователь» завершит этот шаг воронки, для него будет присвоено значение указанной переменной. Эту переменную можно будет использовать в других местах воронки. Например, можно будет проверить, посещал ли пользователь страницу, прежде чем отправлять ему письмо со скидкой. Подробнее о проверке переменных [в разделе ниже ▼].
Для чата или пользователя переменную можно присвоить также через настройку в нодах «Команда бота» и «Ввод пользователя». В указанную переменную будет записан текст сообщения, отправленного пользователем.
Пример
Пользователь может прислать вам сообщение со своим уровнем английского языка. Сообщение будет записано в переменную. Далее в воронке можно проверять значение переменной и в зависимости от этого запускать нужные сценарии — для пользователей с разным уровнем владения английским.


Как правильно прописать переменную и присвоить ей значение
Чтобы правильно прописать переменную и присвоить ей значение, нужно использовать конструкцию агент.переменная = значение:
- Выбрать агента, для которого вы хотите записать информацию, и прописать его название: session, user, deal или chat. Например, user — если вы хотите записать данные для пользователя.
- Через точку указать название переменной — оно может быть любым, но должно начинаться с буквы и быть написано латиницей. Например, .visitedWebinar — для записи того, что пользователь посетил вебинар.
- Написать знак «равно» и указать присваиваемое значение. Например, = «yes» — если нужно записать положительное значение.
Получится выражение user.visitedWebinar = «yes» — оно будет означать, что пользователь, которому присвоена эта переменная, посетил вебинар. По сути это выражение составлено на языке javascript. Подробнее о составлении javascript-выражений читайте в статье «Работа с выражениями в модуле воронок».
Важно
Агент должен подходить к ситуации. Это значит, что в ноде, где присваивается переменная, обязательно должен присутствовать указанный в переменной агент.
Например, в ноде «Страница» может быть только два агента, которым можно присвоить переменную:
- сессия,
- авторизованный пользователь.
А вот агенту «заказ» в этой же ноде присвоить переменную нельзя, т. к. заказ не может посетить страницу.

В качестве значений, которые можно присвоить переменной, в основном используется 3 типа:
- Текст — обязательно должен быть обернут в кавычки.
Пример правильного присвоения: user.status = "new".
Пример присвоения с ошибкой: user.status = new. - Число — может быть положительным или отрицательным. Поддерживает арифметические операции с другими переменными. Например, можно на старте задать значение user.coins = 0, после этого на определенном шаге воронки прибавить к значению число.
Пример: user.coins = user.coins + 1 — если использовать одну переменную,
user.total = user.coins + 1 — если использовать разные переменные. - Логическое значение (истина/ложь) — присваивается как true (истина) или false (ложь). Бывает удобно для проверки условия ДА/НЕТ. Записывается без кавычек.
Пример: user.sawOffer = true.
Как проверить значение переменной перед выполнением действия
Для проверки переменной перед запуском действия:
- Перейдите в настройки перехода (стрелки).
- Выберите «Установить условие».


- В зависимости от задачи выберите опцию «Запустить, если» — например, «все условия выполнены», если нужно, чтобы действие запускалось только при наличии переменной с нужным значением.
- Установите вариант «Значения переменных».

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

Существует множество операторов для работы с переменными. Более подробно изучить логические операторы вы можете в открытых источниках, например, в справочниках по Javascript. Рассмотрим наиболее используемые.
Оператор | Что значит | Примеры использования и нюансы |
=== | полностью соответствует (равно) | user.status === «new» — проверяет, равен ли статус пользователя значению «new», т. е. является ли пользователь новым. Если значение переменной, присвоенной пользователю, совпадает с проверяемым значением, то пользователь пройдет проверку (true). Если нет (например, переменная не была создана или не была присвоена), то проверка не будет пройдена (false) и действие не будет запущено. |
!== | не равно | user.status !== «new» — проверку пройдет пользователь, который не является новым или нам это неизвестно. Используйте, когда нужно проверить, что переменная не равна указанному значению или не задана совсем. |
>, <, >=, <= | больше, меньше, больше или равно, меньше или равно | user.score >= 100 — проверку пройдет пользователь, у которого 100 или более очков. |
.includes("value") | текст содержит значение, прописанное в «value» | chat.lastMessage.includes("купить") — проверит, есть ли в последнем сообщении пользователя слово «купить». Если пользователь написал «Как купить этот товар?», то он пройдет проверку. Используйте для работы с текстовыми переменными, чтобы проверить, есть ли в тексте нужное значение. Обратите внимание: значение в скобках чувствительно к регистру. Если пользователь напишет «Купить», то в нашем примере он не пройдет проверку. |
.toLowerCase() | привести к нижнему регистру | Актуально в связке с предыдущим пунктом. chat.lastMessage.toLowerCase().includes("купить") — сначала приведет строку к нижнему регистру, после чего проверит, содержит ли она значение «купить». Поможет определить также и сообщения «Купить», «КУПИТЬ», купиТЬ" и т. д. |
&& | И | user.status === «new» && user.score < 10 — пользователь пройдет проверку, если выполнены ВСЕ перечисленные условия, т. е. в примере это новый пользователь И у него менее 10 очков. Можно использовать для объединения нескольких проверок. |
|| | ИЛИ | user.status = «vip» || user.coins > 10 — аналогично предыдущему, но пользователь пройдет проверку, если удовлетворено ЛЮБОЕ из перечисленных условий. |
Если переменной присваивается значение true/false, то в выражении можно просто записать эту переменную, без операторов. Например, при посещении вебинара пользователю присвоено значение user.visitedStream = true. Тогда на переходе для проверки «был ли пользователь на эфире» можно прописать только саму переменную user.visitedStream.

В этом случае проверка сработает следующим образом:
- Если переменная не была установлена для агента, то он не пройдет проверку и действие не будет запущено (false).
- Если переменная равна пустому тексту (""), нулю (0) или отрицательному числу (-4), то агент не пройдет проверку и действие не будет запущено (false).
- Если переменная равна любому непустому тексту или положительному числу, то агент пройдет проверку и действие будет запущено (true).
Глобальные переменные
Глобальная переменная — это переменная, которая будет доступна в любой воронке аккаунта.
Для работы с глобальными переменными используйте одноименную ноду.

Как создать глобальную переменную
Чтобы создать глобальную переменную:
- Добавьте ноду «Глобальная переменная» и перейдите в ее настройки.
- Нажмите «Новая переменная».

- Пропишите ключ переменной — то, как она будет записана в системе и как вы будете прописывать ее в дальнейшем для присвоения и проверки. Ключ переменной:
- может содержать только латиницу и цифры;
- не может начинаться с цифры и содержать пробелы (вместо них можно использовать нижнее подчеркивание _).
- Пропишите название переменной — используется для внутреннего учета и поиска.
Пример: Количество очков. - Нажмите «Создать переменную».

Как задать переменную (присвоить ее объекту)
С помощью действия «Задать переменную» вы можете присвоить переменную для объекта, прошедшего ноду. Другими словами, вы сообщаете системе, для какого объекта и каким образом будет вычисляться переменная.
Чтобы задать переменную, заполните 3 поля:
- Тип агента: «Пользователь», «Заказ», «Сессия», «Чат» или «Общая». Вариант «Общая» используйте, чтобы создать единую переменную, которую можно будет присваивать для агентов любого типа. Например, таким образом можно сохранять номер телефона организации, ссылку на актуальное мероприятие или даты запуска, которые достаточно поменять в одном месте для применения во всех воронках.
Обратите внимание
Агент, который вы выбираете на данном этапе, должен присутствовать в событии. Если вы выберете агент, которого нет в событии, при выполнении действия произойдет ошибка. Воронка продолжит свою работу, не присвоив никаких переменных.

- Переменная — здесь отображаются все доступные в аккаунте глобальные переменные. Вы можете выбрать существующую или создать новую.
- Выражение для вычисления значения переменной.
В этом выражении вы можете использовать значение current — текущее значение переменной. Если записать выражение в таком виде (current ?? 0) + 1, то оно сначала получает текущее значение переменной (current). Затем к полученному числу добавляется 1 (+ 1). Если значение не было задано, то используется значение 0 (?? 0) и к нему далее так же прибавляется +1.

Таким образом, например, вы можете создать воронку с рейтинговой системой, в которой за определенные события пользователю будут начисляться очки/баллы/монеты и записываться в глобальную переменную. Далее эту переменную можно будет использовать в других воронках для проверки количества начисленных очков, подробнее в разделе [Как извлечь переменную для использования в воронке ▼].

При успешном присвоении переменной вы увидите сообщение об этом в отладке, а также все переменные текущего объекта.

Как извлечь переменную для использования в воронке
Для использования глобальной переменной в воронке вам нужно сначала присвоить ее значение любой локальной переменной текущей воронки. Для этого:
- Добавьте в воронку ноду «Глобальная переменная».
- Выберите действие «Извлечь переменную».
- Укажите тип агента, которому была присвоена глобальная переменная.
- Выберите саму переменную.
- Установите чекбокс «Сохранить результат в...».

- Выберите тип агента. Выбранный агент должен присутствовать в текущем событии.
- Пропишите имя локальной переменной.
- Нажмите «Применить».

При таких настройках в текущей воронке у указанного агента появится локальная переменная. Вы можете проверять её в условиях на переходах, использовать в тексте сообщений, использовать в других выражениях и так далее.
Таким же образом использовать глобальную переменную вы сможете и в других воронках.
Вам также могут быть полезны статьи:
авторизуйтесь