Gotchas
El README describe una configuración remota que el código no aplica
El README habla de una "configuración visual remota" que aplicaría webConfig (título, posición, mensajes iniciales, botón, color, sonido). En el código de main, SETTINGS se arma solo con window.WhaticketWidgetConfig; el comentario del propio archivo indica que la configuración visual viene inline y el CRM solo administra negocio (dominios, token). De GET /widget/config el loader únicamente usa requiresAuth. Para cambiar título, colores o mensajes iniciales hay que modificar el snippet del sitio.
CRM_ORIGIN difiere del README
El README dice que hoy apunta a https://staging-api-crm.zgameslatam.com, pero en el código de main vale http://localhost:3000. Hay que revisar y ajustar la constante antes de compilar para un entorno real. Esta documentación toma como fuente el código.
draggable es false por defecto
El README advierte que el valor por defecto cambió de true a false: una integración que no lo fije deja de poder arrastrar el botón y una posición guardada se ignora (solo se restaura con draggable: true).
El widget puede no aparecer
No se monta automáticamente si:
- falta
token(error en consola y aborto); GET /widget/configfalla (token inactivo, conexión no web o desconectada, origin no permitido, error de red);requiresAuthes verdadero y el snippet no traeuserconexternalIdyusername.
En esos casos se puede montar a mano con window.WhaticketWidget.init(userConfig).
Configuración leída una sola vez
window.WhaticketWidgetConfig se lee al evaluarse el script. Cambiarla después no tiene efecto; solo init() admite una identidad nueva. Además, el anti-duplicado (__WhaticketWidgetLoaded__) impide ejecutar el loader dos veces en la misma página.
open() antes de montar
open() es un no-op si el widget no está montado. Si se llama init() y open() en secuencia funciona, porque connecting evita un segundo socket.
Fullscreen oculta el botón
Con el panel en pantalla completa, el botón y el badge se ocultan mientras está abierto y se restauran al cerrar.
Contador de reintentos
Tras un io server disconnect los reintentos propios son 3 y no se perdonan si la conexión cae antes de 5 s de estabilidad. Desde el cliente no se distingue un token inválido de un fallo transitorio del backend (ambos se ven igual).
Archivos
Los límites (10 MB documentos, 5 MB imágenes, 1 a 120 s de audio) se validan en el cliente; el backend impone los suyos. Las imágenes admitidas en el selector son jpeg, png y gif.
Tests
npm test solo cubre attachments.js y presence.js; el loader no tiene tests automatizados.