Smart Notify vs Unread : notifications internes dans GLPI

Comparatif entre le module Smart Notify (NexTool) et le plugin Unread pour les notifications internes dans GLPI, sans dépendre de l'e-mail. Tableau critère par critère, verdict par scénario, le compromis de polling qui compte en exploitation et la configuration que nous utilisons en production.

Dans cet article7 sections

L'e-mail n'est pas une notification en temps réel. Pour qu'un technicien sache au moment même qu'un ticket a changé, l'alerte doit apparaître dans GLPI. Deux solutions y répondent par des voies opposées : le plugin Unread met en évidence, dans les listes, ce qui n'a pas encore été vu, et le module Smart Notify (NexTool) place une cloche globale dans la barre de navigation, avec du son et des préférences par utilisateur. Et un facteur tranche avant toute fonctionnalité : la version de GLPI que vous exploitez.

Le contexte : pourquoi l'e-mail seul ne suffit pas

Dans GLPI standard, toute notification part par e-mail. En pratique, le technicien qui garde le système ouvert toute la journée finit par devoir :

  1. Basculer sans cesse entre la file GLPI et la boîte de réception ;
  2. Repêcher les e-mails de GLPI parmi des dizaines d'autres ;
  3. Cliquer sur le lien de l'e-mail juste pour revenir à un ticket déjà à l'écran.

Le résultat est connu : réponses tardives, follow-ups que personne n'a vus, validations bloquées en attente d'un clic. La notification interne coupe ces allers-retours - mais "interne" a deux sens très différents, et c'est justement là que les deux plugins divergent.

Deux philosophies différentes

Unread est un plugin communautaire au périmètre resserré : signaler visuellement, dans les listes, les éléments (tickets, follow-ups) que vous n'avez pas encore ouverts. Il est passif - la mise en évidence apparaît quand vous regardez déjà la liste. Pas de son, pas de cloche, pas de préférence par utilisateur. Son grand atout est un coût d'exploitation proche de zéro : rien ne tourne en arrière-plan.

Smart Notify (module NexTool, GLPI 11) est actif. Il agrège 11 sources d'événements déjà présentes dans GLPI - follow-ups, tâches, validations et solutions de tickets, problèmes et changements, plus documents joints et messages manuels de l'administrateur - et présente le tout dans une cloche de la barre de navigation, visible sur n'importe quel écran. Il apporte un compteur de non-lus, un son par priorité, une synchronisation entre onglets et un panneau de préférences où chaque technicien active ou désactive ce qu'il veut recevoir. Point clé : il ne crée pas de nouveaux événements, il rassemble et signale seulement ce que GLPI a déjà enregistré.

Comparatif direct

CritèreSmart Notify (NexTool)Unread
NatureModule NexTool pour GLPI 11Plugin communautaire
Où apparaît l'alerteCloche globale dans la barre de navigation, sur tout écranMise en évidence dans la liste des éléments
Modèle de mise à jourPolling en arrière-plan (15 à 120s)Au chargement de la liste
Sources d'événements11 (follow-up, tâche, validation, solution, document et alertes manuelles de ticket/problème/changement)État lu / non lu des éléments
Son par prioritéOui (4 tonalités : subtle, default, alert, alarm)Non
Préférences par utilisateurOui (11 types + son, par technicien)Non
Synchronisation entre ongletsOui (BroadcastChannel + repli localStorage)Non
Séparateur "Nouveaux messages" dans la timelineOuiNon
Indicateur dans les listesPoints rouges par élément non luMise en évidence de la ligne/élément
Message manuel de l'administrateur (broadcast)Oui (ciblage : tous, utilisateur, groupe, entité)Non
Nettoyage automatiqueOui (cron quotidien, rétention configurable)Non applicable
Coût en base par utilisateur actif1 requête par cycle de pollingProche de zéro en arrière-plan
GLPI pris en charge11 (glpi_major 11 dans le manifeste)Dépend de la version du plugin installé
PrixGratuitGratuit

Le compromis qui compte en exploitation

En maintenance de GLPI pour des clients, le point qui revient toujours n'est pas la liste des fonctionnalités - c'est le coût du polling. Smart Notify rafraîchit la cloche par polling (intervalle configurable de 15 à 120 secondes), pas par WebSocket. Chaque technicien ayant l'écran ouvert déclenche une requête en base à chaque cycle. Dans une exploitation avec des dizaines de techniciens simultanés, laisser l'intervalle à 15s multiplie ces requêtes sans gain réel de perception. C'est pourquoi, en production, nous le calibrons entre 30 et 45 secondes : imperceptible pour l'utilisateur et tranquille pour la base. Le module aide de deux façons - il met le polling en pause quand l'onglet devient inactif (événement visibilitychange) et appelle session_write_close() au début de la requête de lecture, pour que le poll ne reste pas coincé derrière le verrou de session de l'utilisateur lui-même.

L'erreur la plus fréquente que nous voyons au support, c'est le technicien qui se plaint de "ne pas recevoir de notification pour son propre follow-up". C'est volontaire : Smart Notify exclut les actions de l'utilisateur lui-même - vous n'êtes pas alerté de ce que vous avez écrit vous-même. Un autre réglage que nous faisons toujours est de désactiver la notification des documents par défaut (bruyante sur les instances qui joignent beaucoup de fichiers) et de ne garder que les événements qui appellent une action. Et le facteur qui décide le projet d'emblée : Smart Notify, c'est GLPI 11. Si le client est encore sous GLPI 10, la discussion change - le réaliste là est Unread (ou une mise en évidence de liste équivalente), car la cloche ne tourne pas sur 10.

Configuration que nous utilisons en production

# Smart Notify - configuration de base (GLPI 11)
# Panneau NexTool > Modules > Smart Notify > onglet Configuration
refresh_interval   = 30      # secondes (plage 15-120); 30-45 est le bon compromis
max_notifications  = 50
retention_days     = 90      # nettoyage automatique via le cron smartnotify_cleanup
notify_document    = 0       # off : les pieces jointes generent trop de bruit
notify_new_problem = 0       # off : evenement peu frequent
sound_urgent       = alarm   # tonalites par priorite : subtle | default | alert | alarm

# 1) Verifier la config effective directement en base
SELECT config FROM glpi_plugin_nextool_main_modules WHERE module_key = 'smartnotify';

# 2) Reinitialiser l'OPcache de FPM apres activation/mise a jour (validate_timestamps=Off)
docker exec glpi_app_prod kill -USR2 $(docker exec glpi_app_prod pgrep -o php-fpm)

# 3) Confirmer le nettoyage automatique dans GLPI :
#    Configuration > Actions automatiques > smartnotify_cleanup

Verdict par scénario

Choisissez Smart Notify quand : l'exploitation tourne sous GLPI 11, les techniciens gardent l'interface ouverte toute la journée, il y a plusieurs entités et profils, et vous avez besoin d'une alerte active (cloche + son) avec préférences par personne et broadcast de l'administrateur. C'est le scénario du service desk à volume, où un follow-up manqué coûte du SLA.

Choisissez Unread quand : vous êtes sous GLPI 10, ou vous voulez seulement mettre en évidence ce qui n'a pas été vu dans les listes sans rien qui tourne en arrière-plan, ou l'équipe est petite et l'e-mail suffit déjà pour l'alerte - Unread ne résout que "ce que je n'ai pas encore ouvert". C'est l'option à empreinte minimale.

Les deux ne sont pas des concurrents directs : Unread couvre une partie (état non lu en liste) que Smart Notify livre aussi, avec des points rouges dans les listes et un séparateur "Nouveaux messages" dans la timeline. Faire tourner les deux ensemble sous GLPI 11 est de la redondance - choisissez-en un.

Coût et effort

Les deux sont gratuits. Ce qui diffère, c'est l'effort : Unread s'installe et c'est tout, sans configuration ni maintenance. Smart Notify exige un réglage initial (intervalle de polling, types d'événements, profils autorisés) et a une tâche cron (smartnotify_cleanup) qui nettoie les notifications lues et les logs selon la rétention - tourne chaque jour, sans intervention. Une fois calibré, c'est aussi "installer et oublier", mais le calibrage du polling et des types est ce qui sépare un déploiement propre d'un déploiement bruyant.

Besoin de notifications aussi hors de GLPI - WhatsApp, Telegram, Teams ? La cloche atteint ceux qui sont dans le système ; pour toucher ceux qui sont dehors, combinez-la avec les modules de notification externe de NexTool. Si vous le souhaitez, nous aidons à concevoir le flux d'alertes dans la maintenance de votre GLPI.


Révisé par l'équipe NexTool Solutions.

Questions fréquentes

Non. Nativement, toute notification part par e-mail. Des plugins comme Smart Notify (NexTool) et Unread ajoutent l'alerte dans l'interface. Smart Notify rafraîchit la cloche par polling (intervalle de 15 à 120 secondes), pas par WebSocket - c'est donc du 'quasi temps réel', avec la latence de l'intervalle configuré.

Non. Smart Notify est un module pour GLPI 11 (le manifeste déclare glpi_major 11). Si vous êtes encore sous GLPI 10, l'option réaliste pour signaler ce qui n'a pas été vu est le plugin Unread ou une mise en évidence de liste équivalente - la cloche de la barre de navigation ne tourne pas sur 10.

Cela dépend de l'intervalle et du nombre de techniciens simultanés : chaque onglet ouvert fait une requête par cycle. En production, nous utilisons 30 à 45 secondes comme équilibre ; 15s multiplie les requêtes sans gain réel de perception. Le module met aussi le polling en pause quand l'onglet devient inactif et appelle session_write_close() à la lecture, évitant que le poll ne reste coincé derrière le verrou de session de l'utilisateur.

C'est intentionnel. Le module exclut les actions de l'utilisateur lui-même - vous n'êtes pas alerté du follow-up, de la tâche ou de la solution que vous avez écrits vous-même, seulement de ce que les autres ont fait sur les éléments où vous êtes impliqué (demandeur, attribué, observateur ou groupe).

Sous GLPI 11, non. Smart Notify couvre déjà le scénario d'Unread - il signale les éléments non lus avec des points rouges dans les listes et ajoute un séparateur 'Nouveaux messages' dans la timeline. Faire tourner les deux est redondant. Unread a du sens seul quand vous êtes sous GLPI 10 ou que vous voulez l'empreinte minimale de simplement mettre en évidence ce qui n'a pas été ouvert.

Besoin d'aide ?