Files
Proxmox-Coolify-Manager/docs/casos/evolution-api-chatwoot.md
T

4.2 KiB

Caso: integración Evolution API ↔ Chatwoot — "Something went wrong in importing messages"

Resuelto el 2026-09-02 contra el host real. Servicios: evolution-api v2.3.7 (q6tnsvkvrjw4g0ab532l3r1s, https://evoapi.urieljareth.org) y Chatwoot v4.16.2 (c11xzy2tx2cdapm32f5b89vy, https://chat.urieljareth.org). Resultado: flujo en vivo bidireccional OK en inbox 6 (Asesoría Personal) e inbox 10 (Personal), inbox 12 (JM) creado, errores de importación desactivados (limitación de upstream, ver §2).


0. Síntomas reportados

  1. En la conversación de estado aparecía 💬 Something went wrong in importing messages. (inbox 6, conv 29).
  2. "La instancia no funciona": el mensaje de prueba del usuario (desde su número personal al de Asesoría) no aparecía.

1. Diagnóstico (verificado con logs + código fuente 2.3.7)

1.1 La instancia SÍ funcionaba — el problema era visibilidad

Los logs mostraban los mensajes de prueba ([email protected]) llegando y entregándose: Found conversation ... ID: 22 - Name: Uriel Jareth. La conversación 22 existía pero estaba pending: Chatwoot no muestra las pendientes en la bandeja "Abiertas" → parecía que no llegaba nada.

1.2 La importación de historial es imposible en esta topología (upstream)

Cadena del error:

  • El importador (chatwoot-import-helper.ts) escribe directo a la DB de Chatwoot vía CHATWOOT_IMPORT_DATABASE_CONNECTION_URI — no hay fallback por API en 2.3.7.
  • El stack de Evolution trae esa URI apuntando a su propio postgres (postgres:5432/chatwoot) — una base que ahí no existe (Chatwoot usa su postgres en otro stack, DB chatwoot, ssl=off).
  • El cliente (libs/postgres.client.ts) fuerza ssl: {rejectUnauthorized: false} siempre → contra cualquier postgres de este host (todos ssl=off) el resultado es Error on getExistingSourceIds: The server does not support SSL connections → Something went wrong in importing messages.

Habilitar SSL en el postgres de Chatwoot habría arriesgado el stack parcheado a mano; se descartó. La decisión: desactivar la importación (importMessages=false, importContacts=false) y operar solo con el flujo en vivo. Conclusión práctica: el historial previo del teléfono no se importa — exactamente el techo que impone WhatsApp de todas formas (ver discusión en evolution-go-stack.md §3).

1.3 JM estaba roto de fábrica

  • Su chatwoot.url tenía slash final (https://chat.urieljareth.org/) — la doc exige sin slash.
  • No existía su inbox en Chatwoot → warnings inbox not found en bucle.

1.4 INSTA queda pendiente (decisión del usuario)

Desconectada (close), accountId=2 (solo existe la cuenta 1), token distinto y sin inbox. Mientras esté enabled=true seguirá dando avisos inbox not found. Reactivarla exige re-escanear QR + corregir accountId.

2. Fixes aplicados (2026-09-02)

Fix Cómo Resultado
Import fuera POST /chatwoot/set/{Asesoria Personal,Personal,JM} con importMessages=false, importContacts=false 201; 0 ERROR en logs después
Conversaciones visibles conversationPending=false en las tres + toggle_status de la conv 22 → open conv 22 abierta en inbox 6
JM reparado misma llamada con URL sin slash + autoCreate=true inbox 12 "JM" creado
Webhooks verificados intactos en inbox 6 y 10 (…/chatwoot/webhook/{instancia}) sin cambios

3. Mapa actual de la integración

Instancia Inbox Estado
Asesoría Personal (5214438634306) 6 open, flujo bidireccional verificado en logs
Personal (5214451052792) 10 open, verificado por el usuario
JM (5214451672052) 12 open, inbox recién creado
INSTA — close + accountId=2: reactivar a decisión del usuario

Notas operativas:

  • El parámetro daysLimitImportMessages queda inertre (importMessages=false).
  • Re-conectar una instancia o re-guardar la config de Chatwoot ya no dispara importaciones fallidas.
  • Si algún día se quiere importación de historial de verdad: habilitar SSL en un postgres y cruzar redes de stacks, o esperar que upstream añada fallback por API (el importador 100% SQL-Direct está en 2.3.7).