Smart Notify vs Unread: notificações internas no GLPI

Comparativo entre o módulo Smart Notify (NexTool) e o plugin Unread para notificações internas no GLPI, sem depender do email. Tabela critério a critério, veredito por cenário, o trade-off de polling que importa na operação e a configuração que usamos em produção.

Neste artigo7 secções

O email não é notificação em tempo real. Para um técnico saber na hora que um pedido mudou, o aviso tem de aparecer dentro do GLPI. Duas soluções resolvem isto por caminhos opostos: o plugin Unread realça nas listagens o que ainda não foi visto, e o módulo Smart Notify (NexTool) coloca uma campainha global na barra de navegação, com som e preferências por utilizador. E há um fator que decide antes de qualquer funcionalidade: a versão do GLPI que gere.

O contexto: porque só o email não chega

No GLPI padrão, toda a notificação sai por email. Na prática, o técnico que mantém o sistema aberto o dia inteiro acaba por ter de:

  1. Alternar entre a fila do GLPI e a caixa de entrada a toda a hora;
  2. Garimpar os emails do GLPI no meio de dezenas de outros;
  3. Clicar na ligação do email só para voltar a um pedido que já estava no ecrã.

O resultado é conhecido: resposta atrasada, follow-up que ninguém viu, validação parada à espera de um clique. A notificação interna corta este vai-e-vem - mas "interna" tem dois significados bem diferentes, e é justamente aí que os dois plugins divergem.

Duas filosofias diferentes

Unread é um plugin da comunidade com um âmbito enxuto: assinalar visualmente, nas listagens, os itens (pedidos, follow-ups) que ainda não abriu. É passivo - o realce surge quando já está a olhar para a lista. Sem som, sem campainha, sem preferência por utilizador. A grande vantagem é um custo operacional próximo de zero: nada corre em segundo plano.

Smart Notify (módulo do NexTool, GLPI 11) é ativo. Agrega 11 fontes de eventos que já existem no GLPI - follow-ups, tarefas, validações e soluções de pedidos, problemas e mudanças, além de documentos anexados e avisos manuais do administrador - e apresenta tudo numa campainha na barra de navegação, visível em qualquer ecrã. Traz contador de não lidas, som por prioridade, sincronização entre separadores e um painel de preferências onde cada técnico liga ou desliga o que quer receber. Um ponto importante: não cria eventos novos, apenas reúne e sinaliza o que o GLPI já registou.

Comparativo direto

CritérioSmart Notify (NexTool)Unread
NaturezaMódulo NexTool para GLPI 11Plugin da comunidade
Onde aparece o avisoCampainha global na barra de navegação, em qualquer ecrãRealce na listagem de itens
Modelo de atualizaçãoPolling em segundo plano (15 a 120s)Ao carregar a listagem
Fontes de eventos11 (follow-up, tarefa, validação, solução, documento e avisos manuais de pedido/problema/mudança)Estado lido / não lido dos itens
Som por prioridadeSim (4 tons: subtle, default, alert, alarm)Não
Preferências por utilizadorSim (11 tipos + som, por técnico)Não
Sincronização entre separadoresSim (BroadcastChannel + recurso a localStorage)Não
Separador "Novas mensagens" na cronologiaSimNão
Indicador nas listagensPontos vermelhos por item não lidoRealce da linha/item
Aviso manual do administrador (broadcast)Sim (segmentação: todos, utilizador, grupo, entidade)Não
Limpeza automáticaSim (cron diário, retenção configurável)Não aplicável
Custo na base de dados por utilizador ativo1 consulta por ciclo de pollingPróximo de zero em segundo plano
GLPI suportado11 (glpi_major 11 no manifesto)Depende da versão do plugin instalado
PreçoGratuitoGratuito

O trade-off que importa na operação

Na sustentação de GLPI para clientes, o ponto que aparece sempre não é a lista de funcionalidades - é o custo do polling. O Smart Notify atualiza a campainha por polling (intervalo configurável de 15 a 120 segundos), não por WebSocket. Cada técnico com o ecrã aberto dispara uma consulta à base de dados a cada ciclo. Numa operação com dezenas de técnicos simultâneos, deixar o intervalo em 15s multiplica essas consultas sem ganho real de perceção. Por isso, em produção, calibramos entre 30 e 45 segundos: impercetível para o utilizador e leve para a base de dados. O módulo ajuda de duas formas - pausa o polling quando o separador fica inativo (evento visibilitychange) e chama session_write_close() logo no início do pedido de leitura, para o poll não ficar preso atrás do bloqueio da sessão do próprio utilizador.

O erro mais comum que vemos no suporte é o técnico queixar-se de que "não recebe notificação do próprio follow-up". É propositado: o Smart Notify exclui as ações do próprio utilizador - não é avisado do que escreveu você mesmo. Outro ajuste que fazemos sempre é desligar a notificação de documentos por predefinição (é ruidosa em instâncias que anexam muitos ficheiros) e manter apenas os eventos que exigem ação. E o fator que decide o projeto à partida: o Smart Notify é GLPI 11. Se o cliente ainda está em GLPI 10, a conversa muda - o realista aí é o Unread (ou um realce de lista equivalente), porque a campainha não corre no 10.

Configuração que usamos em produção

# Smart Notify - configuracao base (GLPI 11)
# Painel NexTool > Modulos > Smart Notify > separador Configuracao
refresh_interval   = 30      # segundos (intervalo 15-120); 30-45 e o ponto de equilibrio
max_notifications  = 50
retention_days     = 90      # limpeza automatica via cron smartnotify_cleanup
notify_document    = 0       # off: os anexos geram muito ruido
notify_new_problem = 0       # off: evento pouco frequente
sound_urgent       = alarm   # tons por prioridade: subtle | default | alert | alarm

# 1) Conferir a config efetiva diretamente na base de dados
SELECT config FROM glpi_plugin_nextool_main_modules WHERE module_key = 'smartnotify';

# 2) Repor a OPcache do FPM apos ativar/atualizar (validate_timestamps=Off)
docker exec glpi_app_prod kill -USR2 $(docker exec glpi_app_prod pgrep -o php-fpm)

# 3) Confirmar a limpeza automatica no GLPI:
#    Configuracao > Acoes automaticas > smartnotify_cleanup

Veredito por cenário

Escolha o Smart Notify quando: a operação corre em GLPI 11, os técnicos mantêm a interface aberta o dia todo, há múltiplas entidades e perfis, e precisa de um aviso ativo (campainha + som) com preferência por pessoa e broadcast do administrador. É o cenário de service desk com volume, onde perder um follow-up custa SLA.

Escolha o Unread quando: está em GLPI 10, ou quer apenas realçar o que não foi visto nas listagens sem nada a correr em segundo plano, ou a equipa é pequena e o email já dá conta do aviso - o Unread resolve só o "o que ainda não abri". É a opção de pegada mínima.

Os dois não são concorrentes diretos: o Unread cobre uma parte (não leitura em lista) que o Smart Notify também entrega, com pontos vermelhos nas listagens e separador "Novas mensagens" na cronologia. Correr os dois juntos em GLPI 11 é redundância - escolha um.

Custo e esforço

Os dois são gratuitos. O que difere é o esforço: o Unread instala e pronto, sem configuração e sem manutenção. O Smart Notify exige uma configuração inicial (intervalo de polling, tipos de evento, perfis autorizados) e tem uma tarefa de cron (smartnotify_cleanup) que limpa notificações lidas e registos conforme a retenção - corre diariamente, sem intervenção. Depois de calibrado também é "instalar e esquecer", mas a calibragem do polling e dos tipos é o que separa uma implementação limpa de uma ruidosa.

Precisa de notificação também fora do GLPI - WhatsApp, Telegram, Teams? A campainha alcança quem está dentro do sistema; para chegar a quem está fora, combine-a com os módulos de notificação externa do NexTool. Se quiser, ajudamos a desenhar o fluxo de avisos na sustentação do seu GLPI.


Revisto pela equipa NexTool Solutions.

Perguntas Frequentes

Não. Nativamente, toda a notificação sai por email. Plugins como o Smart Notify (NexTool) e o Unread acrescentam o aviso dentro da interface. O Smart Notify atualiza a campainha por polling (intervalo de 15 a 120 segundos), não por WebSocket - por isso é 'quase em tempo real', com a latência do intervalo configurado.

Não. O Smart Notify é um módulo para GLPI 11 (o manifesto declara glpi_major 11). Se ainda está em GLPI 10, a opção realista para sinalizar o que não foi visto é o plugin Unread ou um realce de listagem equivalente - a campainha na barra de navegação não corre no 10.

Depende do intervalo e do número de técnicos simultâneos: cada separador aberto faz uma consulta por ciclo. Em produção usamos 30 a 45 segundos como equilíbrio; 15s multiplica consultas sem ganho real de perceção. O módulo ainda pausa o polling quando o separador fica inativo e chama session_write_close() na leitura, evitando que o poll fique preso atrás do bloqueio da sessão do próprio utilizador.

É propositado. O módulo exclui as ações do próprio utilizador - não é avisado do follow-up, tarefa ou solução que escreveu você mesmo, apenas do que os outros fizeram nos itens em que está envolvido (requerente, atribuído, observador ou grupo).

No GLPI 11, não. O Smart Notify já cobre o cenário do Unread - assinala itens não lidos com pontos vermelhos nas listagens e coloca um separador 'Novas mensagens' na cronologia. Correr os dois é redundância. O Unread faz sentido isolado quando está em GLPI 10 ou quer a pegada mínima de apenas realçar o que não foi aberto.

Precisa de ajuda?