Saltar al contenido principal

Nodo telegram

El nodo telegram proporciona integración con la API de Telegram Bot. Con él, el flujo puede enviar mensajes a chats y canales, mostrar botones en línea, manejar pulsaciones de botones y mostrar notificaciones emergentes al usuario.


Configuraciones del nodo telegram

Edit

1. botToken

El token de tu bot de Telegram, obtenido de @BotFather.

Soporta Mustache: el token se puede almacenar en una variable de flujo y sustituirse a través de {{variable}}.

Ejemplo:

{{flow.telegramToken}}

2. chat_id

El identificador del chat o canal al que se enviará el mensaje.

Soporta Mustache. Si dejas el campo vacío, el backend tomará automáticamente el valor de msg.payload.message.chat.id — esto es útil al responder a un mensaje entrante del usuario.

Ejemplo:

{{payload.message.chat.id}}

3. text

El texto del mensaje que se enviará.

Soporta Mustache: se pueden insertar dinámicamente datos de msg.

Ejemplo:

¡Tu pedido nº{{payload.orderId}} ha sido realizado con éxito!

4. parseMode

Modo de formato del texto del mensaje. Opciones disponibles:

  • none — sin formato, el texto se envía tal cual.
  • Markdown — Markdown básico de Telegram (v1).
  • MarkdownV2 — versión extendida de Markdown con soporte para spoilers y otros elementos.
  • HTML — marcado HTML (<b>, <i>, <code>, <a> y otros).

5. replyMarkup

Constructor de botones en línea debajo del mensaje. Los botones se organizan en filas: cada fila contiene uno o varios botones.

Para cada botón se definen:

  • Texto — la etiqueta del botón que ve el usuario.
  • callback_data — el valor que llegará al webhook en el campo msg.payload.callback_query.data al pulsar el botón. Con este valor se puede determinar qué botón fue pulsado y dirigir el flujo a la rama correspondiente a través de un nodo Switch.

Ejemplo de estructura:

Fila 1: [Confirmar | callback_data: confirm]  [Cancelar | callback_data: cancel]
Fila 2: [Más detalles | callback_data: details]

6. callbackQueryId

Identificador de la consulta de callback — necesario para responder a la pulsación del botón en línea.

Soporta Mustache. Si dejas el campo vacío, el valor se tomará automáticamente de msg.payload.callback_query.id.

Ejemplo:

{{payload.callback_query.id}}

7. showAlert

Casilla de verificación. Define el tipo de notificación al responder a la pulsación del botón:

  • Desactivado — se muestra un breve popup de toast (desaparece automáticamente).
  • Activado — se muestra una ventana modal con una notificación que el usuario debe cerrar manualmente.

8. notificationText

Texto de la notificación que aparecerá al responder a la pulsación del botón en línea.

El campo se muestra en el formulario solo cuando showAlert está activado.
Soporta Mustache.

Ejemplo:

Tu elección ha sido aceptada: {{payload.callback_query.data}}

Ejemplos de uso

Ejemplo 1: Envío de un mensaje sobre un nuevo pedido

Flujo:

[events: order_created] ---> [telegram]

Configuraciones del nodo:

  • botToken: {{flow.telegramToken}}
  • chat_id: {{flow.adminChatId}}
  • text: Nuevo pedido nº{{payload.order.id}} de {{payload.order.userName}}. Total: {{payload.order.totalPrice}} rub.
  • parseMode: none

Resultado:
Al crear un nuevo pedido, el bot enviará una notificación al chat del administrador.


Ejemplo 2: Mensaje con botones de confirmación

Configuraciones del nodo:

  • chatId: {{payload.message.chat.id}}
  • text: ¿Confirmar la realización del pedido?
  • replyMarkup:
    Fila 1: [Sí, confirmar | confirm]  [Cancelar | cancel]

Resultado:
El usuario recibirá un mensaje con dos botones. Pulsar el botón enviará callback_data al webhook, donde se puede procesar con un nodo Switch.


Ejemplo 3: Respuesta a la pulsación de un botón con notificación

Flujo:

[http in] ---> [switch: callback_data == "confirm"] ---> [telegram: respuesta con notificación]

Configuraciones del nodo:

  • callbackQueryId: (dejar vacío — se toma de msg.payload.callback_query.id)
  • showAlert: activado
  • notificationText: ¡Pedido confirmado!

Resultado:
Se mostrará un popup emergente al usuario con el texto "¡Pedido confirmado!", que debe cerrar manualmente.