Sustituciones y fórmulas

Las sustituciones son variables con la forma {{...}} que se insertan en los textos de los mensajes, los campos de las acciones y las plantillas de los botones cuando se activa una reacción. Las sustituciones no reconocidas se conservan tal cual. Además de las variables existen fórmulas para cálculos. El botón «Sustituciones» en el editor de mensajes facilita la inserción de variables.

Datos del remitente

  • {{first_name}}, {{last_name}} — nombre y apellido.
  • {{username}}@username del usuario.
  • {{user_id}} — ID numérico de Telegram.

Datos del evento y del chat

  • {{text}} (también {{received_message}}) — texto del mensaje entrante.
  • {{message_id}} (también {{received_message_id}}) — ID del mensaje entrante.
  • {{chat_id}}, {{chat_title}} (también {{chat_name}}) — chat donde ocurrió el evento.
  • {{topic_id}}, {{topic_url}} — tema (para foros).

Fecha y hora

  • {{date}} — fecha (YYYY-MM-DD), {{time}} — hora (HH:MM), {{datetime}} — fecha y hora.
  • Formato: {{date:DD.MM.YYYY HH:mm}} — tokens YYYY, YY, MM, DD, HH, mm, ss.

Parámetros del usuario

  • {{param.clave}} (también {{params.clave}} o {{recipient.clave}}) — valor de un parámetro del suscriptor. Los parámetros se llenan con las acciones «Modificar parámetros», «Guardar mensaje» y las respuestas en el diálogo.

Contexto de ejecución (ctx)

  • {{ctx.clave}} (también {{context.clave}}) — valores temporales de la ejecución actual: datos del webhook entrante, resultados de acciones (solicitud web, consulta a fuente, IA), datos restaurados del botón (Carry), elementos de bucle.
  • En el bucle de lista, el elemento está disponible con su alias, por ejemplo {{item.name}}.

Fórmulas

La construcción {{= expresión}} evalúa la expresión directamente en el texto. El mismo motor funciona en la acción «Cálculo» y en las condiciones de la tabla de decisiones. En las expresiones puedes referenciar parámetros y valores de ctx por nombre, usar aritmética, comparaciones, lógica y docenas de funciones con alias en ruso (ROUND, IF, CONCAT, etc.).

Ejemplo: {{= ROUND(param.total * 0.9) }} — descuento del 10% sobre el importe del parámetro.

Sintaxis completa y lista de funciones en la sección Fórmulas.

HTML en las sustituciones

Los mensajes se envían con marcado HTML. Para que un valor sustituido no rompa el diseño (por ejemplo, cuando un nombre de usuario contiene <), los valores sustituidos se escapan de forma predeterminada: los caracteres HTML se convierten en texto seguro. Las etiquetas que escribes directamente en el texto de la reacción (<b>, <a>, …) se dejan intactas.

Si un valor ya contiene marcado listo (por ejemplo, un anuncio guardado en un parámetro con <b>...</b>) y quieres insertarlo tal cual, antepón & a la sustitución:

  • {{& key}} — inserción en bruto para las sustituciones {{...}}.
  • {&user:key}, {&recipient:key}, {&global:key} — inserción en bruto para las sustituciones de namespace.

El prefijo & desactiva el escapado solo para esa sustitución concreta — tú respondes por la confianza en el origen del valor. Es mejor dejar escapados los tokens controlados por el suscriptor ({{first_name}}, …).

Al importar bots desde otros constructores, las sustituciones de namespace {user:…}/{recipient:…}/{global:…} se migran automáticamente a la forma en bruto {&…} — suelen contener valores con marcado listo, tal como funcionaba en el constructor de origen.

Importante sobre el formato

Las sustituciones {{...}} funcionan en textos, pies de foto, cuerpos de solicitudes y plantillas de botones. Da a los parámetros y claves de ctx nombres cortos en caracteres latinos (email, total, order_id) — así son más cómodos de insertar.

Qué sigue