Skip to main content

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/config falla (token inactivo, conexión no web o desconectada, origin no permitido, error de red);
  • requiresAuth es verdadero y el snippet no trae user con externalId y username.

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.