Fórmulas

Las fórmulas son el lenguaje de cálculo integrado de GetMyBot. Con ellas puedes calcular el importe de un descuento, construir una cadena de texto, evaluar una condición, transformar una lista o una fecha — directamente en el texto de un mensaje, en la acción «Cálculo» y en las condiciones de la tabla de decisiones. La sintaxis es similar a las fórmulas de hojas de cálculo y admite nombres de funciones en ruso.

Dónde funcionan las fórmulas

  • En el texto — la construcción {{= expresión}} evalúa la expresión e inserta el resultado. Por ejemplo, {{= ROUND(param.total * 0.9) }}.
  • Acción «Cálculo» (compute) — calcula la expresión y guarda el resultado en ctx (campo «Guardar en ctx») y/o en un parámetro del suscriptor (campo «Guardar en parámetro»).
  • Tabla de decisiones — en la acción «Cálculo», en lugar de una única expresión, puedes definir una lista de reglas «cuando → entonces»: se devuelve el valor de la primera regla cuya condición sea verdadera; de lo contrario, el valor por defecto.

Sintaxis

  • Operadores: aritmética + - * / %, comparaciones == != < > <= >=, lógica && || !, paréntesis ( ).
  • Literales: números (42, 3.14), cadenas entre comillas ("hola"), booleanos (true, false).
  • Referencias a datos: dentro de la expresión puedes acceder a parámetros y valores del contexto por nombre — param.total, ctx.items, recipient.email.
  • Llamada a función: NOMBRE(argumento1, argumento2). Los nombres no distinguen mayúsculas de minúsculas y admiten alias en ruso.

Funciones

Los nombres se dan en la forma canónica (inglesa); entre paréntesis el alias en ruso, si existe. El uso de mayúsculas y minúsculas es indiferente.

Matemáticas

SUM, AVERAGE, MAX, MIN, MOD, POW, SQRT, PI, ROUND, CEIL, FLOOR, TRUNC, ABS, RANDBETWEEN.

Texto

LEN, LEFT, RIGHT, MID, LOWER, UPPER, UPPERFIRST, REPEAT, CONCAT, SUBSTITUTE, FIND, SEARCH, FIELD, TRIM, LTRIM, RTRIM, PADLEFT, PADRIGHT, SPLIT, JOIN, STARTSWITH, ENDSWITH, CONTAINS, NL.

Lógica

IF, AND, OR, NOT, EMPTY, ISNUMBER, COALESCE.

Listas

SORT, RSORT, UNIQUE, FILTER, FOREACH, REDUCE, INDEX, SLICE, COUNTA, COUNTUNIQUE, ARRAYADD, ARRAYREMOVE, ARRAYREPLACE, ARRAYFIND.

Fecha y hora

TODAY, NOW, DATEADD, DATESUB, DATEDIF, DATEFORMAT, DATEVALUE, WEEKDAY.

JSON

TOJSON, FROMJSON, JSONPATH, JP, JSONOBJECT, JSONARRAY, KEYS, VALUES.

Criptografía y codificación

HASH, TOBASE64, FROMBASE64, FROMJWT, FROMJWK.

Parámetros

PARAMID, PARAMREPLACE, PARAMREMOVE.

Ejemplos

  • Descuento del 10% sobre el importe: {{= ROUND(param.total * 0.9) }}.
  • Condición: {{= IF(param.total > 1000, "mayorista", "minorista") }}.
  • Construcción de cadena: {{= CONCAT("Pedido №", ctx.order_id) }}.
  • Tamaño de lista: {{= COUNTA(ctx.items) }}.

Test de fórmula

En el editor de la acción «Cálculo» hay un botón de verificación: introduces la expresión y los datos de ejemplo, y la plataforma devuelve el resultado resaltando los errores de sintaxis — sin salir del constructor. Muy útil para depurar fórmulas largas antes de guardar la reacción.

Qué sigue