Automatiza la atencion al cliente de tu negocio con n8n + WhatsApp + IA

AgentesNexo
··7 min lectura

Automatiza la atención al cliente de tu negocio con n8n + WhatsApp + IA

Si tienes un negocio en Latinoamérica y todavía respondes mensajes de WhatsApp de forma manual, estás perdiendo tiempo y ventas. WhatsApp es el canal de comunicación dominante en la región: el 93% de los usuarios de smartphone en Bolivia, Venezuela, Argentina y México lo tienen instalado. El problema no es el volumen de mensajes — es que responderlos uno por uno no escala.

En esta guía vas a construir un sistema de atención al cliente completamente automatizado usando n8n (motor de automatización open-source), la API de WhatsApp Business a través de Evolution API, y Gemini 1.5 Flash para generar respuestas inteligentes. Al terminar tendrás un agente que responde preguntas frecuentes, clasifica consultas, y escala al humano solo cuando es necesario.

Tiempo estimado: 45-60 minutos. Nivel: intermedio (necesitas saber qué es un webhook y cómo se hace un HTTP request).


Prerrequisitos

Antes de empezar, asegúrate de tener:

  • n8n instalado (self-hosted via Docker o cuenta en n8n.cloud). Versión recomendada: 1.40+
  • Evolution API corriendo (Docker Compose). Esta es la capa que conecta con WhatsApp Business sin pagar la API oficial de Meta — ideal para negocios que empiezan.
  • Un número de WhatsApp Business activo y vinculado a Evolution API
  • Una API key de Google AI Studio (Gemini 1.5 Flash, gratis hasta 15 RPM)
  • Conocimiento básico de JSON y HTTP

Stack mínimo de Docker Compose para Evolution API:

yaml
version: #43a047">"3.8"
services:
  evolution-api:
    image: atendai/evolution-api:latest
    ports:
      - #43a047">"8080:8080"
    environment:
      - SERVER_URL=http://localhost:8080
      - AUTHENTICATION_API_KEY=tu-api-key-secreta
      - DATABASE_ENABLED=true
      - DATABASE_CONNECTION_URI=postgresql://user:pass@postgres:5432/evolution
    depends_on:
      - postgres
  postgres:
    image: postgres:15
    environment:
      POSTGRES_DB: evolution
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass

Paso 1: Configurar la instancia de Evolution API y conectar WhatsApp

Crea la instancia via API:

bash
curl -X POST http://localhost:8080/instance/create \
  -H #43a047">"Content-Type: application/json" \
  -H #43a047">"apikey: tu-api-key-secreta" \
  -d '{#43a047">"instanceName": "atencion-cliente", "token": "", "qrcode": true}'

La respuesta incluye un QR code en base64. Escanealo con WhatsApp Business en tu teléfono. Verifica que la instancia esté conectada:

bash
curl http://localhost:8080/instance/connectionState/atencion-cliente \
  -H #43a047">"apikey: tu-api-key-secreta"

Respuesta esperada: { "instance": { "state": "open" } }. Si ves close o connecting, el QR expiró — genera uno nuevo con el endpoint /instance/connect/{instanceName}.

Configura el webhook hacia n8n:

bash
curl -X POST http://localhost:8080/webhook/set/atencion-cliente \
  -H #43a047">"Content-Type: application/json" \
  -H #43a047">"apikey: tu-api-key-secreta" \
  -d '{
    #43a047">"url": "https://tu-n8n.com/webhook/whatsapp-inbound",
    #43a047">"webhook_by_events": false,
    #43a047">"webhook_base64": false,
    #43a047">"events": ["MESSAGES_UPSERT"]
  }'

Cada mensaje entrante en WhatsApp disparará un POST a tu n8n.


Paso 2: Crear el workflow en n8n — recibir el mensaje

Abre n8n y crea un nuevo workflow. Agrega un nodo Webhook con estas configuraciones:

  • HTTP Method: POST
  • Path: whatsapp-inbound
  • Response Mode: Respond to Webhook

El payload que llega de Evolution API tiene esta estructura:

json
{
  #43a047">"event": "messages.upsert",
  #43a047">"instance": "atencion-cliente",
  #43a047">"data": {
    #43a047">"key": {
      #43a047">"remoteJid": "59171234567@s.whatsapp.net",
      #43a047">"fromMe": false,
      #43a047">"id": "3EB0A1B2C3D4E5F6"
    },
    #43a047">"message": {
      #43a047">"conversation": "Hola, quiero saber el precio del servicio premium"
    },
    #43a047">"messageTimestamp": 1743600000,
    #43a047">"pushName": "Carlos Mendoza"
  }
}

Agrega un nodo IF después del Webhook para filtrar solo mensajes recibidos (no los que envía el bot):

javascript
{{ $json.data.key.fromMe === false && $json.data.message.conversation !== undefined }}

Esto evita que el workflow se dispare en bucle cuando el bot mismo envía mensajes.


Paso 3: Extraer datos y consultar contexto del cliente

Agrega un nodo Code (JavaScript) para extraer los datos relevantes:

javascript
const data = $input.first().json.data;

const phoneNumber = data.key.remoteJid.replace(#43a047">"@s.whatsapp.net", "");
const messageText = data.message.conversation || 
                    data.message.extendedTextMessage?.text || 
                    #43a047">"[mensaje sin texto]";
const senderName = data.pushName || #43a047">"Cliente";
const messageId = data.key.id;

return [{
  json: {
    phoneNumber,
    messageText,
    senderName,
    messageId,
    timestamp: new Date().toISOString()
  }
}];

Opcionalmente, agrega un nodo PostgreSQL para consultar si el número ya tiene historial en tu CRM. El patrón es: busca el número, trae las últimas 3 interacciones, pásalas como contexto al modelo de IA en el siguiente paso. Si usas Airtable o Google Sheets como CRM ligero, n8n tiene nodos nativos para ambos.


Paso 4: Generar la respuesta con IA

Este es el núcleo del sistema. Agrega un nodo HTTP Request para llamar a Gemini 1.5 Flash:

  • Method: POST
  • URL: https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={{ $env.GEMINI_API_KEY }}

Body JSON:

json
{
  #43a047">"system_instruction": {
    #43a047">"parts": [{
      #43a047">"text": "Eres el asistente de atención al cliente de [Nombre de tu empresa]. Respondes en español de forma concisa. Tu objetivo es resolver dudas sobre precios, servicios y horarios. Si el cliente quiere hablar con un humano o el tema es complejo, responde exactamente: ESCALAR_HUMANO. De lo contrario, responde en máximo 3 oraciones."
    }]
  },
  #43a047">"contents": [{
    #43a047">"parts": [{
      #43a047">"text": "Cliente: {{ $json.senderName }}\nMensaje: {{ $json.messageText }}"
    }]
  }],
  #43a047">"generationConfig": {
    #43a047">"temperature": 0.3,
    #43a047">"maxOutputTokens": 300
  }
}

La temperatura en 0.3 es intencional: genera respuestas consistentes y predecibles — esencial para atención al cliente. Extrae la respuesta con otro nodo Code:

javascript
const responseText = $input.first().json.candidates[0].content.parts[0].text.trim();
const shouldEscalate = responseText === #43a047">"ESCALAR_HUMANO";

return [{
  json: {
    aiResponse: responseText,
    shouldEscalate,
    phoneNumber: $(#43a047">"Extraer datos").first().json.phoneNumber,
    senderName: $(#43a047">"Extraer datos").first().json.senderName,
    messageText: $(#43a047">"Extraer datos").first().json.messageText
  }
}];

Paso 5: Enrutar y enviar la respuesta por WhatsApp

Agrega un nodo IF para bifurcar el flujo:

  • Condición true: {{ $json.shouldEscalate === true }} — rama de escalación
  • Condición false — respuesta automática directa

Rama de respuesta automática — nodo HTTP Request hacia Evolution API:

json
POST http://localhost:8080/message/sendText/atencion-cliente
Headers: { #43a047">"apikey": "tu-api-key-secreta", "Content-Type": "application/json" }

Body: {
  #43a047">"number": "{{ $json.phoneNumber }}",
  #43a047">"text": "{{ $json.aiResponse }}"
}

Rama de escalación: envía notificación al equipo (vía Telegram, email, o WhatsApp del agente humano) y avisa al cliente:

json
{
  #43a047">"number": "{{ $json.phoneNumber }}",
  #43a047">"text": "Entendido. Un agente se comunicará contigo en los próximos 10 minutos."
}

El mensaje de confirmación al cliente es importante: reduce la ansiedad y establece una expectativa concreta de tiempo de respuesta.


Paso 6: Guardar el historial de conversaciones

Al final de ambas ramas, agrega un nodo PostgreSQL para registrar cada interacción:

sql
INSERT INTO conversation_log (
  phone_number,
  sender_name,
  message_in,
  message_out,
  escalated,
  created_at
) VALUES ($1, $2, $3, $4, $5, NOW())

Mapea los valores desde los nodos anteriores. Esto te permite:

  • Identificar qué preguntas se repiten más (para mejorar el prompt del sistema)
  • Medir la tasa de escalación (meta: por debajo del 20%)
  • Auditar respuestas incorrectas del modelo para ajustar el prompt

Resultado final

Al completar esta guía tienes:

  1. Un sistema que responde mensajes de WhatsApp en menos de 3 segundos, 24/7, sin intervención humana
  2. Un agente de IA calibrado para tu negocio con lógica de escalación inteligente
  3. Historial completo de conversaciones para análisis y mejora continua

El costo operativo es prácticamente cero: Gemini 1.5 Flash es gratuito hasta 15 RPM (suficiente para la mayoría de PYMEs en LATAM), n8n self-hosted corre en un VPS de $10/mes, y Evolution API es open source. Una empresa con 200 mensajes diarios que antes requería 2 horas de trabajo manual puede bajarlo a 15 minutos de supervisión con este sistema.


Siguientes pasos

Una vez que el flujo básico funcione, los próximos niveles de sofisticación son:

1. Memoria persistente por cliente: Guarda el historial de conversación y pásalo como contexto en cada nueva interacción. Esto habilita conversaciones multi-turno coherentes.

2. Catálogo de productos dinámico: Conecta n8n a tu base de datos de productos. El agente puede consultar precios y disponibilidad en tiempo real antes de responder.

3. Integración con calendario: Cuando el cliente pide una cita, el agente verifica disponibilidad en Google Calendar y agenda directamente en el chat. n8n tiene nodo nativo para esto.

4. Agente de voz para llamadas entrantes: El mismo flujo lógico se replica para llamadas telefónicas usando Vapi o Retell AI. Si el cliente prefiere hablar, el agente de voz usa el mismo contexto y base de conocimiento que construiste aquí.

5. Dashboard de métricas: Conecta conversation_log a Metabase o Grafana para visualizar volumen de consultas, temas recurrentes y tasa de resolución automática en tiempo real.

El patrón que construiste hoy es la base de cualquier sistema de agentes IA para negocios: recibir input, procesar con IA, enrutar según resultado, ejecutar acción, registrar. Desde ahí puedes agregar capas de complejidad sin romper la arquitectura central.


Publicado el 2 de abril de 2026 en AgentesNexo. Demian Olmedo — CEO AgentesNexo. #AgentesNexo

Articulos relacionados