Проект
Torga Optical – AI асистент в WhatsApp
Torga Optical е верига оптики с мрежа от магазини в Южна Африка, Намибия, Лесото и Есватини. Компанията предлага очни прегледи, диоптрични очила, слънчеви очила и контактни лещи, като съчетава оптометрия в магазина с пълноценен онлайн магазин.
E-commerce платформата ѝ е изградена на nopCommerce, като всеки магазин работи като отделна локация със собствен график за часове, персонал и наличности. Клиентите могат да разглеждат каталога, да си запазят час за очен преглед в предпочитания клон и да следят поръчката си онлайн.
Тъй като комуникацията с клиентите все повече се измества към WhatsApp, Torga Optical имаше нужда дигиталните ѝ услуги – часове, проследяване на поръчки, промоции и връзка с магазина – да са достъпни директно в този канал, захранени със същите живи данни, с които магазините работят всеки ден.
Проектът
eyeRobot е разговорен асистент за самообслужване, който вкарва оптиката на клиента в WhatsApp. Изграден върху framework-а Hubot и включен в Rocket.Chat Omnichannel, ботът поема най-честите заявки на клиентите от начало до край – запазване на час за очен преглед, проверка на поръчка, изтегляне на промоционални ваучери и връзка с правилния клон – без нито един жив оператор да се налага да се включва пръв в разговора.
Всеки отговор на бота е живи данни: той говори директно с nopCommerce магазина на клиента през REST API, така че часовете, поръчките, магазините и продуктите винаги са в синхрон с бек офиса.
Предизвикателството
Клиентът управлява голяма мрежа от оптики в Южна Африка, Намибия, Лесото и Есватини. Рутинните запитвания – „кога мога да дойда за очен преглед?“, „готови ли са очилата ми?“, „какъв е телефонът на моя клон?“ – идваха през един WhatsApp канал и се разпределяха ръчно от екипа за обслужване на клиенти. Целта беше тази първа линия на контакт да се автоматизира, останалото да се насочва към правилния магазин и всичко това да става в канала, който клиентите вече използват всеки ден.
Решението
Доставихме чатбот на Node.js, който работи като Rocket.Chat Omnichannel агент и показва номерирано меню, удобно за WhatsApp. Машина на състоянията за всеки разговор следи докъде е стигнал всеки клиент, валидира всеки въведен отговор и винаги оставя път назад към главното меню.
Клиентът се разпознава автоматично по телефонния номер на WhatsApp разговора: ботът нормализира номера в няколко формата, определя държавата по кода за избиране и намира профила в nopCommerce – включително предпочитания от клиента магазин. Без вход в акаунт, без формуляри за поръчка, без отделно приложение за инсталиране.
Ключови възможности
- Запазване на час – воден процес през област → магазин → тип час → дата → свободни часове на живо, изтеглени в реално време от booking endpoint-ите на nopCommerce. Липсващите данни в профила (име, имейл, дата на раждане) се събират в чата, потвърждават се от клиента и се изпращат заедно със заявката.
- Статус на поръчка – моментална справка по номер на поръчка през order API на nopCommerce, като статусът се превежда на разбираем език.
- Чат с вашия магазин – ботът разпознава предпочитания магазин на клиента, проверява дали операторът на този магазин е онлайн в момента и прехвърля WhatsApp разговора към него на живо през Livechat forwarding API на Rocket.Chat. Клиентът продължава да пише в същия прозорец.
- Ваучери в WhatsApp – каталогът с ваучери за съответната държава се чете от nopCommerce, а избраният ваучер стига до клиента като прикачен PDF файл чрез одобрено шаблонно съобщение в WhatsApp Business.
- Обади се на моя магазин – връща телефона и данните на клона, към който клиентът е регистриран.
- Обслужване на клиенти и помощ – контакти, работно време, социални канали и кратък FAQ, винаги на един клавиш разстояние.
Инженерни акценти
- Контекстът на разговора е изолиран за всяка стая, така че стотици паралелни WhatsApp чата пазят собствено състояние, повторни опити и правила за валидация.
- Строга валидация на входа за дати (ДД/ММ/ГГГГ, плюс „днес“ / „утре“, без минали дати, максимум четири седмици напред), имейл, телефонни номера и дати на раждане – при невалиден отговор въпросът се задава отново, вместо потокът да се къса.
- Поддръжка на няколко държави според кода за избиране, съпоставен с правилната държава и магазин в nopCommerce.
- Удостоверяване с токен пред API на nopCommerce с автоматично повторно удостоверяване и автоматично подновяване на токена за Rocket.Chat при изтичане.
- Контейнеризиран деплой с Docker Compose, включително проверка при стартиране, която изчаква API на Rocket.Chat да стане достъпно, преди ботът да се свърже, и автоматична политика за рестарт.
Технологии
Node.js 22, Hubot, CoffeeScript, Rocket.Chat (Omnichannel / Livechat адаптер и REST API), шаблонни съобщения в WhatsApp Business, nopCommerce REST API, Axios, Docker & Docker Compose.
Резултат
Клиентите вече запазват часове, следят поръчки и вземат ваучери 24/7 директно от WhatsApp, а разговорите, които наистина изискват човек, се насочват автоматично към правилния клон и само когато там има някой онлайн. Рутинното натоварване на централния екип за обслужване спада, а всяко взаимодействие се захранва от същите данни в nopCommerce, с които магазините вече работят.
Технологии
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