Case study
Torga Optical – asystent AI w WhatsAppie
Torga Optical to sieć salonów optycznych prowadząca sklepy w krajach: Republika Południowej Afryki, Namibia, Lesotho i Eswatini. Firma oferuje badania wzroku, okulary korekcyjne, okulary przeciwsłoneczne i soczewki kontaktowe, łącząc usługi optometryczne w salonach z pełnym sklepem internetowym.
Jej platforma e-commerce działa na nopCommerce, gdzie każdy salon funkcjonuje jako osobna lokalizacja z własnym grafikiem wizyt, personelem i dostępnością produktów. Klienci mogą przeglądać katalog, umówić badanie wzroku w wybranym salonie i śledzić realizację zamówienia online.
Ponieważ komunikacja z klientami coraz częściej przenosi się na WhatsApp, Torga Optical potrzebowała, aby jej usługi cyfrowe - umawianie wizyt, śledzenie zamówień, promocje i kontakt z salonem - były dostępne bezpośrednio w tym kanale, w oparciu o te same dane na żywo, z których salony korzystają każdego dnia.
Projekt
eyeRobot to konwersacyjny asystent samoobsługowy, który przenosi salon optyczny klienta na WhatsApp. Zbudowany na frameworku Hubot i podłączony do Rocket.Chat Omnichannel, bot obsługuje od początku do końca najczęstsze prośby klientów - umówienie badania wzroku, sprawdzenie zamówienia, pobranie kuponów promocyjnych i połączenie z właściwym salonem - bez tego, by ktokolwiek z konsultantów musiał najpierw przejąć rozmowę.
Każda odpowiedź bota to dane na żywo: łączy się on bezpośrednio ze sklepem nopCommerce klienta przez REST API, więc wizyty, zamówienia, salony i produkty są zawsze zgodne z zapleczem.
Wyzwanie
Klient prowadzi dużą sieć salonów optycznych w krajach: Republika Południowej Afryki, Namibia, Lesotho i Eswatini. Rutynowe pytania - „kiedy mogę przyjść na badanie wzroku?”, „czy moje okulary są gotowe?”, „jaki jest numer mojego salonu?” - trafiały jednym kanałem WhatsApp i musiały być ręcznie segregowane przez zespół obsługi klienta. Celem była automatyzacja tej pierwszej linii kontaktu, przekierowanie reszty do właściwego salonu i zrobienie tego w kanale, z którego klienci i tak korzystają codziennie.
Rozwiązanie
Dostarczyliśmy chatbota w Node.js, który działa jako agent Rocket.Chat Omnichannel i udostępnia numerowane menu dostosowane do WhatsApp. Automat stanów prowadzony osobno dla każdej rozmowy pilnuje, na którym etapie ścieżki znajduje się dany klient, waliduje każdą odpowiedź i zawsze oferuje powrót do menu głównego.
Klient jest rozpoznawany automatycznie po numerze telefonu z rozmowy na WhatsApp: bot normalizuje numer do kilku formatów, ustala kraj na podstawie numeru kierunkowego i wyszukuje profil w nopCommerce - wraz z preferowanym salonem klienta. Bez logowania, bez formularzy zamówień, bez osobnej aplikacji do zainstalowania.
Kluczowe możliwości
- Umawianie wizyt - prowadzona ścieżka: prowincja → salon → rodzaj wizyty → data → dostępne terminy, pobierane w czasie rzeczywistym z punktów rezerwacji nopCommerce. Brakujące dane profilu (imię i nazwisko, e-mail, data urodzenia) są zbierane w czacie, potwierdzane przez klienta i przesyłane razem z rezerwacją.
- Status zamówienia - natychmiastowe sprawdzenie po numerze zamówienia w API zamówień nopCommerce, ze statusem przełożonym na prosty język.
- Czat z Twoim salonem - bot ustala preferowany salon klienta, sprawdza, czy konsultant tego salonu jest w danej chwili online, i przekazuje mu rozmowę na WhatsApp na żywo przez API przekierowań Rocket.Chat Livechat. Klient rozmawia dalej w tym samym oknie.
- Kupony na WhatsApp - katalog kuponów właściwy dla danego kraju jest odczytywany z nopCommerce, a wybrany kupon trafia do klienta jako załącznik PDF w zatwierdzonej wiadomości szablonowej WhatsApp Business.
- Zadzwoń do mojego salonu - zwraca numer telefonu i dane salonu, w którym klient jest zarejestrowany.
- Obsługa klienta i pomoc - dane kontaktowe, godziny pracy, kanały społecznościowe i krótkie FAQ, zawsze o jedno naciśnięcie klawisza.
Najważniejsze rozwiązania techniczne
- Kontekst rozmowy jest odizolowany dla każdego pokoju, więc setki równoległych czatów na WhatsApp zachowują własny stan, ponowienia i reguły walidacji.
- Ścisła walidacja danych wejściowych dla dat (DD/MM/YYYY, a także „today” / „tomorrow”, bez dat przeszłych, maksymalnie cztery tygodnie do przodu), adresów e-mail, numerów telefonu i dat urodzenia - błędne odpowiedzi skutkują ponownym pytaniem zamiast przerwania ścieżki.
- Obsługa wielu krajów sterowana numerem kierunkowym, mapowanym na właściwy kraj i salon w nopCommerce.
- Uwierzytelnianie tokenami wobec API nopCommerce z automatycznym ponownym uwierzytelnianiem oraz automatyczne odświeżanie tokenu Rocket.Chat po jego wygaśnięciu.
- Wdrożenie w kontenerach z Docker Compose, wraz z blokadą startową, która czeka, aż API Rocket.Chat będzie osiągalne, zanim bot się połączy, oraz z automatyczną polityką restartu.
Technologie
Node.js 22, Hubot, CoffeeScript, Rocket.Chat (adapter Omnichannel / Livechat i REST API), wiadomości szablonowe WhatsApp Business, nopCommerce REST API, Axios, Docker i Docker Compose.
Rezultat
Klienci umawiają teraz wizyty, śledzą zamówienia i odbierają kupony 24/7 bezpośrednio na WhatsApp, a rozmowy, które naprawdę wymagają człowieka, są kierowane automatycznie do właściwego salonu i tylko wtedy, gdy ktoś jest faktycznie online. Rutynowe obciążenie centralnego zespołu obsługi klienta spada, a każda interakcja opiera się na tych samych danych nopCommerce, z których salony już korzystają.
Technologie
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