Спросить ИИ
Русский RU
Перейти в Watbot

Выражения

Внутри {{ ... }} можно не только вставить значение, но и посчитать, сравнить или выбрать текст по условию:

{{ $возраст >= 18 ? "Добро пожаловать!" : "Доступ с 18 лет" }}
Скидка 10%: {{ $цена * 0.9 }} ₽
{{ upper(first_name) ~ ", здравствуйте!" }}

Из чего состоит выражение

Что Как писать Пример
Переменная контакта $имя $город
Переменная с пробелами в имени var("имя") var("Имя клиента")
Данные контакта имя без $ first_name, phone
Глобальная переменная global("имя") global("Курс (USD)")
Текст в кавычках "..." или '...' "Добрый день"
Число цифры, дробная часть через точку 10, 0.9
Логическое значение true, false
Пустое значение null
Функция имя(аргументы) round($цена, 2)

Внутри кавычек ничего не заменяется: {{ "цена $a" }} выведет цена $a.

Арифметика

Оператор Действие Пример Результат
+ сложение {{ 2 + 3 }} 5
- вычитание {{ 10 - 4 }} 6
* умножение {{ 3 * 4 }} 12
/ деление {{ 10 / 4 }} 2.5
% остаток от деления {{ 10 % 3 }} 1
** степень {{ 2 ** 10 }} 1024

Скобки меняют порядок действий: {{ ($цена + $доставка) * 2 }}.

Дробные числа выводятся без лишних знаков: {{ 0.1 + 0.2 }} даст 0.3. Чтобы округлить, используйте round, для вывода с разделителями — number_format.

Сравнения

Оператор Значение
== равно
!= не равно
>, >= больше, больше или равно
<, <= меньше, меньше или равно

Если с обеих сторон числа — даже записанные текстом, как значения переменных, — сравниваются числа: "10" > 9 верно.

Результат сравнения, выведенный сам по себе, — true или false: {{ $возраст >= 18 }}.

Логика

Оператор Значение
and или && и
or или || или
not или ! не
{{ $возраст >= 18 and $город == "Москва" ? "Приглашаем в офис" : "Работаем онлайн" }}

Условие

условие ? если_да : если_нет — выбирает один из двух вариантов:

{{ $баллы >= 100 ? "Вам доступен подарок" : "До подарка " ~ (100 - $баллы) ~ " баллов" }}

Короткая форма значение ?: запасное выведет значение, если оно не пустое, иначе запасное:

Здравствуйте, {{ first_name ?: "друг" }}!

Запасное значение для пустых данных

значение ?? запасное — если значения нет совсем (у контакта не указан телефон, переменная не заполнена), подставится запасное:

Телефон: {{ phone ?? "не указан" }}

Работа с текстом

Оператор Действие Пример
~ склеить текст {{ first_name ~ " " ~ last_name }}
contains содержит {{ $ответ contains "да" ? "Отлично!" : "Жаль" }}
starts with начинается с {{ phone starts with "+7" ? "Россия" : "Другая страна" }}
ends with заканчивается на {{ email ends with "@gmail.com" }}
in есть в списке {{ $город in ["Москва", "Казань"] ? "Есть доставка" : "Самовывоз" }}
not in нет в списке {{ $тариф not in ["pro", "business"] }}

contains, starts with и ends with различают большие и маленькие буквы. Чтобы не различать, приведите текст к одному регистру: {{ lower($ответ) contains "да" }}.

Функции внутри выражений

Функции можно вкладывать друг в друга и сочетать с операторами:

{{ capitalize(lower(var("Имя клиента"))) }}
{{ round(($цена + $доставка) * 0.9, 2) }}
{{ number_format(global("Курс (USD)") * $сумма, 2) }} ₽

Список функций — в справочнике.

Что нельзя

В выражениях нет циклов, присваиваний и обращения к внутренним данным платформы — только операторы и функции из справочника. Подробнее об ограничениях — в разделе Ошибки и ограничения.