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.


Configuración del nodo telegram​

Ventana "Node Information" del nodo telegram con los campos "bot_token", "chat_id", "tg_text", "parse_mode", "reply_markup" y el botón "Submit"

En los encabezados a continuación, se encuentran las etiquetas de los campos en el formulario del nodo, y entre paréntesis están las claves bajo las cuales se guardan los valores en el esquema JSON.

1. Bot Token (botToken)​

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

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

Ejemplo:

{{flow.telegramToken}}

2. Chat ID (chatId)​

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

Soporta Mustache. Si se deja el campo vacío, el valor se toma automáticamente de msg.payload.message.chat.id — esto es conveniente al responder a un mensaje entrante del usuario.

Ejemplo:

{{payload.message.chat.id}}

3. Message text (text)​

El texto del mensaje que se enviará.

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

Ejemplo:

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

4. Text format (parseMode)​

El modo de formato del texto del mensaje. Opciones disponibles:

  • none (por defecto) — 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. Buttons (replyMarkup)​

Constructor de botones en línea debajo del mensaje. Los botones se organizan en filas (Row 1, Row 2, …): cada fila contiene uno o varios botones. Se añade un botón a la fila con el botón + Button, y una nueva fila con el botón + Row.

Para cada botón se definen:

  • Text — etiqueta del botón que ve el usuario.
  • callback_data — 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:

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

6. Callback Query ID (callbackQueryId)​

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

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

Ejemplo:

{{payload.callback_query.id}}

7. Show as alert (showAlert)​

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

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

8. Notification text (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 Show as alert está activado.
Soporta Mustache.

Ejemplo:

Su 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]

Configuración del nodo:

  • Bot Token: {{flow.telegramToken}}
  • Chat ID: {{flow.adminChatId}}
  • Message text: Nuevo pedido nº{{payload.order.id}} de {{payload.order.userName}}. Total: {{payload.order.totalPrice}} rub.
  • Text format: 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​

Configuración del nodo:

  • Chat ID: {{payload.message.chat.id}}
  • Message text: ¿Confirmar la realización del pedido?
  • Buttons:
    Row 1: [Sí, confirmar | confirm] [Cancelar | cancel]

Resultado:
El usuario recibirá un mensaje con dos botones. Pulsar un 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]

Configuración del nodo:

  • Callback Query ID: (dejar vacío — se toma de msg.payload.callback_query.id)
  • Show as alert: activado
  • Notification text: ¡Pedido confirmado!

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