Формулы
Формулы — это встроенный язык вычислений GetMyBot. Им можно посчитать сумму скидки, собрать строку, проверить условие, преобразовать список или дату — прямо в тексте сообщения, в действии «Вычисление» и в условиях таблицы решений. Синтаксис близок к формулам электронных таблиц и поддерживает русские названия функций.
Где работают формулы
- В тексте — конструкция
{{= выражение}}вычисляет выражение и подставляет результат. Например,{{= ОКРУГЛ(param.total * 0.9) }}. - Действие «Вычисление» (
compute) — считает выражение и сохраняет результат вctx(поле «Сохранить в ctx») и/или в параметр подписчика (поле «Сохранить в параметр»). - Таблица решений — в действии «Вычисление» вместо одного выражения можно задать список правил «когда → тогда»: возвращается значение первого правила, чьё условие истинно, иначе значение по умолчанию.
Синтаксис
- Операторы: арифметика
+ - * / %, сравнения== != < > <= >=, логика&& || !, скобки( ). - Литералы: числа (
42,3.14), строки в кавычках ("привет"), логические (true,false). - Ссылки на данные: внутри выражения можно обращаться к параметрам и значениям контекста по имени —
param.total,ctx.items,recipient.email. - Вызов функции:
ИМЯ(аргумент1, аргумент2). Имена не зависят от регистра и понимают русские алиасы.
Функции
Имена даны в каноничном (английском) виде; в скобках — русский алиас, если он есть. Регистр не важен.
Математика
SUM (СУММ), AVERAGE (СРЗНАЧ), MAX (МАКС), MIN (МИН), MOD (ОСТАТ), POW (СТЕПЕНЬ), SQRT (КОРЕНЬ), PI (ПИ), ROUND (ОКРУГЛ), CEIL (ОКРВВЕРХ), FLOOR (ОКРВНИЗ), TRUNC (ОТБР), ABS, RANDBETWEEN (СЛУЧМЕЖДУ).
Текст
LEN (ДЛСТР), LEFT (ЛЕВСИМВ), RIGHT (ПРАВСИМВ), MID (ПСТР), LOWER (СТРОЧН), UPPER (ПРОПИСН), UPPERFIRST (ПРОПИСНПЕРВ), REPEAT (ПОВТОР), CONCAT (СЦЕПИТЬ), SUBSTITUTE (ПОДСТАВИТЬ), FIND (НАЙТИ), SEARCH (ПОИСК), FIELD (ПОЛЕ), TRIM, LTRIM, RTRIM, PADLEFT, PADRIGHT, SPLIT, JOIN, STARTSWITH, ENDSWITH, CONTAINS, NL.
Логика
IF (ЕСЛИ), AND (И), OR (ИЛИ), NOT (НЕ), EMPTY, ISNUMBER (ЕЧИСЛО), COALESCE.
Списки
SORT, RSORT, UNIQUE, FILTER, FOREACH, REDUCE, INDEX, SLICE, COUNTA (СЧЁТЗ), COUNTUNIQUE, ARRAYADD, ARRAYREMOVE, ARRAYREPLACE, ARRAYFIND.
Дата и время
TODAY (СЕГОДНЯ), NOW (ТДАТА), DATEADD, DATESUB, DATEDIF (РАЗНДАТ), DATEFORMAT, DATEVALUE, WEEKDAY (ДЕНЬНЕД).
JSON
TOJSON, FROMJSON, JSONPATH, JP, JSONOBJECT, JSONARRAY, KEYS, VALUES.
Криптография и кодирование
HASH (ХЭШ), TOBASE64, FROMBASE64, FROMJWT, FROMJWK.
Параметры
PARAMID, PARAMREPLACE, PARAMREMOVE.
Примеры
- Скидка 10% от суммы:
{{= ОКРУГЛ(param.total * 0.9) }}. - Условие:
{{= ЕСЛИ(param.total > 1000, "опт", "розница") }}. - Сборка строки:
{{= СЦЕПИТЬ("Заказ №", ctx.order_id) }}. - Размер списка:
{{= СЧЁТЗ(ctx.items) }}.
Тест формулы
В редакторе действия «Вычисление» есть кнопка проверки: вы вводите выражение и образцовые данные, а платформа возвращает результат и подсвечивает ошибки синтаксиса — не выходя из конструктора. Это удобно для отладки длинных формул перед сохранением реакции.
Что дальше
- Подстановки и формулы — переменные
{{...}}, контекстctxи параметры. - Действия — действие «Вычисление» и таблицы решений.
- Сообщения и кнопки — формулы в текстах и шаблонах кнопок.
- Коллекции и данные — данные, над которыми считают формулы.