Case study
Torga Optical – AI-assistent in WhatsApp
Torga Optical is een optiekketen met een netwerk van winkels in Zuid-Afrika, Namibië, Lesotho en Eswatini. Het bedrijf biedt oogonderzoeken, brillen op sterkte, zonnebrillen en contactlenzen, en combineert optometrie in de winkel met een volwaardige webshop.
Het eCommerce-platform is gebouwd op nopCommerce, waarbij elke winkel functioneert als een aparte locatie met een eigen afsprakenagenda, personeel en productbeschikbaarheid. Klanten kunnen de catalogus doorbladeren, een oogmeting boeken bij hun voorkeursfiliaal en de voortgang van hun bestelling online volgen.
Nu de klantcommunicatie steeds meer naar WhatsApp verschuift, wilde Torga Optical zijn digitale diensten - afspraken, ordertracking, acties en contact met de winkel - rechtstreeks in dat kanaal beschikbaar hebben, gevoed door dezelfde live data waarmee de winkels elke dag werken.
Het project
eyeRobot is een conversationele selfservice-assistent die de optiekwinkel van de klant naar WhatsApp brengt. De bot is gebouwd op het Hubot-framework en aangesloten op Rocket.Chat Omnichannel, en handelt de meest voorkomende klantverzoeken volledig af - een afspraak voor een oogmeting boeken, een bestelling controleren, actievouchers downloaden en het juiste filiaal bereiken - zonder dat een menselijke medewerker het gesprek eerst hoeft op te pakken.
Elk antwoord dat de bot geeft is live data: hij praat rechtstreeks met de nopCommerce-winkel van de klant via de REST API, zodat afspraken, bestellingen, winkels en producten altijd synchroon lopen met de backoffice.
De uitdaging
De klant exploiteert een groot netwerk van optiekwinkels in Zuid-Afrika, Namibië, Lesotho en Eswatini. Routinevragen - “wanneer kan ik langskomen voor een oogmeting?”, “is mijn bril klaar?”, “wat is het nummer van mijn filiaal?” - kwamen binnen via één WhatsApp-kanaal en moesten handmatig worden getrieerd door het klantenserviceteam. Het doel was deze eerste lijn van contact te automatiseren, de rest naar de juiste winkel te routeren, en dat te doen in het kanaal dat klanten toch al elke dag gebruiken.
De oplossing
We leverden een Node.js-chatbot die draait als Rocket.Chat Omnichannel-agent en een genummerd, WhatsApp-vriendelijk menu aanbiedt. Een statemachine per gesprek houdt bij waar elke klant zich in een flow bevindt, valideert elke invoer en biedt altijd een weg terug naar het hoofdmenu.
De klant wordt automatisch herkend aan het telefoonnummer van het WhatsApp-gesprek: de bot normaliseert het nummer naar verschillende formaten, leidt het land af uit het landnummer en zoekt het profiel op in nopCommerce - inclusief de voorkeurswinkel van de klant. Geen login, geen bestelformulieren, geen aparte app om te installeren.
Belangrijkste mogelijkheden
- Afspraken boeken - een begeleide flow via provincie → winkel → afspraaktype → datum → live beschikbare tijdslots, realtime opgehaald uit de boekings-endpoints van nopCommerce. Ontbrekende profielgegevens (naam, e-mail, geboortedatum) worden in de chat verzameld, door de klant bevestigd en met de boeking meegestuurd.
- Orderstatus - directe opzoeking op ordernummer via de order-API van nopCommerce, met de status vertaald naar gewone taal.
- Chat met uw winkel - de bot bepaalt de voorkeurswinkel van de klant, controleert of de medewerker van die winkel op dat moment online is en draagt het WhatsApp-gesprek live aan hem over via de Livechat-forwarding-API van Rocket.Chat. De klant blijft in hetzelfde venster chatten.
- Vouchers op WhatsApp - de landspecifieke vouchercatalogus wordt uit nopCommerce gelezen en de gekozen voucher wordt als PDF-bijlage aan de klant geleverd via een goedgekeurd WhatsApp Business-templatebericht.
- Bel mijn winkel - geeft het telefoonnummer en de gegevens van het filiaal waar de klant is geregistreerd.
- Klantenservice & hulp - contactgegevens, openingstijden, socialemediakanalen en een korte FAQ, altijd één toetsaanslag verwijderd.
Technische hoogtepunten
- De gesprekscontext is per room geïsoleerd, zodat honderden parallelle WhatsApp-chats elk hun eigen status, herhalingen en validatieregels behouden.
- Strikte invoervalidatie voor datums (DD/MM/YYYY, plus “vandaag” / “morgen”, geen datums in het verleden, maximaal vier weken vooruit), e-mail, telefoonnummers en geboortedatums - ongeldige antwoorden worden opnieuw gevraagd in plaats van de flow te breken.
- Ondersteuning voor meerdere landen op basis van het landnummer, gekoppeld aan het juiste nopCommerce-land en de juiste winkel.
- Tokengebaseerde authenticatie tegen de nopCommerce API met automatische herauthenticatie, en automatische vernieuwing van het Rocket.Chat-token bij verlopen.
- Gecontaineriseerde deployment met Docker Compose, inclusief een opstartcontrole die wacht tot de Rocket.Chat API bereikbaar is voordat de bot verbinding maakt, en een automatisch herstartbeleid.
Technologieën
Node.js 22, Hubot, CoffeeScript, Rocket.Chat (Omnichannel-/Livechat-adapter en REST API), WhatsApp Business-templateberichten, nopCommerce REST API, Axios, Docker & Docker Compose.
Resultaat
Klanten boeken nu 24/7 afspraken, volgen bestellingen en halen vouchers op rechtstreeks vanuit WhatsApp, terwijl gesprekken die echt een mens nodig hebben automatisch naar het juiste filiaal worden geleid, en alleen wanneer daar iemand online is. De routinebelasting van het centrale klantenserviceteam daalt, en elke interactie draait op dezelfde nopCommerce-data waarmee de winkels al werken.
Technologieën
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