O WhatsApp é o canal que o seu utilizador abre dezenas de vezes por dia - e o GLPI, por omissão, só sabe falar por e-mail. O módulo WhatsApp Bot da NexTool liga o GLPI à Evolution API (open source, protocolo Baileys) e entrega a notificação de ticket diretamente no WhatsApp, com uma fila que reprocessa falhas e a ligação na sua própria infraestrutura. Na sustentação de service desks aprendemos que o canal certo muda a taxa de resposta de aprovações e de inquéritos de satisfação - mas a integração tem armadilhas de configuração que este guia mostra por dentro.
O problema
O GLPI notifica por e-mail transacional através da fila queuednotification. Funciona, mas o e-mail empresarial cai no spam, o utilizador final não vive no webmail e o gestor que precisa de aprovar um ticket só descobre a pendência quando alguém liga a cobrar. O resultado no dia a dia são aprovações represadas durante horas, inquéritos de satisfação com taxa de resposta perto de zero e uma equipa de suporte a gastar tempo em cobranças manuais. Trocar o e-mail por um canal que a pessoa realmente lê resolve a maior parte - e no Brasil esse canal é o WhatsApp.
A via comercial (a WhatsApp Business API oficial) é cara, depende da aprovação de modelos pela Meta e prende-o a um contrato externo. Para quem já opera infraestrutura própria, a Evolution API é a alternativa self-hosted, e o WhatsApp Bot liga-a ao GLPI usando a infraestrutura nativa de notificações - sem remendos no core.
Como funciona o WhatsApp Bot
O módulo regista um modo de notificação próprio reaproveitando o canal SMS do GLPI (Notification_NotificationTemplate::registerMode(MODE_SMS)). Quando um evento de ticket dispara, o GLPI resolve o destinatário, o módulo procura o número, compõe a mensagem e envia através da Evolution API - de forma transparente para o operador.
- Notificações próprias por evento - na instalação, o módulo cria nove notificações WhatsApp dedicadas (Novo Ticket, Novo Seguimento, Ticket Resolvido, Inquérito de Satisfação, Pedido de Aprovação, Resposta de Aprovação e as três de palavra-passe), cada uma com destinatários próprios. A criação é idempotente por nome: se editar o texto na interface do GLPI, uma reinstalação preserva a sua edição.
- Fila com repetição automática - uma mensagem que falha por instabilidade da ligação entra na tabela de fila e é reprocessada em lotes de até 50 a cada 1 minuto, com um máximo de 3 tentativas antes de ser marcada como
failed. Nada desaparece em silêncio: o motivo do erro fica gravado. - Health check a cada 5 minutos - uma tarefa cron consulta o estado real da ligação na Evolution API e atualiza o estado no painel, para saber que o WhatsApp caiu antes de o utilizador reclamar.
- QR Code dentro do GLPI - o número remetente é ligado ao ler o QR gerado no separador Conectores, sem sair do ambiente.
- Self-hosted ou gerido - aponte para a sua Evolution API (URL + API Key) ou, em ambiente licenciado, use a instância gerida pela NexTool.
O número do destinatário vem do campo Telemóvel do utilizador GLPI (glpi_users.mobile), normalizado automaticamente: o módulo retira a máscara, valida o comprimento (10 a 15 dígitos) e antepõe o indicativo 55 quando um número brasileiro chega sem ele. Quem não tem telemóvel registado simplesmente não recebe - o envio é silencioso, não gera erro.
WhatsApp Bot face à notificação nativa do GLPI
| Recurso | GLPI nativo (e-mail SMTP) | WhatsApp Bot + Evolution API |
|---|---|---|
| Canal de entrega | E-mail transacional | WhatsApp (mensagem no telemóvel) |
| Taxa de leitura | Baixa (cai no spam, ninguém abre) | Alta (canal do dia a dia) |
| Reenvio em falha | Fila, sem repetição configurável por canal | Fila própria, 3 tentativas, lotes de 50/min |
| Origem do número | E-mail do utilizador | Campo Telemóvel (glpi_users.mobile), normalizado |
| Infraestrutura | Servidor SMTP | Evolution API self-hosted ou gerida |
| Custo por mensagem | Zero (SMTP próprio) | Zero (sem API paga da Meta) |
Como ativar
- Instale o NexTool no seu GLPI e aceda a Configuração > NexTool > Módulos.
- Ative o módulo WhatsApp Bot e clique em Configurar.
- No separador Conectores, indique o URL e a API Key da sua Evolution API e gere o QR Code para ligar o número remetente.
- Em Administração > Utilizadores, preencha o campo Telemóvel dos destinatários (indicativo+área+número, ex.: 5511999998888).
- Confirme que o cron externo do GLPI está a correr - as CronTasks do módulo são
MODE_EXTERNALe não disparam por acessos web.
# As CronTasks do modulo (healthcheck 5min, fila 1min) sao MODE_EXTERNAL.
# No GLPI 11 o disparador e front/cron.php (nao ha consola 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 trata disso):
# POST {URL}/message/sendText/{instancia}
# header: apikey: ...a_sua_api_key...
# body: { "number": "5511999998888", "text": "..." }
Diagnóstico de entrega diretamente na base de dados
Quando um cliente diz que "o WhatsApp não chegou", a resposta está quase sempre 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 a ligação da instância em baixo. É por isso que o health check existe - se o estado no painel está desligado, o QR expirou e precisa de ser lido de novo.
A armadilha que só quem opera conhece
Duas ciladas derrubam quase toda a primeira implementação. A primeira: o canal do WhatsApp Bot viaja pelo modo SMS do GLPI. Isto significa que, para o utilizador receber, o "seguir por SMS" tem de estar ativo na notificação - muita gente procura um modo chamado "WhatsApp" no ecrã de notificações e não o encontra, porque aparece como SMS. A segunda: o GLPI acrescenta a assinatura de e-mail predefinida ("-- " e o rodapé) ao corpo do modelo, e no WhatsApp isso vira ruído visual; o módulo remove esse bloco no envio, mas se criar um modelo próprio evite despejar variáveis de assinatura de e-mail nele. E lembre-se: como o número sai de glpi_users.mobile, um telemóvel mal registado é a causa número um do "não recebi" - normalizamos o indicativo, mas não adivinhamos um dígito trocado.
Para quem é indicado (e quando não usar)
O WhatsApp Bot brilha onde o utilizador final não acompanha e-mail: retalho, 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 ligados ao GLPI, um sino de notificação in-app encaixa melhor e não depende de uma instância de WhatsApp. E se a política da empresa proíbe o WhatsApp para comunicação de trabalho, respeite - o canal certo é o que a equipa 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 levantar a Evolution API ou calibrar quais eventos notificar por WhatsApp? Fale com a equipa.
Este conteúdo foi produzido com auxílio de inteligência artificial e revisto pela equipa Nextool Solutions.