Skip to content
BotServBotServ
ChatwootServicio al clienteHelpdeskSelf-HostingOpen SourceOmnichannelSupport

Chatwoot self-hosted: plataforma de servicio al cliente con IA

Chatwoot self-hosted: servicio al cliente open-source omnichannel (web, WhatsApp, email). Integración IA con Ollama para respuestas automáticas.

S

schutzgeist

5 min read
Chatwoot self-hosted: plataforma de servicio al cliente con IA

Chatwoot auto-alojado: plataforma de servicio al cliente con IA

Qué cubre este artículo

  • Qué es Chatwoot: servicio al cliente open-source con omnicanal.
  • Configuración con Docker e instalación de canales (sitio web, correo electrónico, WhatsApp).
  • Integración de IA: Ollama responde tickets automáticamente o redacta respuestas.
  • Flujos de agentes, automatizaciones, etiquetas y enrutamiento.
  • Comparación con Rocket.Chat Omnichannel e Intercom.

Introducción

Chatwoot es la alternativa open-source a Intercom/Zendesk: una plataforma de servicio al cliente que unifica todos los canales de comunicación en una única bandeja de entrada: widget de chat web, correo electrónico, WhatsApp Business, Telegram, Facebook, incluso integraciones telefónicas. Los agentes gestionan todo desde una sola interfaz.

Para quienes auto-alojan IA, Chatwoot es la interfaz ideal para soporte potenciado con IA: llegan mensajes → Ollama redacta respuesta → agente verifica y envía (o la IA responde automáticamente en casos simples). Intervención humana en el bucle por diseño.

Casos de uso típicos

  • Soporte de primer nivel con IA: la IA contesta preguntas estándar, los humanos manejan casos complejos.
  • Bandeja de entrada omnicanal: sitio web, WhatsApp, correo electrónico, todo llega a una cola.
  • Borradores de respuesta: los agentes reciben borradores generados por IA para revisar (modo asistente).
  • Categorización automática: la IA etiqueta tickets (error, facturación, pregunta) y los enruta.
  • Escalado desde bots: Typebot o tu propio bot escala a Chatwoot.

Instalación: Docker

Chatwoot es una aplicación Rails con Postgres + Redis:

services:
  chatwoot:
    image: chatwoot/chatwoot:latest
    ports: ["127.0.0.1:3000:3000"]
    environment:
      - SECRET_KEY_BASE=langer-zufaelliger-key
      - FRONTEND_URL=https://support.deine-domain.de
      - POSTGRES_HOST=postgres
      - POSTGRES_USERNAME=chatwoot
      - POSTGRES_PASSWORD=geheim
      - POSTGRES_DATABASE=chatwoot
      - REDIS_URL=redis://redis:6379
      - MAILER_SENDER_EMAIL=support@deine-domain.de
      - SMTP_ADDRESS=smtp.dein-server.de
      - SMTP_PORT=587
      - SMTP_USERNAME=...
      - SMTP_PASSWORD=...
    volumes: [chatwoot_data:/app/storage]
    depends_on: [postgres, redis]
    restart: always

  chatwoot-worker:
    image: chatwoot/chatwoot:latest
    command: bundle exec sidekiq -C config/sidekiq.yml
    environment: *same-env-vars*
    volumes: [chatwoot_data:/app/storage]
    depends_on: [postgres, redis]
    restart: always

  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: chatwoot
      POSTGRES_PASSWORD: geheim
      POSTGRES_DB: chatwoot
    volumes: [pg_data:/var/lib/postgresql/data]
    restart: always

  redis:
    image: redis:7
    volumes: [redis_data:/data]
    restart: always

volumes:
  chatwoot_data:
  pg_data:
  redis_data:

Después de iniciar: docker exec chatwoot bundle exec rails db:prepare para la configuración de la base de datos, luego el asistente de configuración.

Configurar canales

  • Chat en vivo web: Bandeja de entrada → Sitio web → Coloca el fragmento del widget en tu página (como el chat en vivo de Rocket.Chat, pero como plataforma de soporte dedicada).
  • Correo electrónico: Los correos entrantes a support@ se convierten en tickets.
  • WhatsApp Business: A través de Twilio/360dialog o directamente con la API en la nube de WhatsApp.
  • Telegram: Introduce el token del bot: los mensajes de Telegram se convierten en tickets.
  • Canal API: Integraciones propias a través de la API de Chatwoot.

Integración de IA: Ollama como agente de soporte

Chatwoot tiene webhooks (en cada mensaje nuevo) + API REST (publica respuestas). El agente de IA actúa en medio:

from flask import Flask, request
import requests
import ollama

app = Flask(__name__)
CW = "https://support.deine-domain.de"
CW_TOKEN = "dein-api-access-token"
client = ollama.Client(host="http://ollama:11434")

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.json
    if data.get("event") != "message_created":
        return {"ok": True}
    if data.get("message_type") != "incoming":   # solo mensajes de clientes
        return {"ok": True}

    convo_id = data["conversation"]["id"]
    text = data.get("content", "")

    # Carga el contexto de la conversación desde Chatwoot
    msgs = requests.get(
        f"{CW}/api/v1/accounts/1/conversations/{convo_id}/messages",
        headers={"api_access_token": CW_TOKEN}).json()
    history = [{"role": "user" if m["message_type"] == 0 else "assistant",
                "content": m["content"]} for m in msgs["payload"][-10:]]

    resp = client.chat(model="llama3.1:8b", messages=[
        {"role": "system", "content":
         "Du bist Support-Agent. Antworte kurz, hilfreich. "
         "Wenn Du unsicher bist, sag 'Ich leite an einen Kollegen weiter'."}
    ] + history)
    answer = resp["message"]["content"]

    # Publica la respuesta como agente
    requests.post(
        f"{CW}/api/v1/accounts/1/conversations/{convo_id}/messages",
        headers={"api_access_token": CW_TOKEN},
        json={"content": answer})
    return {"ok": True}

Modo asistente en lugar de respuesta automática

Más seguro para negocios: la IA publica un borrador como nota privada (no al cliente), el agente revisa y envía:

# private_note: True → solo visible internamente
requests.post(url, json={"content": f"[KI-Entwurf]\n{answer}",
                         "private": True})

Automatización dentro de Chatwoot

Reglas de automatización incorporadas (sin código):

  • Asignación de etiquetas por palabras clave
  • Asignación automática a equipos de agentes
  • Rastreo de SLA y escalada
  • Respuestas predefinidas

Ampliable con webhooks de IA: la IA etiqueta → la automatización enruta.

Seguridad y protección de datos

  • RGPD: Auto-alojado → los datos de los clientes permanecen en tu poder, la razón principal frente a Intercom/Zendesk.
  • Datos de clientes: el chat de soporte contiene datos personales: HTTPS, acceso solo para agentes.
  • Tokens API: token propio por integración.
  • Transparencia de IA: los clientes deben saber si hablan con IA o humano (hazlo evidente en el nombre del bot o introducción).

Chatwoot frente a alternativas

HerramientaFortalezaDebilidad
ChatwootOmnicanal, bandeja de entrada de agentes, compatible con IAAplicación Rails, algo pesada
Rocket.ChatChat de equipo + Omnichannelcaracterísticas de soporte más débiles
IntercomCaracterísticas de IA más madurasEn la nube, muy costoso
TypebotFlujos sin códigoSin bandeja de entrada de agentes

Enlaces útiles

Puntos clave:

  • Chatwoot = Intercom open-source: soporte omnicanal (sitio web, correo, WhatsApp) en una bandeja de entrada.
  • Webhooks + API → Ollama contesta tickets o redacta respuestas para agentes.
  • Intervención humana en el bucle: modo asistente (borrador de IA → humano revisa) es el camino seguro.
  • Auto-alojado → los datos de los clientes permanecen en tu poder (RGPD).
  • La mejor opción open-source para servicio al cliente real con IA.

FAQ

¿Puede la IA responder completamente de forma automática?

Sí técnicamente (webhook → Ollama → publica respuesta). Lo recomendado es el modo asistente: la IA redacta borradores privados, el agente revisa y envía. Más seguro para el servicio al cliente.

¿Qué canales?

Widget web, correo electrónico, WhatsApp Business, Telegram, Facebook, Instagram, SMS, voz, todo en una bandeja de entrada. La fortaleza central de Chatwoot.

¿Chatwoot o Rocket.Chat para soporte?

Chatwoot es una plataforma de soporte dedicada (tickets, agentes, SLAs, enrutamiento). Rocket.Chat es un chat de equipo con Omnichannel como característica. Para soporte puro: Chatwoot. Para chat de equipo + soporte ocasional: Rocket.Chat.

¿Recursos?

Rails + Postgres + Redis + worker Sidekiq: ~1,5-2 GB de RAM. Algo más pesado que un contenedor único, pero aceptable para un VPS o mini-PC.

¿Gratuito?

Edición comunitaria: open-source, gratuito, todas las características principales. La versión en nube con hosting y características empresariales tiene costo, no necesaria para quienes auto-alojan.

¿Integración de WhatsApp?

Sí, a través de la API oficial de WhatsApp Business Cloud o proveedores como Twilio/360dialog. Los mensajes de WhatsApp se convierten en tickets, los agentes/IA responden desde la bandeja de entrada.

Fuentes y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas