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-apiv2.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
- En la conversación de estado aparecía
💬 Something went wrong in importing messages.(inbox 6, conv 29). - "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íaCHATWOOT_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, DBchatwoot,ssl=off). - El cliente (
libs/postgres.client.ts) fuerzassl: {rejectUnauthorized: false}siempre → contra cualquier postgres de este host (todosssl=off) el resultado esError 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.urltenía slash final (https://chat.urieljareth.org/) — la doc exige sin slash. - No existía su inbox en Chatwoot → warnings
inbox not founden 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
daysLimitImportMessagesqueda 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).