Роботы: переменные и функции | Napulse

Роботы: переменные и функции

Переменные — это память робота о клиенте: имя, город, выбранный тариф, телефон, сумма чека, счётчик напоминаний, метки источника. Их подставляют в тексты («%username%, спасибо, что были на вебинаре»), проверяют в условиях и меняют действиями. Файл нужен тому, кто пишет тексты с подстановками и строит логику на данных клиента.

Где найти: конструктор → окно любой ноды → панель «Подсказки» справа; действия «Переменная» и «Формула» — в ноде «Действие». Кто видит: право «Техблок/Роботы: смотреть свои / все»; менять — «Техблок/Роботы: редактировать свои / все».

Панель «Подсказки»

Подсказки
Рис. 1. Окно шага с панелью «Подсказки» справа

Справа в окне любой ноды — список всех переменных, доступных роботу, по группам: «Глобальные · Проект», «Пользователь · Робот», «Глобальные · Канал», «Система». Рядом с системными — пояснение. «Поиск переменной» фильтрует список, клик по переменной копирует её в буфер — вставьте в текст.

Стандартные переменные

Их робот заполняет сам из профиля клиента и данных перехода.

Переменная Что содержит
%username% Имя клиента. Если имени в профиле нет — логин
%fullname% Имя и фамилия
%userid% Идентификатор клиента в VK или Telegram
%city%, %country% Город и страна из профиля
%sex% Пол: 1 — женский, 2 — мужской
%relation% Семейное положение (VK)
%phone% Телефон из профиля
%group%, %unsubscribe% Ссылка на сообщество и на отписку (VK)
%ref% Последняя реферальная метка
%utm_source%, %utm_medium%, %utm_campaign%, %utm_content%, %utm_term% UTM-метки перехода
%receipt_matched%, %receipt_amount%, %receipt_currency%, %receipt_status% Результат последней «Проверки чека»

Также понимаются привычные написания {name}, {{first_name}} (это имя) и {{user_id}}.

Как подставить переменную в текст

  1. В тексте сообщения напишите переменную в одном из видов: %city%, {{city}} или {city}. Регистр не важен.
  2. Сохраните ноду и отправьте себе пробу самолётиком.

Готово: вместо переменной клиент увидит значение — «Ваш город — Казань».

Если значения нет, в тексте клиенту переменная просто исчезает, а лишние запятые и пробелы убираются: «Привет, {имя}!» превратится в «Привет!». В ссылках, теле вебхука и других служебных строках неизвестная переменная остаётся как есть.

Функции в тексте

Конструкция Пример Результат
[gender]…|…[/gender] Вы [gender]готов|готова[/gender] начать? Первый вариант — для мужчин, второй — для женщин. Пол неизвестен — первый
[rand]мин:макс[/rand] Ваш счастливый номер — [rand]1:22[/rand] Случайное целое из диапазона включительно
[rand]a|b|c[/rand] [rand]Отлично!|Прекрасно!|Супер![/rand] Случайный вариант из списка
[date]формат[/date] Сегодня [date]dd.MM.yyyy[/date] Текущая дата в формате (dd — день, MM — месяц, yyyy — год, HH:mm — время)
[city]есть|нет[/city] [city]Ждём вас из %city%|Ждём вас[/city] Первый вариант, если город заполнен, иначе второй
[country]…|…[/country], [relation]…|…[/relation] — То же для страны и семейного положения

Типы и уровни переменных

У переменной два признака.

Тип — кому принадлежит значение:

  • «Пользовательская» — у каждого клиента своё (его ответ, выбранный тариф);
  • «Глобальная» — одно значение на всех (общий счётчик заявок, цена курса).

Уровень — где переменная видна:

Комбинация Где видна
«Пользовательская · Робот» Только в этом роботе (по умолчанию)
«Пользовательская · Канал» Во всех роботах этого аккаунта
«Глобальная · Робот» Одно значение внутри робота
«Глобальная · Канал» Одно значение во всём аккаунте
«Глобальная · Проект» Одно значение во всём проекте (например, course_price)

Переменные с одинаковым именем на разных уровнях — разные. Условие читает переменную с того уровня, который в нём выбран: «Переменная равна» уровня «Робот» не увидит одноимённую переменную уровня «Проект». В тексте при совпадении имён побеждает более «близкая»: переменная робота важнее переменной пользователя, та — глобальной, а глобальная — данных профиля.

Как создать переменную

  1. В действии «Установить переменную» (или в условии, экстракторе) выберите тип и уровень.
  2. Нажмите «Инициализировать переменную».
  3. Введите «Имя переменной...» (латиницей, например tariff), выберите тип: «Строка», «Число», «Мапа» (JSON-объект {"ключ": "значение"}), «Массив строк» («Москва, Питер» или ["Москва", "Питер"]), «Массив чисел» («1, 2, 3»).
  4. При желании задайте начальное значение и нажмите «Создать».

Готово: переменная появится в списках выбора и в «Подсказках».

Калькулятор: как менять переменную

Значение меняют действия «Переменная» (подробно поля — в Действиях).

Операция Что делает Если значение пустое или не число
«Установить» Записывает значение —
«Прибавить» / «Вычесть» ± число Считается 0
«Умножить» × число Считается 1
«Разделить» ÷ число Деление на 0 даёт 0
«Добавить в конец» / «Добавить в начало» Дописывает текст Считается пустой строкой
«Случайное число» Целое из диапазона «мин,макс» (через запятую), по умолчанию 1,100 —
«Удалить переменную» Убирает переменную Ничего не происходит

Что понимает «Установить»: true / false / null — логические значения; {...} и [...] — JSON-объект и список; 42, 3.14 — число; значение в скобках (...) — формула; всё остальное — текст как есть.

Формулы

Действие «Формула» вычисляет выражение и записывает результат в переменную. Выражения пишутся в скобках: сначала операция, потом аргументы. Все переменные доступны через vars: с уровнем — (:robot/имя vars), (:channel/имя vars), (:global/имя vars), стандартные — (:universal/username vars); без уровня — (get vars "имя").

Формула
Рис. 2. Редактор формулы, «Вставить переменную» и «Примеры формул»

Под полем — списки «Вставить переменную» по группам и «Примеры формул». Синтаксическую ошибку редактор подсвечивает: «Синтаксическая ошибка (позиция N) — проверьте скобки и кавычки».

Примеры:

Задача Формула
Прибавить 5 к переменной робота (+ (:robot/x vars) 5)
Цена со скидкой 10 % (Math/round (* (:global/course_price vars) 0.9))
Условие (if (> (:robot/age vars) 18) "adult" "minor")
Склеить имя и фамилию (str (:channel/first_name vars) " " (:channel/last_name vars))
Значение по умолчанию (or (:global/discount vars) 0)
Размер платежа рассрочки (Math/round (/ 24900 3)) → 8300

Формулы не превращают текст в число сами: если в переменной «12» строкой, используйте операции калькулятора («Прибавить», «Умножить») — они приводят значения к числу. Ошибка в формуле не останавливает робота, просто не даёт результата.

Практический сценарий: считаем напоминания и не надоедаем

Задача: напоминать о курсе не больше трёх раз.

  1. В ноде перед напоминанием добавьте «Прибавить» → «Пользовательская · Робот» → новая переменная reminders (число, 0) → значение 1.
  2. Поставьте «Условие» «Переменная больше» reminders 3.
  3. «Если выполнено» → «Передать менеджеру», «Иначе» → «Напоминание».
  4. В тексте напоминания: «%username%, это уже [rand]второе|очередное[/rand] напоминание: места по цене вебинара сохраняем до пятницы».

Готово: после трёх напоминаний клиент уходит к менеджеру, а не получает четвёртое.

На телефоне

Панель «Подсказки» на узком экране скрыта; переменные можно вставить, набрав их вручную (%username%). Формулы удобнее писать на компьютере.

Частые вопросы

Переменная пустая в тексте. Проверьте имя и уровень: возможно, значение записано на уровне «Канал», а читаете «Робот». Посмотрите «Подсказки» — там видны переменные и уровни.

«Переменная больше» не срабатывает. В переменной текст, а не число («5 шт»). Запишите число отдельной переменной.

Случайное число не из диапазона. В «Случайное число» диапазон пишется через запятую: 1,6. В тексте [rand]1:6[/rand] — через двоеточие.

Можно ли использовать переменные в ссылке кнопки или в вебхуке? Да, %userid% и {{user_id}} подставляются и там.

Связанные разделы