Notifiche GLPI su WhatsApp con la Evolution API

GLPI notifica solo via e-mail, e l'e-mail finisce nello spam. Il modulo gratuito WhatsApp Bot collega GLPI alla Evolution API (open source) e recapita le notifiche dei ticket su WhatsApp, con coda di ritentativi e connessione self-hosted. Scopri come il canale viaggia sulla modalità SMS di GLPI, da dove arriva il numero, il SQL di diagnosi della coda e le trappole di campo del primo rilascio.

WhatsApp è il canale che il tuo utente apre decine di volte al giorno - e GLPI, di default, sa parlare solo via e-mail. Il modulo WhatsApp Bot di NexTool collega GLPI alla Evolution API (open source, protocollo Baileys) e recapita la notifica del ticket direttamente su WhatsApp, con una coda che rielabora i fallimenti e la connessione sulla tua infrastruttura. Sostenere service desk ci ha insegnato che il canale giusto cambia il tasso di risposta di approvazioni e sondaggi di soddisfazione - ma l'integrazione ha trappole di configurazione che questa guida mostra sotto il cofano.

Il problema

GLPI notifica via e-mail transazionale usando la coda queuednotification. Funziona, ma l'e-mail aziendale finisce nello spam, l'utente finale non vive nella webmail e il responsabile che deve approvare un ticket lo scopre solo quando qualcuno chiama a sollecitare. Il risultato quotidiano sono approvazioni ferme per ore, sondaggi di soddisfazione con tasso di risposta vicino a zero e un team di supporto che perde tempo in solleciti manuali. Sostituire l'e-mail con un canale che le persone leggono davvero risolve gran parte del problema - e in Brasile quel canale è WhatsApp.

La via commerciale (l'API WhatsApp Business ufficiale) è costosa, dipende dall'approvazione dei modelli da parte di Meta e ti lega a un contratto esterno. Per chi già gestisce la propria infrastruttura, la Evolution API è l'alternativa self-hosted, e WhatsApp Bot la collega a GLPI usando l'infrastruttura nativa di notifiche - senza forzature nel core.

Come funziona WhatsApp Bot

Il modulo registra una propria modalità di notifica riutilizzando il canale SMS di GLPI (Notification_NotificationTemplate::registerMode(MODE_SMS)). Quando scatta un evento del ticket, GLPI risolve il destinatario, il modulo recupera il numero, compone il messaggio e lo invia tramite la Evolution API - in modo trasparente per l'operatore.

  • Notifiche proprie per evento - all'installazione, il modulo crea nove notifiche WhatsApp dedicate (Nuovo ticket, Nuovo follow-up, Ticket risolto, Sondaggio di soddisfazione, Richiesta di approvazione, Risposta di approvazione e le tre di password), ognuna con i propri destinatari. La creazione è idempotente per nome: se modifichi il testo nell'interfaccia di GLPI, una reinstallazione preserva la tua modifica.
  • Coda con ritentativo automatico - un messaggio che fallisce per instabilità della connessione entra nella tabella della coda ed è rielaborato in lotti fino a 50 ogni 1 minuto, con un massimo di 3 tentativi prima di essere marcato failed. Nulla sparisce in silenzio: il motivo dell'errore resta salvato.
  • Health check ogni 5 minuti - un cron interroga lo stato reale della connessione sulla Evolution API e aggiorna lo stato nel pannello, così sai che WhatsApp è caduto prima che l'utente si lamenti.
  • QR Code dentro GLPI - il numero mittente si connette scansionando il QR generato nella scheda Connettori, senza uscire dall'ambiente.
  • Self-hosted o gestito - punta alla tua Evolution API (URL + API Key) oppure, in ambiente su licenza, usa l'istanza gestita da NexTool.

Il numero del destinatario proviene dal campo Cellulare dell'utente GLPI (glpi_users.mobile), normalizzato automaticamente: il modulo toglie la formattazione, valida la lunghezza (da 10 a 15 cifre) e antepone il prefisso 55 quando un numero brasiliano arriva senza. Chi non ha un cellulare registrato semplicemente non riceve - l'invio è silenzioso, non genera errore.

WhatsApp Bot rispetto alla notifica nativa di GLPI

FunzioneGLPI nativo (e-mail SMTP)WhatsApp Bot + Evolution API
Canale di consegnaE-mail transazionaleWhatsApp (messaggio sul cellulare)
Tasso di letturaBasso (spam, nessuno apre)Alto (canale quotidiano)
Reinvio in caso di erroreCoda, senza ritentativo per canaleCoda propria, 3 tentativi, lotti da 50/min
Origine del numeroE-mail dell'utenteCampo Cellulare (glpi_users.mobile), normalizzato
InfrastrutturaServer SMTPEvolution API self-hosted o gestita
Costo per messaggioZero (SMTP proprio)Zero (nessuna API Meta a pagamento)

Come attivarlo

  1. Installa NexTool sul tuo GLPI e vai in Configurazione > NexTool > Moduli.
  2. Attiva il modulo WhatsApp Bot e clicca su Configura.
  3. Nella scheda Connettori, inserisci l'URL e l'API Key della tua Evolution API e genera il QR Code per connettere il numero mittente.
  4. In Amministrazione > Utenti, compila il campo Cellulare dei destinatari (prefisso+area+numero, es.: 5511999998888).
  5. Verifica che il cron esterno di GLPI sia in esecuzione - le CronTask del modulo sono MODE_EXTERNAL e non scattano con gli accessi web.
# Le CronTask del modulo (healthcheck 5min, coda 1min) sono MODE_EXTERNAL.
# Su GLPI 11 il trigger e front/cron.php (non c'e la console glpi:cron):
* * * * * www-data /usr/bin/php /var/www/html/front/cron.php >/dev/null 2>&1

# La Evolution API riceve l'invio su questo endpoint (ci pensa il modulo):
#   POST {URL}/message/sendText/{istanza}
#   header: apikey: ...la_tua_api_key...
#   body:   { "number": "5511999998888", "text": "..." }

Diagnosi di consegna direttamente nel database

Quando un cliente dice che "WhatsApp non è arrivato", la risposta è quasi sempre nella tabella della coda. Due query risolvono il triage:

-- Panoramica della coda: cosa e bloccato e quanti tentativi ha avuto
SELECT status, COUNT(*) AS totale, MAX(attempts) AS max_tentativi
FROM glpi_plugin_nextool_whatsappbot_queue
GROUP BY status;

-- Ultimi fallimenti con il motivo restituito dalla 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;

L'errore più comune che leggiamo in last_error non è un bug del modulo: è un numero mal formattato o la connessione dell'istanza caduta. Per questo esiste l'health check - se lo stato nel pannello è disconnesso, il QR è scaduto e va riscanalizzato.

La trappola che solo chi opera conosce

Due insidie rompono quasi ogni primo rilascio. La prima: il canale di WhatsApp Bot viaggia sulla modalità SMS di GLPI. Questo significa che, perché l'utente riceva, il "segui via SMS" deve essere attivo sulla notifica - in molti cercano una modalità chiamata "WhatsApp" nella schermata delle notifiche e non la trovano, perché appare come SMS. La seconda: GLPI aggiunge la firma e-mail predefinita ("-- " e il piè di pagina) al corpo del modello, e su WhatsApp questo diventa rumore visivo; il modulo rimuove quel blocco all'invio, ma se crei un modello tuo evita di riversarci variabili di firma e-mail. E ricorda: poiché il numero arriva da glpi_users.mobile, un cellulare registrato male è la causa numero uno del "non ho ricevuto" - normalizziamo il prefisso, ma non indoviniamo una cifra scambiata.

A chi è rivolto (e quando non usarlo)

WhatsApp Bot brilla dove l'utente finale non segue l'e-mail: retail, sanità, istruzione, servizi e qualsiasi service desk che serve un pubblico esterno. È eccellente anche per le approvazioni di responsabili che entrano raramente in GLPI. Quando non usarlo: se la tua operazione è al 100% interna, con tecnici che vivono connessi a GLPI, una campanella di notifica in-app si adatta meglio e non dipende da un'istanza WhatsApp. E se la policy aziendale vieta WhatsApp per la comunicazione di lavoro, rispettala - il canale giusto è quello che il team può davvero usare.

Compatibilità

  • GLPI: 10.0+ e 11.0+
  • Piano: FREE
  • Plugin: NexTool 4.2.1+
  • Prerequisito: Evolution API installata e raggiungibile dal server GLPI

Prossimo passo

WhatsApp Bot fa parte di NexTool. Ti serve aiuto per avviare la Evolution API o calibrare quali eventi notificare via WhatsApp? Parla con il team.


Revisionato dal team NexTool Solutions.

Domande Frequenti

Il modulo gratuito WhatsApp Bot di NexTool registra un canale di notifica che riutilizza la modalità SMS di GLPI e invia i messaggi tramite la Evolution API. All'installazione crea nove notifiche WhatsApp per evento (nuovo ticket, follow-up, soluzione, soddisfazione, approvazione e password) e le recapita con coda di ritentativi. Il numero del destinatario arriva dal campo Cellulare dell'utente.

No. Il modulo usa la Evolution API, open source e basata sul protocollo Baileys, che funziona con WhatsApp personale o Business senza costo per messaggio da Meta e senza approvazione dei modelli. Colleghi il numero mittente scansionando un QR Code direttamente nel pannello di GLPI.

Sì. Sia GLPI sia la Evolution API possono girare sulla tua infrastruttura; inserisci solo l'URL e l'API Key nella scheda Connettori. In ambienti su licenza puoi anche usare un'istanza gestita da NexTool, ma la connessione self-hosted mantiene i dati sul tuo server.

Entra in una coda ed è rielaborato automaticamente in lotti fino a 50 ogni 1 minuto, con un massimo di 3 tentativi. Se i tentativi si esauriscono, il record è marcato failed con il motivo dell'errore in last_error - di solito un numero mal formattato o un'istanza disconnessa, non un bug del modulo. Un health check ogni 5 minuti segnala quando la connessione cade.

Le due cause più comuni sono il campo Cellulare vuoto o mal compilato (il numero arriva da glpi_users.mobile, normalizzato con prefisso 55 per il Brasile) e il fatto che il canale viaggia sulla modalità SMS di GLPI - se il 'segui via SMS' non è attivo sulla notifica, non viene inviato nulla. Conviene anche controllare lo stato della connessione nel pannello: se il QR è scaduto, va riscanalizzato.

Sì. Il modulo è FREE, compatibile con GLPI 10.0+ e 11.0+, e richiede il plugin NexTool 4.2.1 o superiore. L'unico prerequisito esterno è una Evolution API raggiungibile dal server GLPI.

Hai bisogno di aiuto?