WhatsApp es el canal que tu usuario abre decenas de veces al día - y GLPI, de fábrica, solo sabe hablar por correo. El módulo WhatsApp Bot de NexTool conecta GLPI con la Evolution API (open source, protocolo Baileys) y entrega la notificación de ticket directo en WhatsApp, con una cola que reprocesa los fallos y la conexión en tu propia infraestructura. Sustentar mesas de servicio nos enseñó que el canal correcto cambia la tasa de respuesta de aprobaciones y encuestas de satisfacción - pero la integración tiene trampas de configuración que esta guía muestra por dentro.
El problema
GLPI notifica por correo transaccional usando la cola queuednotification. Funciona, pero el correo corporativo cae en spam, el usuario final no vive en el webmail y el gerente que debe aprobar un ticket solo se entera cuando alguien llama reclamando. El resultado diario son aprobaciones paradas durante horas, encuestas de satisfacción con tasa de respuesta cercana a cero y un equipo de soporte gastando tiempo en cobros manuales. Cambiar el correo por un canal que la gente realmente lee resuelve la mayor parte - y en Brasil ese canal es WhatsApp.
La vía comercial (la WhatsApp Business API oficial) es cara, depende de que Meta apruebe plantillas y te ata a un contrato externo. Para quien ya opera su propia infraestructura, la Evolution API es la alternativa self-hosted, y WhatsApp Bot la conecta a GLPI usando la infraestructura nativa de notificaciones, sin parches en el core.
Cómo funciona WhatsApp Bot
El módulo registra su propio modo de notificación reutilizando el canal SMS de GLPI (Notification_NotificationTemplate::registerMode(MODE_SMS)). Cuando se dispara un evento de ticket, GLPI resuelve el destinatario, el módulo busca el número, arma el mensaje y lo envía por la Evolution API - transparente para el operador.
- Notificaciones propias por evento - en la instalación, el módulo crea nueve notificaciones de WhatsApp dedicadas (Nuevo Ticket, Nuevo Seguimiento, Ticket Resuelto, Encuesta de Satisfacción, Solicitud de Aprobación, Respuesta de Aprobación y las tres de contraseña), cada una con sus propios destinatarios. La creación es idempotente por nombre: si editas el texto en la interfaz de GLPI, una reinstalación preserva tu edición.
- Cola con reintento automático - un mensaje que falla por inestabilidad de la conexión entra en la tabla de cola y se reprocesa en lotes de hasta 50 cada 1 minuto, con un máximo de 3 intentos antes de marcarse como
failed. Nada desaparece en silencio: el motivo del error queda guardado. - Health check cada 5 minutos - una cron consulta el estado real de la conexión en la Evolution API y actualiza el estado en el panel, para que sepas que WhatsApp se cayó antes de que el usuario reclame.
- QR Code dentro de GLPI - el número remitente se conecta escaneando el QR generado en la pestaña Conectores, sin salir del entorno.
- Self-hosted o gestionado - apunta a tu propia Evolution API (URL + API Key) o, en un entorno licenciado, usa la instancia gestionada por NexTool.
El número del destinatario sale del campo Teléfono móvil del usuario GLPI (glpi_users.mobile), normalizado automáticamente: el módulo quita la máscara, valida el largo (10 a 15 dígitos) y antepone el código de país 55 cuando un número brasileño llega sin él. Quien no tiene móvil registrado simplemente no recibe - el envío es silencioso, no genera error.
WhatsApp Bot frente a la notificación nativa de GLPI
| Recurso | GLPI nativo (correo SMTP) | WhatsApp Bot + Evolution API |
|---|---|---|
| Canal de entrega | Correo transaccional | WhatsApp (mensaje en el móvil) |
| Tasa de lectura | Baja (cae en spam, nadie lo abre) | Alta (canal del día a día) |
| Reenvío ante fallo | Cola, sin reintento configurable por canal | Cola propia, 3 intentos, lotes de 50/min |
| Origen del número | Correo del usuario | Campo Móvil (glpi_users.mobile), normalizado |
| Infraestructura | Servidor SMTP | Evolution API self-hosted o gestionada |
| Costo por mensaje | Cero (SMTP propio) | Cero (sin API de pago de Meta) |
Cómo activarlo
- Instala NexTool en tu GLPI y ve a Configuración > NexTool > Módulos.
- Activa el módulo WhatsApp Bot y haz clic en Configurar.
- En la pestaña Conectores, introduce la URL y la API Key de tu Evolution API y genera el QR Code para conectar el número remitente.
- En Administración > Usuarios, rellena el campo Teléfono móvil de los destinatarios (código de país+área+número, ej.: 5511999998888).
- Confirma que el cron externo de GLPI está corriendo - las CronTasks del módulo son
MODE_EXTERNALy no se disparan por acceso web.
# Las CronTasks del modulo (healthcheck 5min, cola 1min) son MODE_EXTERNAL.
# En GLPI 11 el disparador es front/cron.php (no hay consola glpi:cron):
* * * * * www-data /usr/bin/php /var/www/html/front/cron.php >/dev/null 2>&1
# La Evolution API recibe el envio en este endpoint (el modulo lo gestiona):
# POST {URL}/message/sendText/{instancia}
# header: apikey: ...tu_api_key...
# body: { "number": "5511999998888", "text": "..." }
Diagnóstico de entrega directo en la base
Cuando un cliente dice que "el WhatsApp no llegó", la respuesta casi siempre está en la tabla de cola. Dos consultas resuelven el triaje:
-- Panorama de la cola: que esta atascado y cuantos intentos tuvo
SELECT status, COUNT(*) AS total, MAX(attempts) AS max_intentos
FROM glpi_plugin_nextool_whatsappbot_queue
GROUP BY status;
-- Ultimos fallos con el motivo devuelto por la Evolution API
SELECT id, phone_number, attempts, last_error, created_at
FROM glpi_plugin_nextool_whatsappbot_queue
WHERE status = 'failed'
ORDER BY created_at DESC
LIMIT 20;
El error más común que leemos en last_error no es un bug del módulo: es un número mal formateado o la conexión de la instancia caída. Por eso existe el health check - si el estado del panel muestra desconectado, el QR expiró y hay que reescanearlo.
La trampa que solo quien opera conoce
Dos trampas rompen casi todo primer despliegue. La primera: el canal de WhatsApp Bot viaja por el modo SMS de GLPI. Eso significa que, para que el usuario reciba, el "seguir por SMS" debe estar activo en la notificación - mucha gente busca un modo llamado "WhatsApp" en la pantalla de notificaciones y no lo encuentra, porque aparece como SMS. La segunda: GLPI añade la firma estándar de correo ("-- " y el pie) al cuerpo de la plantilla, y en WhatsApp eso se vuelve ruido visual; el módulo elimina ese bloque en el envío, pero si creas tu propia plantilla evita volcar variables de firma de correo en ella. Y recuerda: como el número sale de glpi_users.mobile, un móvil mal registrado es la causa número uno de "no recibí" - normalizamos el código de país, pero no adivinamos un dígito cambiado.
Para quién es (y cuándo no usarlo)
WhatsApp Bot brilla donde el usuario final no sigue el correo: retail, salud, educación, servicios y cualquier mesa de servicio que atiende público externo. También es excelente para aprobaciones de gerentes que rara vez entran en GLPI. Cuándo no usarlo: si tu operación es 100% interna, con técnicos que viven conectados a GLPI, una campana de notificación in-app encaja mejor y no depende de una instancia de WhatsApp. Y si la política de la empresa prohíbe WhatsApp para comunicación de trabajo, respétala - el canal correcto es el que el equipo puede usar.
Compatibilidad
- GLPI: 10.0+ y 11.0+
- Plan: FREE
- Plugin: NexTool 4.2.1+
- Requisito previo: Evolution API instalada y accesible por el servidor de GLPI
Próximo paso
WhatsApp Bot es parte de NexTool. ¿Necesitas ayuda para levantar la Evolution API o calibrar qué eventos notificar por WhatsApp? Habla con el equipo.
Este contenido se produjo con ayuda de inteligencia artificial y fue revisado por el equipo de Nextool Solutions.