Étude de cas
Torga Optical – assistant IA sur WhatsApp
Torga Optical est une chaîne d’optique qui exploite un réseau de magasins dans l’Afrique du Sud, la Namibie, le Lesotho et l’Eswatini. L’entreprise propose des examens de la vue, des lunettes de vue, des lunettes de soleil et des lentilles de contact, en associant des services d’optométrie en magasin à une boutique en ligne complète.
Sa plateforme e-commerce repose sur nopCommerce, où chaque magasin fonctionne comme un point de vente distinct, avec son propre planning de rendez-vous, son personnel et sa disponibilité produits. Les clients peuvent parcourir le catalogue, réserver un examen de la vue dans le magasin de leur choix et suivre l’avancement de leur commande en ligne.
La communication client se déplaçant de plus en plus vers WhatsApp, Torga Optical avait besoin que ses services numériques - rendez-vous, suivi de commande, promotions et contact avec le magasin - soient disponibles directement dans ce canal, appuyés sur les mêmes données en direct que celles avec lesquelles ses magasins travaillent chaque jour.
Le projet
eyeRobot est un assistant conversationnel en libre-service qui amène le magasin d’optique du client dans WhatsApp. Construit sur le framework Hubot et branché sur Rocket.Chat Omnichannel, le bot traite de bout en bout les demandes clients les plus courantes - prendre un rendez-vous pour un examen de la vue, vérifier une commande, télécharger des bons promotionnels et joindre le bon magasin - sans qu’un agent humain ait à reprendre la conversation au préalable.
Chaque réponse du bot repose sur des données en direct : il dialogue directement avec la boutique nopCommerce du client via l’API REST, de sorte que les rendez-vous, les commandes, les magasins et les produits sont toujours synchronisés avec le back-office.
Le défi
Le client exploite un vaste réseau de magasins d’optique en Afrique du Sud, en Namibie, au Lesotho et en Eswatini. Les demandes courantes - « quand puis-je venir pour un examen de la vue ? », « mes lunettes sont-elles prêtes ? », « quel est le numéro de mon magasin ? » - arrivaient par un seul canal WhatsApp et devaient être triées manuellement par l’équipe du service client. L’objectif était d’automatiser cette première ligne de contact, d’orienter le reste vers le bon magasin, et de le faire dans le canal que les clients utilisent déjà tous les jours.
La solution
Nous avons livré un chatbot Node.js qui tourne comme agent Rocket.Chat Omnichannel et propose un menu numéroté, adapté à WhatsApp. Une machine à états propre à chaque conversation suit où en est chaque client dans un parcours, valide chaque saisie et offre toujours un retour au menu principal.
Le client est reconnu automatiquement grâce au numéro de téléphone de la conversation WhatsApp : le bot normalise le numéro dans plusieurs formats, déduit le pays à partir de l’indicatif et recherche le profil dans nopCommerce - y compris le magasin préféré du client. Pas de connexion, pas de formulaire de commande, pas d’application séparée à installer.
Fonctionnalités clés
- Prise de rendez-vous - un parcours guidé province → magasin → type de rendez-vous → date → créneaux disponibles en direct, récupérés en temps réel depuis les endpoints de réservation de nopCommerce. Les données de profil manquantes (nom, e-mail, date de naissance) sont recueillies dans la conversation, confirmées par le client et renvoyées avec la réservation.
- Statut de commande - recherche instantanée par numéro de commande dans l’API de commandes de nopCommerce, avec le statut traduit en langage clair.
- Discuter avec votre magasin - le bot identifie le magasin préféré du client, vérifie si l’agent de ce magasin est en ligne et lui transfère la conversation WhatsApp en direct via l’API de transfert Rocket.Chat Livechat. Le client continue de discuter dans la même fenêtre.
- Bons sur WhatsApp - le catalogue de bons propre au pays est lu depuis nopCommerce et le bon sélectionné est envoyé au client en pièce jointe PDF via un message modèle WhatsApp Business approuvé.
- Appeler mon magasin - renvoie le numéro de téléphone et les coordonnées du magasin auquel le client est rattaché.
- Service client et aide - coordonnées, horaires d’ouverture, réseaux sociaux et une courte FAQ, toujours à une touche de distance.
Points techniques
- Le contexte de conversation est isolé par salon, si bien que des centaines de conversations WhatsApp parallèles conservent chacune leur propre état, leurs réessais et leurs règles de validation.
- Validation stricte des saisies pour les dates (DD/MM/YYYY, ainsi que « aujourd’hui » / « demain », pas de dates passées, quatre semaines à l’avance au maximum), les e-mails, les numéros de téléphone et les dates de naissance - les réponses invalides sont redemandées au lieu de casser le parcours.
- Prise en charge multi-pays pilotée par l’indicatif téléphonique, associé au bon pays et au bon magasin dans nopCommerce.
- Authentification par token auprès de l’API nopCommerce avec réauthentification automatique, et rafraîchissement automatique du token Rocket.Chat à l’expiration.
- Déploiement conteneurisé avec Docker Compose, avec un verrou de démarrage qui attend que l’API Rocket.Chat soit joignable avant que le bot ne se connecte, et une politique de redémarrage automatique.
Technologies
Node.js 22, Hubot, CoffeeScript, Rocket.Chat (adaptateur Omnichannel / Livechat et API REST), messages modèles WhatsApp Business, API REST nopCommerce, Axios, Docker et Docker Compose.
Résultat
Les clients prennent désormais rendez-vous, suivent leurs commandes et récupèrent leurs bons 24h/24 et 7j/7 directement depuis WhatsApp, tandis que les conversations qui nécessitent vraiment une personne sont dirigées automatiquement vers le bon magasin, et seulement quand quelqu’un est effectivement en ligne. La charge de routine sur l’équipe centrale du service client diminue, et chaque interaction s’appuie sur les mêmes données nopCommerce que celles avec lesquelles les magasins travaillent déjà.
Technologies
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