Условие (if/or)
Реакция «Условие» — это мощный инструмент для управления потоком диалога (control flow). Она позволяет создавать ветвления в сценарии, направляя пользователя по разным путям в зависимости от выполнения одного или нескольких правил. Проверка может осуществляться на основе данных из контекста, канала коммуникации или тегов пользователя.
Конфигурация
После добавления блока «Условие» в рабочую область сценария, в панели настроек можно задать правила для ветвления.
Каждое правило состоит из трех частей:
Параметр: Имя переменной из контекста (например,
order_total
илиuser_tags
).Оператор: Логическое действие для проверки (например,
Равен
,Больше
,Включает в себя
).Значение: Ожидаемое значение для сравнения.
Операторы правил
Заполнен / Не заполнен
Проверяет наличие или отсутствие переменной в контексте. Не требует указания значения.
Заполнен
: Правило выполняется, если переменная существует и ее значение неnull
.Не заполнен
: Правило выполняется, если переменная не существует или ее значениеnull
.
Равен / Не равен
Выполняет точное сравнение строковых или числовых значений.
Равен
: Правило выполняется, если значение переменной в контексте в точности совпадает с указанным.Не равен
: Правило выполняется, если значение не совпадает.
Включает в себя / Не включает в себя
Проверяет наличие или отсутствие элемента в массиве (списке).
Включает в себя
: Правило выполняется, если указанное значение присутствует в массиве.Не включает в себя
: Правило выполняется, если значение в массиве отсутствует.
Больше / Меньше
Сравнивает числовые значения.
Больше
: Правило выполняется, если значение переменной строго больше указанного.Меньше
: Правило выполняется, если значение переменной строго меньше указанного.
Важно: Убедитесь, что значение в контексте является числом. Если переменная будет содержать строку (например, "5000"
), сравнение может работать некорректно.
Комплексные условия
Вы можете создавать сложные логические цепочки, добавляя несколько правил в один блок «Условие». Для их объединения используются логические операторы:
И (AND): Условие считается выполненным, только если все правила истинны.
ИЛИ (OR): Условие считается выполненным, если хотя бы одно из правил истинно.
Продвинутые сценарии проверки
Реакция «Условие» работает с контекстом текущего пользователя. Для проверки глобальных переменных (доступных всему проекту) используется связка Сниппет + Условие.
Сниппет получает глобальное значение (из
projectStorage
или настроек проекта).Сниппет записывает это значение в контекст пользователя (
context.set()
).Условие проверяет эту переменную в контексте.
Пример 1: Проверка флага из projectStorage
projectStorage
Представим, что у нас есть флаг maintenance_mode
в projectStorage
, который включает режим обслуживания для всего проекта.
Шаг 1: Сниппет для переноса флага в контекст.
// snippet: getMaintenanceFlag
asynchronously function snippet(core, context, projectStorage) {
// Получаем значение флага. Если его нет, по умолчанию — false.
const maintenance = await projectStorage.get('maintenance_mode') || false;
// Записываем значение в контекст пользователя.
context.set('is_maintenance', maintenance);
}
Шаг 2: Реакция «Условие» для проверки.
После выполнения сниппета, в реакции «Условие» настраиваем правило:
Параметр:
is_maintenance
Оператор:
Равен
Значение:
true
Если правило выполняется, можно направить пользователя на ветку с сообщением: «Внимание! На платформе проводятся технические работы».
Пример 2: Проверка переменной из настроек проекта
Допустим, в настройках проекта у нас задана переменная GLOBAL_DISCOUNT_ENABLED
со значением true
.
Шаг 1: Сниппет для переноса переменной в контекст.
// snippet: getProjectVariable
asynchronously function snippet(core, context) {
// Переменные проекта доступны через метод context.get().
const discountEnabled = context.get('GLOBAL_DISCOUNT_ENABLED');
// Записываем значение в контекст.
context.set('global_discount', discountEnabled);
}
Шаг 2: Реакция «Условие» для проверки.
Параметр:
global_discount
Оператор:
Равен
Значение:
true
Это позволит централизованно включать или отключать логику, связанную с глобальной скидкой, для всех пользователей.
Последнее обновление