Case study
Torga Optical – assistente IA su WhatsApp
Torga Optical è una catena di negozi di ottica che gestisce una rete di punti vendita in Sudafrica, Namibia, Lesotho ed Eswatini. L'azienda offre esami della vista, occhiali su prescrizione, occhiali da sole e lenti a contatto, unendo i servizi di optometria in negozio a un negozio online completo.
La sua piattaforma e-commerce è costruita su nopCommerce, dove ogni negozio funziona come una sede separata, con il proprio calendario di appuntamenti, il proprio personale e la propria disponibilità di prodotti. I clienti possono sfogliare il catalogo, prenotare un esame della vista nella filiale che preferiscono e seguire online l'avanzamento del proprio ordine.
Con la comunicazione con i clienti sempre più spostata su WhatsApp, Torga Optical aveva bisogno che i propri servizi digitali - appuntamenti, tracciamento degli ordini, promozioni e contatto con il negozio - fossero disponibili direttamente in quel canale, alimentati dagli stessi dati in tempo reale con cui i suoi negozi lavorano ogni giorno.
Il progetto
eyeRobot è un assistente conversazionale self-service che porta il negozio di ottica del cliente dentro WhatsApp. Costruito sul framework Hubot e collegato a Rocket.Chat Omnichannel, il bot gestisce da capo a fondo le richieste più comuni dei clienti - prenotare un appuntamento per l'esame della vista, controllare un ordine, scaricare buoni promozionali e mettersi in contatto con la filiale giusta - senza che un operatore umano debba prima prendere in carico la conversazione.
Ogni risposta che il bot fornisce è un dato in tempo reale: dialoga direttamente con il negozio nopCommerce del cliente tramite l'API REST, così appuntamenti, ordini, negozi e prodotti sono sempre allineati con il back office.
La sfida
Il cliente gestisce un'ampia rete di negozi di ottica in Sudafrica, Namibia, Lesotho ed Eswatini. Le richieste di routine - «quando posso venire per un esame della vista?», «i miei occhiali sono pronti?», «qual è il numero della mia filiale?» - arrivavano attraverso un unico canale WhatsApp e dovevano essere smistate manualmente dal team di assistenza clienti. L'obiettivo era automatizzare questa prima linea di contatto, indirizzare il resto al negozio corretto e farlo dentro il canale che i clienti già usano ogni giorno.
La soluzione
Abbiamo consegnato un chatbot Node.js che gira come agente Rocket.Chat Omnichannel e propone un menu numerato, adatto a WhatsApp. Una macchina a stati per ogni conversazione tiene traccia del punto in cui si trova ciascun cliente all'interno di un flusso, valida ogni input e offre sempre una via di ritorno al menu principale.
Il cliente viene riconosciuto automaticamente dal numero di telefono della conversazione WhatsApp: il bot normalizza il numero in diversi formati, ricava il paese dal prefisso internazionale e cerca il profilo in nopCommerce - compreso il negozio preferito del cliente. Nessun login, nessun modulo d'ordine, nessuna app separata da installare.
Funzionalità principali
- Prenotazione degli appuntamenti - un flusso guidato attraverso provincia → negozio → tipo di appuntamento → data → fasce di disponibilità in tempo reale, prese direttamente dagli endpoint di prenotazione di nopCommerce. I dati di profilo mancanti (nome, e-mail, data di nascita) vengono raccolti nella chat, confermati dal cliente e inviati insieme alla prenotazione.
- Stato dell'ordine - ricerca immediata per numero d'ordine tramite l'API ordini di nopCommerce, con lo stato tradotto in linguaggio chiaro.
- Chattate con il vostro negozio - il bot individua il negozio preferito del cliente, verifica se l'operatore di quel negozio è al momento online ed effettua il passaggio in diretta della conversazione WhatsApp verso di lui tramite l'API di inoltro Livechat di Rocket.Chat. Il cliente continua a chattare nella stessa finestra.
- Buoni su WhatsApp - il catalogo dei buoni specifico per paese viene letto da nopCommerce e il buono selezionato viene consegnato al cliente come allegato PDF tramite un messaggio template WhatsApp Business approvato.
- Chiama il mio negozio - restituisce il numero di telefono e i dettagli della filiale presso cui il cliente è registrato.
- Assistenza clienti e aiuto - recapiti, orari di lavoro, canali social e una breve sezione FAQ, sempre a un tasto di distanza.
Aspetti tecnici salienti
- Il contesto della conversazione è isolato per stanza, così centinaia di chat WhatsApp parallele mantengono ciascuna il proprio stato, i propri ritentativi e le proprie regole di validazione.
- Validazione rigorosa degli input per le date (GG/MM/AAAA, più «oggi» / «domani», nessuna data passata, al massimo quattro settimane in avanti), gli indirizzi e-mail, i numeri di telefono e le date di nascita - le risposte non valide vengono richieste di nuovo invece di interrompere il flusso.
- Supporto multipaese guidato dal prefisso internazionale, associato al paese e al negozio nopCommerce corretti.
- Autenticazione basata su token verso l'API di nopCommerce con ri-autenticazione automatica e aggiornamento automatico del token Rocket.Chat alla scadenza.
- Deployment containerizzato con Docker Compose, compreso un controllo all'avvio che attende che l'API di Rocket.Chat sia raggiungibile prima che il bot si colleghi, e una policy di riavvio automatico.
Tecnologie
Node.js 22, Hubot, CoffeeScript, Rocket.Chat (adapter Omnichannel / Livechat e API REST), messaggistica template WhatsApp Business, API REST di nopCommerce, Axios, Docker e Docker Compose.
Risultato
I clienti ora prenotano appuntamenti, seguono gli ordini e ritirano i buoni 24/7 direttamente da WhatsApp, mentre le conversazioni che hanno davvero bisogno di una persona vengono indirizzate automaticamente alla filiale giusta e solo quando qualcuno è effettivamente online. Il carico di routine sul team centrale di assistenza clienti diminuisce e ogni interazione è alimentata dagli stessi dati nopCommerce con cui i negozi già lavorano.
Tecnologie
Node.js- Hubot
- CoffeeScript
- Rocket.Chat
- Rocket.Chat Omnichannel / Livechat API
WhatsApp Business API
nopCommerce
nopCommerce REST API
REST API Integration- Axios
Docker
Docker Compose