Notificações do GLPI no WhatsApp com Evolution API

O GLPI só notifica por e-mail, e o e-mail cai em spam. O módulo gratuito WhatsApp Bot liga o GLPI à Evolution API (open source) e entrega notificação de chamado no WhatsApp, com fila de retry e conexão self-hosted. Veja como o canal viaja pelo modo SMS, de onde vem o número, o SQL de diagnóstico da fila e as armadilhas de campo da primeira implantação.

WhatsApp é o canal que seu usuário abre dezenas de vezes por dia - e o GLPI, por padrão, só sabe falar por e-mail. O módulo WhatsApp Bot do NexTool liga o GLPI à Evolution API (open source, protocolo Baileys) e entrega notificação de chamado direto no WhatsApp, com fila que reprocessa falha e conexão na sua própria infraestrutura. Na sustentação de service desks aprendemos que o canal certo muda a taxa de resposta de aprovação e de pesquisa de satisfação - mas a integração tem armadilhas de configuração que este guia mostra por baixo do capô.

O problema

O GLPI notifica por e-mail transacional através da fila queuednotification. Funciona, mas o e-mail corporativo cai em spam, o usuário final não mora no webmail e o gestor que precisa aprovar um chamado só descobre a pendência quando alguém liga cobrando. O resultado no dia a dia é aprovação represada por horas, pesquisa de satisfação com taxa de resposta perto de zero e equipe de suporte gastando tempo em cobrança manual. Trocar o e-mail por um canal que a pessoa realmente lê resolve a maior parte disso - e no Brasil esse canal é o WhatsApp.

A saída comercial (WhatsApp Business API oficial) é cara, depende de aprovação de template pela Meta e amarra você a um contrato externo. Para quem já opera infraestrutura própria, a Evolution API é a alternativa self-hosted, e o WhatsApp Bot a conecta ao GLPI usando a infraestrutura nativa de notificações - sem gambiarra no core.

Como o WhatsApp Bot funciona

O módulo registra um modo de notificação próprio reaproveitando o canal SMS do GLPI (Notification_NotificationTemplate::registerMode(MODE_SMS)). Quando um evento de chamado dispara, o GLPI resolve o destinatário, o módulo busca o número, monta a mensagem e envia via Evolution API - tudo transparente para o operador.

  • Notificações próprias por evento - no install, o módulo cria nove notificações WhatsApp dedicadas (Novo Chamado, Novo Acompanhamento, Chamado Solucionado, Pesquisa de Satisfação, Pedido de Aprovação, Resposta de Aprovação e as três de senha), cada uma com destinatários próprios. A criação é idempotente por nome: se você editar o texto na interface do GLPI, o reinstall preserva a sua edição.
  • Fila com retry automático - mensagem que falha por instabilidade da conexão entra na tabela de fila e é reprocessada em lotes de até 50 a cada 1 minuto, com no máximo 3 tentativas antes de marcar como failed. Nada some silenciosamente: o motivo do erro fica gravado.
  • Health check a cada 5 minutos - uma cron consulta o estado real da conexão na Evolution API e atualiza o status no painel, para você saber que o WhatsApp caiu antes do usuário reclamar.
  • QR Code no próprio GLPI - a conexão do número remetente é feita escaneando o QR gerado na aba Conectores, sem sair do ambiente.
  • Self-hosted ou gerenciado - aponte para a sua Evolution API (URL + API Key) ou, em ambiente licenciado, use a instância gerenciada pela NexTool.

O número do destinatário vem do campo Celular do usuário GLPI (glpi_users.mobile), normalizado automaticamente: o módulo tira máscara, valida o comprimento (10 a 15 dígitos) e prefixa o DDI 55 quando o número brasileiro vem sem ele. Quem não tem celular cadastrado simplesmente não recebe - o envio é silencioso, não gera erro.

WhatsApp Bot x notificação nativa do GLPI

RecursoGLPI nativo (e-mail SMTP)WhatsApp Bot + Evolution API
Canal de entregaE-mail transacionalWhatsApp (mensagem no celular)
Taxa de leituraBaixa (cai em spam, ninguém abre)Alta (canal do dia a dia)
Reenvio em falhaFila, sem retry configurável por canalFila própria, 3 tentativas, lotes de 50/min
Origem do númeroE-mail do usuárioCampo Celular (glpi_users.mobile), normalizado
InfraestruturaServidor SMTPEvolution API self-hosted ou gerenciada
Custo por mensagemZero (SMTP próprio)Zero (sem API paga da Meta)

Como ativar

  1. Instale o NexTool no seu GLPI e acesse Configuração > NexTool > Módulos.
  2. Ative o módulo WhatsApp Bot e clique em Configurar.
  3. Na aba Conectores, informe a URL e a API Key da sua Evolution API e gere o QR Code para conectar o número remetente.
  4. Em Administração > Usuários, preencha o campo Celular dos destinatários (formato DDI+DDD+número, ex.: 5511999998888).
  5. Confirme que o cron externo do GLPI está rodando - as CronTasks do módulo são MODE_EXTERNAL e não disparam por acesso web.
# As CronTasks do modulo (healthcheck 5min, fila 1min) sao MODE_EXTERNAL.
# No GLPI 11 o disparador e front/cron.php (nao ha console glpi:cron):
* * * * * www-data /usr/bin/php /var/www/html/front/cron.php >/dev/null 2>&1

# A Evolution API recebe o envio neste endpoint (o modulo cuida disso):
#   POST {URL}/message/sendText/{instancia}
#   header: apikey: ...sua_api_key...
#   body:   { "number": "5511999998888", "text": "..." }

Diagnóstico de entrega direto no banco

Quando um cliente diz que "o WhatsApp não chegou", a resposta quase sempre está na tabela de fila. Duas consultas resolvem a triagem:

-- Panorama da fila: o que esta preso e quantas tentativas ja teve
SELECT status, COUNT(*) AS total, MAX(attempts) AS max_tentativas
FROM glpi_plugin_nextool_whatsappbot_queue
GROUP BY status;

-- Ultimas falhas com o motivo devolvido pela 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;

O erro mais comum que lemos em last_error não é bug do módulo: é número fora de formato ou conexão da instância caída. Por isso o health check existe - se o status no painel está desconectado, o QR expirou e precisa ser reescaneado.

A armadilha que só quem opera conhece

Duas pegadinhas derrubam quase toda primeira implantação. A primeira: o canal do WhatsApp Bot viaja pelo modo SMS do GLPI. Isso significa que, para o usuário receber, o "seguir por SMS" precisa estar ativo na notificação - muita gente procura um modo chamado "WhatsApp" na tela de notificações e não acha, porque ele aparece como SMS. A segunda: o GLPI anexa a assinatura padrão de e-mail ("-- " e o rodapé) ao corpo do template, e no WhatsApp isso vira ruído visual; o módulo remove esse bloco no envio, mas se você criar um template próprio evite despejar variáveis de assinatura de e-mail nele. E lembre: como o número sai de glpi_users.mobile, um cadastro de celular errado é a causa nº 1 de "não recebi" - normalizamos o DDI, mas não adivinhamos um dígito trocado.

Para quem é indicado (e quando não usar)

O WhatsApp Bot brilha onde o usuário final não acompanha e-mail: varejo, saúde, educação, serviços e qualquer service desk que atende público externo. Também é excelente para aprovações de gestores que raramente entram no GLPI. Quando não usar: se a sua operação é 100% interna, com técnicos que vivem logados no GLPI, um sino de notificação in-app resolve melhor e sem depender de uma instância de WhatsApp. E se a política da empresa proíbe WhatsApp para comunicação de trabalho, respeite - o canal certo é o que o time pode usar.

Compatibilidade

  • GLPI: 10.0+ e 11.0+
  • Plano: FREE
  • Plugin: NexTool 4.2.1+
  • Pré-requisito: Evolution API instalada e acessível pelo servidor do GLPI

Próximo passo

O WhatsApp Bot faz parte do NexTool. Precisa de ajuda para subir a Evolution API ou calibrar quais eventos notificar por WhatsApp? Fale com a equipe.


Este conteúdo foi produzido com auxílio de inteligência artificial e revisado pela equipe Nextool Solutions.

Perguntas Frequentes

O módulo gratuito WhatsApp Bot do NexTool registra um canal de notificação que reaproveita o modo SMS do GLPI e envia as mensagens via Evolution API. No install ele cria nove notificações WhatsApp por evento (novo chamado, acompanhamento, solução, satisfação, aprovação e senha) e entrega com fila de retry. O número do destinatário vem do campo Celular do usuário.

Não. O módulo usa a Evolution API, open source e baseada no protocolo Baileys, que funciona com WhatsApp pessoal ou Business sem custo de mensagem da Meta e sem aprovação de template. Você conecta o número remetente escaneando um QR Code direto no painel do GLPI.

Sim. Tanto o GLPI quanto a Evolution API podem rodar na sua infraestrutura; você informa apenas a URL e a API Key na aba Conectores. Em ambientes licenciados também é possível usar uma instância gerenciada pela NexTool, mas a conexão self-hosted mantém os dados no seu servidor.

Ela entra numa fila e é reprocessada automaticamente em lotes de até 50 a cada 1 minuto, com no máximo 3 tentativas. Se esgotar as tentativas, o registro fica marcado como failed com o motivo do erro gravado em last_error - normalmente número fora de formato ou instância desconectada, não bug do módulo. Um health check a cada 5 minutos avisa quando a conexão cai.

As duas causas mais comuns são o campo Celular vazio ou mal preenchido (o número sai de glpi_users.mobile, normalizado com DDI 55 para o Brasil) e o fato de o canal viajar pelo modo SMS do GLPI - se o 'seguir por SMS' não estiver ativo na notificação, nada é enviado. Vale também checar o status da conexão no painel: se o QR expirou, precisa reescanear.

Sim. O módulo é FREE, compatível com GLPI 10.0+ e 11.0+, e requer o plugin NexTool 4.2.1 ou superior. O único pré-requisito externo é ter uma Evolution API acessível pelo servidor do GLPI.

Precisa de ajuda?