Операторы (Operators)
В данном разделе описаны настройки блоков сценария из раздела General:

Aggregation — Агрегация данных
Тип: Блок без состояния
Назначение: Накопление и расчет статистики по параметрам событий с возможностью сохранения в профиль
Как работает: При каждом событии система автоматически рассчитывает статистические показатели:
_min— минимальное значение_max— максимальное значение_sum— сумма всех значений_count— количество событий
Настройка:

1. Aggregation name
Базовое имя для группы параметров агрегации.
Пример: payments
Система автоматически создаст параметры:
payments_sumpayments_countpayments_maxpayments_min
💡 Совет: Используйте понятные имена, отражающие суть данных: transactions, orders, purchases.
2. Aggregation context parameter
Имя параметра из контекста события, который нужно агрегировать.
Требования:
- Параметр должен быть числовым
- Должен присутствовать в контексте входящего события
Пример: amount_rub, quantity, price
3. Dynamic profile (опционально)
Выберите динамический профиль, если хотите сохранять результаты агрегации между сессиями.
Преимущества сохранения в профиль:
- Данные доступны во всех сценариях
- Сохраняются между визитами клиента
- Можно использовать для сегментации в кампаниях
Как использовать:
- Выберите профиль из списка (например,
Client_payments_agg) - Убедитесь, что в профиле созданы поля с именами агрегированных параметров:
payments_sumpayments_countpayments_maxpayments_min
⚠️ Важно: Поля в профиле должны точно совпадать с именами, которые генерирует агрегация (с постфиксами _sum, _count, _max, _min).
4. Profile key (опционально)
Параметр для идентификации записи в профиле, если он отличается от ID сценария.
Формат: {{parameter_name}}
Примеры использования:
{{client_id}}— если в сценарии используется другой идентификатор{{phone}}— для поиска по номеру телефона{{email}}— для поиска по email
Пример полной настройки:
Aggregation name: payments Context parameter: amount_rub Dynamic profile: Client_payments_agg Profile key: {{client_id}}
Результат:
В контексте сценария:
{
"payments_min": 1000,
"payments_max": 15000,
"payments_sum": 50000,
"payments_count": 7
}В динамическом профиле (сохраняется постоянно):
{
"client_id": "12345",
"payments_min": 1000,
"payments_max": 15000,
"payments_sum": 50000,
"payments_count": 7
} Применение:
Без сохранения в профиль:
- Временные расчеты в рамках одной сессии
- Проверка условий "за последние N событий"
- Одноразовые триггеры
С сохранением в профиль:
- Накопление lifetime статистики клиента
- Сегментация по поведению (например, "сумма покупок > 100000")
- Персонализация на основе истории
- Аналитика клиентской базы
⚠️ Важно:
- Параметр для агрегации должен быть числовым типом
- При использовании профиля убедитесь, что все поля созданы заранее
💡 Совет: Если агрегация используется для принятия решений в сценарии И для долгосрочной аналитики, укажите профиль — данные будут доступны в обоих местах.
Expressions — Вычисления
Тип: Блок без состояния
Назначение: Выполнение математических операций и работа со строками
Возможности:
- Математические выражения с параметрами контекста
- Работа со строками с применением функций шаблонизации
- Создание множества вычисляемых параметров
- Выбор типа результата (String, Number и т.д.)
Настройка:
- Нажмите + Expression для добавления нового вычисления
- Выберите тип результата (String, Number и др.)
- Введите выражение
- Укажите имя параметра для сохранения результата
- Добавьте дополнительные выражения при необходимости
Важные особенности:
⚠️ Математические операции:
Параметры контекста указываются БЕЗ фигурных скобок {{ }}
⚠️ Работа со строками:
Функции шаблонизации используются С фигурными скобками {{ }}
⚠️ Порядок выполнения:
Все выражения выполняются последовательно сверху вниз. Результаты предыдущих вычислений доступны в последующих.
Примеры:

💡 Совет: Используйте понятные имена параметров, чтобы не запутаться в сложных вычислениях.
Add to sliding window — Добавление в временное окно
Тип: Блок без состояния (stateless)
Назначение: Сохранение данных во временное хранилище для последующего анализа
Перед использованием блоков Add/Get from sliding window необходимо создать само окно на странице Sliding Windows.
Как работает
Блок берет данные из контекста текущего события и сохраняет их в указанное временное окно. Данные хранятся в течение TTL окна, после чего автоматически удаляются.
Настройка блока

Select sliding window
- Выберите из выпадающего списка ранее созданное временное окно
- Пример:
Purchase
Profile key (optional)
- Параметр контекста для идентификации записи
- Формат:
{{parameter_name}} - По умолчанию используется ID участника сценария
- Примеры использования:
{{client_id}}— если используется другой идентификатор{{phone}}— для группировки по номеру телефона{{user_id}}— для пользовательского ID
Секция Key-Value (поля для сохранения)
Здесь настраиваются данные, которые будут сохранены в окне:
- Key — имя поля (должно совпадать с Window keys, заданными при создании окна)
- Value — значение для сохранения (поддерживается шаблонизация
{{ }})
Пример настройки:
В этом примере:
- Данные сохраняются в окно
Purchase - Идентификация по параметру
client_idиз контекста - В поле
Purchaseзаписывается значение параметраamount
Когда использовать
- Накопление истории транзакций клиента
- Сбор данных о действиях за период
- Подготовка данных для анализа частоты событий
- Временное хранение для последующих вычислений
⚠️ Важно:
- Блок НЕ хранит состояние участника — он просто записывает данные и отпускает поток дальше
- Максимальный TTL - 30 дней
- Убедитесь, что имена полей в блоке совпадают с Window keys в настройках окна
- Данные автоматически удаляются после истечения TTL
💡 Применение: Хранение истории транзакций, подсчет частоты действий, анализ поведения за период.
Get from sliding window — Получение из временного окна
Тип: Блок без состояния (stateless)
Назначение: Получение и агрегация данных из временного окна для анализа и принятия решений
Как работает
Блок извлекает данные из временного окна за указанный период и автоматически рассчитывает агрегированные показатели:
_sum— сумма всех значений_count— количество записей_min— минимальное значение_max— максимальное значение
Результаты добавляются в контекст сценария и могут использоваться в последующих блоках для проверки условий, персонализации или других действий.
Настройка блока

Select sliding window
- Выберите временное окно, из которого нужно получить данные
- Пример:
Purchase
3 day(s) (временной интервал)
- Отображается период, за который будут извлечены данные
- Соответствует настройке TTL окна
- Автоматически подставляется при выборе окна
- Пример:
3 day(s)= данные за последние 3 дня
Profile key (optional)
- Параметр для идентификации записей
- Формат:
{{parameter_name}} - Должен совпадать с Profile key, использованным в Add to sliding window
- Если не указан, используется ID участника сценария
Select window keys to use
- Выберите поля, для которых нужно рассчитать агрегацию
- Поля отображаются на синих кнопках
- Пример: кнопка
× Purchaseозначает, что выбрано поле Purchase - Для удаления поля нажмите × на кнопке
- Можно выбрать несколько полей одновременно
Prefix (ex. from_window)
- Префикс для имен параметров результата
- Используется для формирования имен агрегированных параметров
- Пример: при префиксе
3d_будут созданы параметры:3d_Purchase_sum3d_Purchase_count3d_Purchase_max3d_Purchase_min
Context parameters will be created:
- Система автоматически показывает список параметров, которые будут добавлены в контекст
- Отображаются на синих кнопках под полем Prefix
- Пример отображения:
3d__Purchase_sum3d__Purchase_count3d__Purchase_max3d__Purchase_min
Select window keys to use (поле поиска)
- Дополнительное поле для проверки содержимого временного окна по введенному идентификатору
- Формат: "Enter any unique ID to search in sliding window"
- Используется для фильтрации данных по конкретному идентификатору
A/B split — A/B тестирование
Тип: Блок с состоянием
Назначение: Случайное распределение участников на группы
Использование:
- Укажите процентное соотношение для каждой группы
- Соедините выходы с разными ветками сценария
- Анализируйте эффективность каждого варианта
Настройка блока:

На скриншоте примера разделения потока на 3 ветки: 30%, 30% и 40%
Audience / Profile — Проверка принадлежности к аудитории
Тип: Блок с состоянием
Назначение: Получение данных клиента из динамического профиля или и проверка его наличия
Как работает блок
- Система ищет участника в указанном динамическом профиле по ключу
- Если найден:
- Все параметры профиля добавляются в контекст сценария
- Участник переходит по синему выходу (верхний)
- Данные профиля становятся доступны для использования в последующих блоках
- Если не найден:
- Участник переходит по серому выходу (нижний)
- Контекст не обогащается данными профиля
Визуальное представление на канвасе

Элементы блока на канвасе:
- Иконка: 👥 (группа людей)
- Название: настраиваемое (например, "Оферы клиента")
- Кнопка: Configure — открывает настройки
- Два выхода:
- Верхний (синий) — данные найдены
- Нижний (серый) — данные не найдены
Настройка блока
При нажатии на кнопку Configure открывается окно:

Заголовок: "Audience checkup configuration"
Параметр 1: The client will be verified for selected audience membership
Выпадающий список с выбором профиля или аудитории:
Доступные варианты:
- Динамические профили (помечены как "dynamic profile")
Параметр 2: Profile key (optional)
Поле для указания ключа поиска из контекста события:
{{client_id}}
Как работает Profile key:
- По умолчанию используется ID участника сценария
- Если нужен альтернативный идентификатор, укажите его в фигурных скобках
- Примеры:
{{client_id}}— поиск по ID клиента из контекста{{email}}— поиск по email{{phone}}— поиск по номеру телефона{{user_id}}— поиск по пользовательскому ID
⚠️ Важно: Ключ должен присутствовать в контексте события и совпадать с одним из полей профиля (обычно это уникальный идентификатор).
Кнопки управления:
- Close — закрыть без сохранения
- Save and continue — сохранить настройки и закрыть окно
Console log action — Вывод в консоль
Тип: Блок без состояния
Назначение: Отладка и логирование
Использование: Выводит указанное сообщение в консоль сервера. Полезно для отладки сценариев.
Context table — Таблица условий
Тип: Блок с состоянием
Назначение: Маршрутизация участников по множественным условиям с проверкой точного совпадения параметров
Как работает:
Context Table проверяет значения параметров контекста по строкам таблицы и направляет участника по соответствующей ветке при полном совпадении всех указанных параметров.
Принцип работы:
- Система последовательно проверяет строки таблицы сверху вниз
- Для каждой строки сравниваются все столбцы (параметры)
- При полном совпадении всех значений участник переходит по соответствующему выходу
- Если ни одна строка не совпала — участник идет по выходу Default
⚠️ Важно: Проверяется точное совпадение значений. Интервалы, диапазоны и неточные совпадения не поддерживаются.
Настройка блока:
- Создание столбцов (параметров для проверки)
Столбец = параметр из контекста события, который будет проверяться.
Как добавить столбец:
- Нажмите кнопку "+ Add column" (или аналогичную кнопку в интерфейсе)
- Введите имя параметра контекста (например,
region,product,amount) - Столбец появится в заголовке таблицы
Как удалить столбец:
- Нажмите на иконку корзины рядом с названием столбца
- Столбец и все его значения удалятся из таблицы
- Создание строк (условий)
Строка = набор значений параметров, при полном совпадении которых участник пойдет по соответствующему выходу.
Как добавить строку:
- Нажмите кнопку "+ Add row" (или аналогичную кнопку в интерфейсе)
- Заполните значения для каждого столбца
- Строка добавится в таблицу с соответствующим выходом
Как удалить строку:
- Нажмите на иконку корзины рядом со строкой
- Строка и соответствующий выход удалятся
- Default — Выход по умолчанию
- Default — специальная строка, которая срабатывает, если ни одно из условий в таблице не выполнено.
Характеристики:
- Всегда находится в конце таблицы
- Не требует заполнения значений столбцов
- Срабатывает как "else" в программировании
- Обязательно должен быть подключен к следующему блоку
💡 Применение: Используйте Default для обработки неожиданных или неподходящих значений параметров.
Пример настройки:

Decision — Сложное условие
Тип: Блок с состоянием
Назначение: Проверка составных условий с логическими операторами и операторами сравнения
Как работает блок
Decision action позволяет создавать сложные условия с использованием:
- Операторов сравнения (>, <, >=, <=, ==, !=)
- Логических операторов (AND/OR)
- Группировки условий с вложенной логикой
- Проверки строк, чисел, массивов и пустых значений
Принцип работы
- Система вычисляет условие, созданное в конфигураторе
- Если условие выполнено (true) — участник идет по зеленому выходу (верхний)
- Если условие не выполнено (false) — участник идет по серому выходу (нижний)
В отличие от Context Table, Decision action имеет только два выхода: true или false.

Основные элементы управления
- Логические операторы
[and] [or] — переключатели для выбора типа объединения условий:
- and (синий, активный) — ВСЕ условия должны выполниться (логическое И)
- or (белый, неактивный) — ХОТЯ БЫ ОДНО условие должно выполниться (логическое ИЛИ)
Пример:

- Кнопка [+ ( group )]
Создает группу условий для построения вложенной логики.
Применение:
- Объединение нескольких условий с отдельным логическим оператором
- Создание сложных комбинаций AND/OR
- Построение многоуровневой логики
Пример использования группы:

⚠️ Важное правило: Нельзя использовать одиночные условия вместе с группами на одном уровне. Если у вас есть несколько условий, они должны быть обернуты в группу.
- Кнопка [+ key]
Добавляет новое условие (строку проверки параметра).
Структура условия:
[параметр] [оператор ▼] [значение] [⊗]
- Параметр (левое поле) — имя параметра из контекста БЕЗ обертки
{{}} - Оператор (выпадающий список) — тип сравнения
- Значение (правое поле) — значение для сравнения, С оберткой
{{}}если это параметр контекста - [⊗] — кнопка удаления условия
Правила заполнения полей
Левое поле (параметр контекста)
⚠️ Критически важно: Указывайте параметр БЕЗ фигурных скобок {{ }}
Правое поле (значение для сравнения)
Правое поле может содержать:
- Статическое значение (без скобок):
credit 10000 Moscow true
- Параметр контекста (С фигурными скобками):
{{min_amount}} {{user_region}} {{limit}}
- Шаблонные выражения (с функциями):
{{parseDt 'now'}} {{multiply amount 2}}
Примеры:
Статическое: amount >= 10000 Из контекста: amount >= {{credit_limit}} С функцией: created_at >= {{parseDt 'now' '-7 days'}}
Операторы сравнения
При клике на выпадающий список в середине открывается полный набор операторов:
Greater — больше (>)
Greater or equal — больше или равно (>=)
Equal — равно (==)
Not equal — не равно (!=)
Less — меньше (<)
Less or equal — меньше или равно (<=)
In list — содержится в списке
Not in list — не содержится в списке
RegExp — соответствует регулярному выражению
Not RegExp — не соответствует регулярному выражению
Is not empty — не пустое значение
Is empty — пустое значение
Array includes — массив содержит элемент
Array not includes — массив не содержит элемент
Include — строка содержит подстроку
Not include — строка не содержит подстроку