Automatizar Telegram con n8n

Automatizar Telegram con n8n

Si quieres crear un bot inteligente o crear un sistema de notificaciones, en esta entrada te enseño a automatizar Telegram con n8n.

Conectar Telegram y n8n

Anteriormente ya te expliqué cómo instalar n8n para usarlo de forma gratuita e ilimitada, y hoy vamos a ver cómo conectar Telegram para utilizarlo en nuestras automatizaciones. Puesto que es una de las integraciones nativas de n8n, automatizar Telegram con n8n es muy fácil de hacer:

  1. Pulsa en «Create Workflow» para crear un nuevo flujo de trabajo y pulsa en el icono «+» del panel central. En el buscador de ‘triggers’ busca «Telegram», haz clic en el icono y pulsa sobre cualquiera de ellos (por ejemplo, «On message»).
  2. Al hacerlo se abrirá la interfaz de configuración del ‘trigger’, que vamos a usar para crear nuestras credenciales. Para ello sitúate en el desplegable bajo el título «Credential to connect with» y pulsa en «+ Create new credential».
  3. De nuevo se abrirá otra ventana para que introduzcas el Access Token del bot de Telegram, que vamos a obtener en los pasos siguientes.
  1. En Telegram, busca entre los contactos a ‘BotFather‘ y abre una conversación. Introduce el comando ‘/start’ y luego ‘/newbot’. Ahora le tienes que indicar el nombre del ‘bot’ (por ejemplo, Aguacatec). A continuación te pedirá que le asignes un nombre de usuario (que debe ser único en Telegram y acabado en bot). Puedes probar con el mismo nombre (por ejemplo, Aguacatec_bot), y en caso de que ya esté en uso modificarlo.
  1. Hecho esto te aparecerá en pantalla el token de tu ‘bot’. Antes de continuar, haz clic sobre el enlace a tu ‘bot’ que te proporciona y pulsa el botón de «Iniciar».
  2. Copia el token en el campo correspondiente de la ventana de n8n y pulsa en el botón «Save». En seguida recibirás un mensaje de confirmación indicando «Connection tested successfully».

Acciones de Telegram

Una vez conectado el bot ya podemos automatizar Telegram con n8n. Primero vamos a crear una notificación sencilla para comprobarlo:

  1. Crea un nuevo flujo, pulsa en el icono «+» del tablero y selecciona «Trigger manually», para poder arrancar manualmente nuestro flujo.
  2. Pulsa en el icono «+» que aparece a su derecha, busca «Telegram» y selecciona la opción Message actions > Send a text message. Esta acción sirve para enviar un mensaje «normal y corriente».
  3. De nuevo, se abrirá una ventana en la que tienes que configurar la acción:
    • Credential to connect with. Asegúrate de que has seleccionado las credenciales de tu bot, creadas en el paso anterior.
    • Resource. Deja la opción que aparece por defecto («Message»).
    • Operation. Deja la opción que aperece por defecto («Send Message»).
    • Chat ID. Indica aquí el código numérico que identifica la conversación de destino, a la que vas enviar tu mensaje (puede ser un usuario o un grupo). Para identificar tu Chat ID busca entre los contactos de Telegram ‘Chat ID Bot(@chat_id_echo_bot) y pulsa el botón de «Iniciar» para que te devuelva el ID de tu usuario. Para obtener el ID de un grupo sólo tienes que añadir a este mismo contacto y te lo indicará al instante (empieza por ‘-‘).
    • Text. Introduce aquí el mensaje que quieres enviar (por ejemplo, «Hola Aguacateros!!»).
    • Ahora pulsa en el botón superior de «Test step» de la parte superior y verifica que has recibido el mensaje.

Antes de avanzar quiero que te fijes en la parte derecha de la pantalla de n8n (que indica el «Output» o salida de datos). Como puedes observar, un simple mensaje de Telegram contiene mucha información, como el identificador del mensaje (‘message_id’) o el emisor del mensaje (from > id).

Todos ellos son atributos que puedes utilizar en tus automatizaciones. Por ejemplo, puedes usar el ‘message_id’ para responder al mensaje de un paso previo de la automatización, o generar distintas respuestas en función del emisor.

También quiero que te fijes en que el mensaje que te ha llegado por Telegram contiene la leyenda «This message was sent automatically with n8n». Para eliminarlo, edita la acción con la que has enviado el mensaje. Bajo el apartado «Additional Fields» pulsa en «Add field», haz clic en «Append n8n Attribution» y desactiva la casilla que ha aparecido.

Observa que aquí aparecen otras opciones que puedes parametrizar para personalizar tu mensaje. Además, hay muchas otras acciones que puedes hacer con Telegram. Si quieres aprender más sobre lo que puedes hacer con ellas, te sugiero que juegues un rato, consultes la documentación oficial o te descargues la plantilla con ejemplos que he preparado desde nuestro perfil de Patreon.

Triggers de Telegram

Aunque crear notificaciones es algo muy práctico en tus automatizaciones, algo muy interesante y potente para automatizar Telegram con n8n es utilizarlo como trigger. Es decir, puedes hacer que tu bot sea el desencadenante de una automatización. Veámoslo de nuevo con un ejemplo sencillo:

  1. Crea un nuevo flujo, pulsa en el icono «+» del tablero, busca Telegram y selecciona la opción Triggers > On message. Este ‘trigger’ sirve para lanzar tu automatización siempre que tu bot reciba un mensaje (en una conversación directa o un grupo en el que está presente).
  2. En la ventana emergente simplemente asegúrate de seleccionar las credenciales del bot correspondiente en el desplegable «Credential to connect with». Luego pulsa en el botón que indica «Test step» y escribe algo a tu bot en Telegram (por ejemplo, «Hola!»). Al instante aparecerá toda la información del mensaje en la parte derecha de la pantalla.
  3. Vuelve al tablero de trabajo y pulsa sobre el icono «+» a la derecha del ‘trigger’. Busca «Telegram» y selecciona Message Actions > Send a text message. En la ventana emergente haz lo siguiente:
    • Arrastra desde la parte izquierda el campo Message > Chat > ID al campo «Chat ID» de la parte central. Esto hará que el bot conteste en la misma conversación en la que ha recibido el mensaje.
    • En el campo «Text» de la parte central, escribe «Hola». A continuación, arrastra desde la parte izquierda el campo Message > From > First_name, justo hasta la derecha del texto que acabas de escribir. Esto hará que el bot responda «Hola» + el nombre del usuario que ha enviado el mensaje.
  1. Ahora cierra esta ventana, sitúa el ratón sobre el ‘trigger’ y pulsa en el botón que aparece a la izquierda «Test workflow». En Telegram, escribe cualquier mensaje a tu bot y observa como te responde con tu nombre.
  1. Para que tu bot empiece a responder en tiempo real, no olvides activar tu flujo en la pestaña superior del panel de trabajo (a la izquierda de los botones «Share» y «Save»).

Obviamente, esta es una automatización muy sencilla, pero con este principio puedes programar respuestas personalizadas en función del mensaje recibido, el remitente, el grupo, la hora… o todo un asistente!

Puedes consultar más información sobre los ‘triggers’ disponibles en la documentación oficial, y ver cómo he montado el flujo con estos ejemplos (y alguno más) en la plantilla desde nuestro perfil de Patreon.

Acciones especiales, consejos e ideas de automatización

Aunque estos ejemplos te hayan podido parecer básicos, realmente creo que automatizar Telegram con n8n te abre un mundo de posibilidades:

  • Puedes crear un completo sistema de notificaciones, con eventos de cualquiera de tus servicios conectados, utilizando uno o varios bots, que te envíe mensajes a ti, a otros usuarios o a grupos…
  • Puedes crear un asistente inteligente, ya sea para atender tus necesidades o para que se encargue de la gestión de consultas de tus clientes o seguidores.
  • Puedes combinarlo con la integración de Home Assistant para obtener información de tu instancia domótica o controlar tus dispositivos.
  • Puedes utilizar otras de las acciones especiales que proporciona la integración (borrar mensajes, cambiar el título, fijar un mensaje…) para que te ayude a gestionar tu grupo de telegram.

También existen algunas limitaciones que debes tener en cuenta para no volverte loco:

  • Un mismo flujo no puede tener distintos ‘triggers’, ya que sólo ejecutará el primero de ellos. En su lugar crea distintos flujos con distintos desencadenantes cuando sea necesario.
  • Un mismo bot no puede trabajar con multiples aplicaciones (por ejemplo, n8n y Home Assistant) de forma simultánea. En su lugar utiliza un bot para cada aplicación.
  • Sólo puedes ejecutar el modo «test» de un flujo cuyo ‘trigger’ sea el mensaje recibido por un bot, si el flujo está inactivo. Por otro lado, el bot solo responderá a los mensajes recibidos mientras el flujo esté activo.