El correo no es una notificación en tiempo real. Para que un técnico sepa en el momento que un ticket cambió, el aviso tiene que aparecer dentro de GLPI. Dos soluciones lo resuelven por caminos opuestos: el plugin Unread resalta en los listados lo que aún no se ha visto, y el módulo Smart Notify (NexTool) coloca una campana global en la barra de navegación, con sonido y preferencias por usuario. Y hay un factor que decide antes que cualquier función: la versión de GLPI que operas.
El contexto: por qué el correo solo no basta
En GLPI estándar, toda notificación sale por correo. En la práctica, el técnico que mantiene el sistema abierto todo el día termina teniendo que:
- Alternar entre la cola de GLPI y la bandeja de entrada todo el tiempo;
- Rebuscar los correos de GLPI entre decenas de otros;
- Hacer clic en el enlace del correo solo para volver a un ticket que ya estaba en pantalla.
El resultado es conocido: respuestas tardías, follow-ups que nadie vio, validaciones detenidas esperando un clic. La notificación interna corta ese ir y venir - pero "interna" tiene dos significados muy distintos, y ahí es justo donde los dos plugins divergen.
Dos filosofías diferentes
Unread es un plugin de la comunidad con un alcance reducido: marcar visualmente, en los listados, los elementos (tickets, follow-ups) que aún no has abierto. Es pasivo - el resaltado aparece cuando ya estás mirando la lista. Sin sonido, sin campana, sin preferencia por usuario. Su gran ventaja es un coste operativo cercano a cero: nada corre en segundo plano.
Smart Notify (módulo de NexTool, GLPI 11) es activo. Agrega 11 fuentes de eventos que ya existen en GLPI - follow-ups, tareas, validaciones y soluciones de tickets, problemas y cambios, más documentos adjuntos y avisos manuales del administrador - y lo presenta todo en una campana en la barra de navegación, visible en cualquier pantalla. Trae contador de no leídas, sonido por prioridad, sincronización entre pestañas y un panel de preferencias donde cada técnico activa o desactiva lo que quiere recibir. Un punto clave: no crea eventos nuevos, solo reúne y señala lo que GLPI ya registró.
Comparativa directa
| Criterio | Smart Notify (NexTool) | Unread |
|---|---|---|
| Naturaleza | Módulo NexTool para GLPI 11 | Plugin de la comunidad |
| Dónde aparece el aviso | Campana global en la barra de navegación, en cualquier pantalla | Resaltado en el listado de elementos |
| Modelo de actualización | Polling en segundo plano (15 a 120s) | Al cargar el listado |
| Fuentes de eventos | 11 (follow-up, tarea, validación, solución, documento y avisos manuales de ticket/problema/cambio) | Estado leído / no leído de los elementos |
| Sonido por prioridad | Sí (4 tonos: subtle, default, alert, alarm) | No |
| Preferencias por usuario | Sí (11 tipos + sonido, por técnico) | No |
| Sincronización entre pestañas | Sí (BroadcastChannel + respaldo en localStorage) | No |
| Separador "Nuevos mensajes" en la línea de tiempo | Sí | No |
| Indicador en los listados | Puntos rojos por elemento no leído | Resaltado de la fila/elemento |
| Aviso manual del administrador (broadcast) | Sí (segmentación: todos, usuario, grupo, entidad) | No |
| Limpieza automática | Sí (cron diario, retención configurable) | No aplica |
| Coste en la base de datos por usuario activo | 1 consulta por ciclo de polling | Cercano a cero en segundo plano |
| GLPI compatible | 11 (glpi_major 11 en el manifiesto) | Depende de la versión del plugin instalado |
| Precio | Gratuito | Gratuito |
El trade-off que importa en la operación
En el mantenimiento de GLPI para clientes, el punto que siempre aparece no es la lista de funciones - es el coste del polling. Smart Notify actualiza la campana por polling (intervalo configurable de 15 a 120 segundos), no por WebSocket. Cada técnico con la pantalla abierta lanza una consulta a la base de datos por ciclo. En una operación con decenas de técnicos simultáneos, dejar el intervalo en 15s multiplica esas consultas sin ganancia real de percepción. Por eso, en producción, lo calibramos entre 30 y 45 segundos: imperceptible para el usuario y tranquilo para la base de datos. El módulo ayuda de dos maneras - pausa el polling cuando la pestaña queda inactiva (evento visibilitychange) y llama a session_write_close() al inicio de la petición de lectura, para que el poll no quede atascado detrás del bloqueo de la sesión del propio usuario.
El error más común que vemos en soporte es que el técnico se queje de que "no recibe notificación de su propio follow-up". Es intencional: Smart Notify excluye las acciones del propio usuario - no se te avisa de lo que tú mismo escribiste. Otro ajuste que siempre hacemos es desactivar la notificación de documentos por defecto (es ruidosa en instancias que adjuntan muchos archivos) y mantener solo los eventos que exigen acción. Y el factor que decide el proyecto de entrada: Smart Notify es GLPI 11. Si el cliente sigue en GLPI 10, la conversación cambia - lo realista ahí es Unread (o un resaltado de lista equivalente), porque la campana no corre en el 10.
Configuración que usamos en producción
# Smart Notify - configuracion base (GLPI 11)
# Panel NexTool > Modulos > Smart Notify > pestaña Configuracion
refresh_interval = 30 # segundos (rango 15-120); 30-45 es el punto de equilibrio
max_notifications = 50
retention_days = 90 # limpieza automatica via cron smartnotify_cleanup
notify_document = 0 # off: los adjuntos generan mucho ruido
notify_new_problem = 0 # off: evento poco frecuente
sound_urgent = alarm # tonos por prioridad: subtle | default | alert | alarm
# 1) Verificar la config efectiva directo en la base de datos
SELECT config FROM glpi_plugin_nextool_main_modules WHERE module_key = 'smartnotify';
# 2) Resetear el OPcache de FPM tras activar/actualizar (validate_timestamps=Off)
docker exec glpi_app_prod kill -USR2 $(docker exec glpi_app_prod pgrep -o php-fpm)
# 3) Confirmar la limpieza automatica en GLPI:
# Configuracion > Acciones automaticas > smartnotify_cleanup
Veredicto por escenario
Elige Smart Notify cuando: la operación corre en GLPI 11, los técnicos mantienen la interfaz abierta todo el día, hay múltiples entidades y perfiles, y necesitas un aviso activo (campana + sonido) con preferencias por persona y broadcast del administrador. Es el escenario de service desk con volumen, donde perder un follow-up cuesta SLA.
Elige Unread cuando: estás en GLPI 10, o solo quieres resaltar lo que no se ha visto en los listados sin nada corriendo en segundo plano, o el equipo es pequeño y el correo ya cubre el aviso - Unread resuelve solo "lo que aún no he abierto". Es la opción de huella mínima.
Los dos no son competidores directos: Unread cubre una parte (estado no leído en lista) que Smart Notify también entrega, con puntos rojos en los listados y separador "Nuevos mensajes" en la línea de tiempo. Correr ambos juntos en GLPI 11 es redundancia - elige uno.
Coste y esfuerzo
Los dos son gratuitos. Lo que difiere es el esfuerzo: Unread se instala y listo, sin configuración ni mantenimiento. Smart Notify exige una configuración inicial (intervalo de polling, tipos de evento, perfiles autorizados) y tiene una tarea de cron (smartnotify_cleanup) que limpia notificaciones leídas y logs según la retención - corre a diario, sin intervención. Una vez calibrado también es "instalar y olvidar", pero la calibración del polling y de los tipos es lo que separa un despliegue limpio de uno ruidoso.
¿Necesitas notificación también fuera de GLPI - WhatsApp, Telegram, Teams? La campana alcanza a quien está dentro del sistema; para llegar a quien está fuera, combínala con los módulos de notificación externa de NexTool. Si quieres, te ayudamos a diseñar el flujo de avisos en el mantenimiento de tu GLPI.
Revisado por el equipo de NexTool Solutions.