Servidores Linux

Bot de Telegram de atención al cliente con IA en n8n: AI Agent, memoria y derivación a un humano

7 pasos 15 min de lectura 78 vistas 0
Contenido

Muchos equipos ya hablan con sus clientes por Telegram. Con n8n, una herramienta de código abierto para automatizar flujos de trabajo, puede crear un bot de Telegram que responda preguntas con un modelo de IA, recuerde la conversación, siga sus instrucciones sobre el tono y el alcance, y pase la conversación a una persona cuando haga falta, sin escribir una aplicación completa. Esta guía instala n8n en su servidor detrás de HTTPS, crea el bot y construye el flujo de trabajo con un modelo local en Ollama o con la API de un proveedor de IA.

Telegram entrega los mensajes a n8n mediante un webhook, lo que requiere un dominio público con un certificado HTTPS válido. Configure primero el DNS y el certificado. Si utiliza una API de IA comercial, úsela solo desde regiones que el proveedor admita y respete sus políticas de uso; para conversaciones confidenciales, es preferible un modelo local.

Paso 1: Crear el bot de Telegram

En Telegram, hable con @BotFather, envíe /newbot, elija un nombre y un nombre de usuario que termine en "bot", y copie el token. Con /setdescription y /setuserpic puede dar al bot un aspecto profesional. Mantenga el token en secreto: quien lo tenga controla el bot.

Paso 2: Instalar n8n

n8n se ejecuta en Docker (consulte nuestra guía de instalación de Docker). Sustituya el dominio y la zona horaria por los suyos.

docker volume create n8n_data
docker run -d --name n8n --restart always \
  -p 127.0.0.1:5678:5678 \
  --add-host=host.docker.internal:host-gateway \
  -e N8N_HOST=n8n.example.com \
  -e N8N_PROTOCOL=https \
  -e WEBHOOK_URL=https://n8n.example.com/ \
  -e GENERIC_TIMEZONE=Asia/Hong_Kong \
  -e TZ=Asia/Hong_Kong \
  -e N8N_PROXY_HOPS=1 \
  -v n8n_data:/home/node/.n8n \
  docker.n8n.io/n8nio/n8n

WEBHOOK_URL debe ser la dirección HTTPS pública; n8n la utiliza al registrar el webhook en Telegram.

Paso 3: Poner n8n detrás de HTTPS

server {
    listen 443 ssl;
    http2 on;
    server_name n8n.example.com;

    ssl_certificate     /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;

    location / {
        proxy_pass         http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host $host;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_buffering    off;
        proxy_read_timeout 300s;
    }
}

Abra https://n8n.example.com y cree de inmediato la cuenta de propietario. Los certificados se explican en SSL gratuito con Certbot o acme.sh.

Paso 4: Añadir las credenciales

  • Telegram: cree una credencial de Telegram con el token del bot del paso 1.
  • Modelo local: cree una credencial de Ollama con la URL base http://host.docker.internal:11434 (con Ollama configurado como en cómo ejecutar un LLM local con Ollama, incluido el paso que permite la conexión desde contenedores Docker y sus reglas de firewall).
  • O una API de IA: cree la credencial de su proveedor; los proveedores con una API compatible con OpenAI pueden usar la credencial de OpenAI con una URL base personalizada.

Paso 5: Construir el flujo de trabajo

Cree un flujo de trabajo nuevo y añada estos nodos (los nombres pueden variar ligeramente entre versiones de n8n):

  1. Telegram Trigger, a la escucha de actualizaciones de tipo message (mensaje).
  2. AI Agent, con el mensaje del usuario tomado del trigger y un mensaje de sistema que describa la función del bot.
  3. Conecte al agente un modelo de chat (Ollama Chat Model con qwen2.5:7b, o el modelo de chat de su proveedor) y un nodo de memoria (Simple Memory) cuya clave sea el chat ID, para que cada cliente tenga su propio historial de conversación.
  4. Nodo Telegram, operación Send Message (enviar mensaje), que responde en el mismo chat con la salida del agente.

Las expresiones que debe usar en los campos de los nodos:

AI Agent      - prompt (user message):  {{ $json.message.text }}
Simple Memory - session key:            {{ $('Telegram Trigger').item.json.message.chat.id }}
Telegram      - chat ID:                {{ $('Telegram Trigger').item.json.message.chat.id }}
Telegram      - text:                   {{ $json.output }}

Un buen mensaje de sistema mantiene las respuestas breves y centradas en el tema, por ejemplo:

You are the customer service assistant of ACME Hosting.
Answer briefly and politely in the customer's language.
Only answer questions about our services, orders and technical support.
If you are not sure, or the customer asks for a refund or a person,
say that a colleague will reply soon. Never invent prices or promises.

Paso 6: Activar y probar

Guarde el flujo de trabajo y actívelo; n8n registrará entonces el webhook en Telegram. Envíe un mensaje a su bot. Si no ocurre nada, compruebe el estado del webhook:

curl -s "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getWebhookInfo"

El campo url debe ser su dominio de n8n, y last_error_message explica los fallos, como problemas de certificado o un servidor inaccesible.

Paso 7: Controlar quién puede usar el bot y añadir el paso a un humano

  • Lista de permitidos: para un bot interno, añada un nodo If después del trigger que solo continúe cuando {{ $json.message.chat.id }} sea uno de los chat ID de su equipo.
  • Paso a un humano: añada una rama que reenvíe la conversación a su grupo de soporte cuando el mensaje contenga palabras como "reembolso", "humano" o "queja", e indique al cliente que un compañero le responderá.
  • Conocimiento: para obtener respuestas basadas en sus propios documentos, combínelo con una base de conocimiento como se describe en cómo crear un chatbot RAG privado con AnythingLLM.

Preguntas frecuentes

¿El bot funcionaba y dejó de responder?

Solo se puede configurar un webhook por token de bot. Otro flujo de trabajo, una ejecución de prueba o un script que use el mismo token lo reemplaza. Compruebe getWebhookInfo, mantenga un único flujo de trabajo activo por bot y use un bot distinto para las pruebas.

¿Las respuestas tardan demasiado?

En CPU, los modelos más pequeños responden más rápido. Mantenga breve el mensaje de sistema, limite la ventana de memoria a los últimos 10 mensajes y mantenga el modelo cargado en Ollama.

¿Puede n8n hacer algo más que chatear?

Sí. El mismo flujo de trabajo puede consultar pedidos en su base de datos, crear tickets de soporte, publicar en un grupo o enviar informes diarios. Los requisitos de servidor de n8n se tratan en requisitos de servidor para Dify, n8n y agentes de IA.

¿Sigue sin resolverlo después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico de IMIDC, disponible 24/7, le ayudará. Incluya la IP del servidor, su dominio de n8n y la salida de getWebhookInfo y de docker logs n8n para que podamos localizar el problema más rápido.

¿Fue útil la respuesta?

Tutoriales relacionados