Caso de estudo
Torga Optical – assistente de IA no WhatsApp
Torga Optical é uma cadeia de retalho de ótica que opera uma rede de lojas na África do Sul, Namíbia, Lesoto e Essuatíni. A empresa oferece exames de vista, óculos graduados, óculos de sol e lentes de contacto, combinando serviços de optometria em loja com uma loja online completa.
A sua plataforma de eCommerce assenta em nopCommerce, onde cada loja funciona como uma localização separada, com o seu próprio calendário de marcações, pessoal e disponibilidade de produtos. Os clientes podem consultar o catálogo, marcar um exame de vista na loja da sua preferência e acompanhar online o estado da sua encomenda.
Com a comunicação com os clientes a passar cada vez mais para o WhatsApp, a Torga Optical precisava que os seus serviços digitais - marcações, seguimento de encomendas, promoções e contacto com a loja - estivessem disponíveis diretamente nesse canal, suportados pelos mesmos dados em tempo real com que as suas lojas trabalham todos os dias.
O projeto
O eyeRobot é um assistente conversacional de self-service que traz a loja de ótica do cliente para o WhatsApp. Construído sobre a framework Hubot e ligado ao Rocket.Chat Omnichannel, o bot trata de ponta a ponta os pedidos mais comuns dos clientes - marcar um exame de vista, verificar uma encomenda, descarregar vales promocionais e chegar à loja certa - sem que um único agente humano tenha de pegar primeiro na conversa.
Todas as respostas que o bot dá são dados em tempo real: comunica diretamente com a loja nopCommerce do cliente através da API REST, pelo que marcações, encomendas, lojas e produtos estão sempre sincronizados com o back office.
O desafio
O cliente opera uma grande rede de lojas de ótica na África do Sul, Namíbia, Lesoto e Essuatíni. Os pedidos de rotina - «quando posso ir fazer um exame de vista?», «os meus óculos já estão prontos?», «qual é o número da minha loja?» - chegavam por um único canal de WhatsApp e tinham de ser triados manualmente pela equipa de apoio ao cliente. O objetivo era automatizar esta primeira linha de contacto, encaminhar o resto para a loja correta e fazê-lo dentro do canal que os clientes já usam todos os dias.
A solução
Entregámos um chatbot em Node.js que funciona como agente do Rocket.Chat Omnichannel e apresenta um menu numerado, adequado ao WhatsApp. Uma máquina de estados por conversa acompanha em que ponto do fluxo está cada cliente, valida cada entrada e oferece sempre uma forma de voltar ao menu principal.
O cliente é reconhecido automaticamente pelo número de telefone da conversa de WhatsApp: o bot normaliza o número em vários formatos, determina o país a partir do indicativo e procura o perfil no nopCommerce - incluindo a loja preferida do cliente. Sem início de sessão, sem formulários de encomenda, sem uma aplicação à parte para instalar.
Principais capacidades
- Marcação de consultas - um fluxo guiado por província → loja → tipo de marcação → data → horários disponíveis em direto, obtidos em tempo real a partir dos endpoints de marcação do nopCommerce. Os dados de perfil em falta (nome, correio eletrónico, data de nascimento) são recolhidos na conversa, confirmados pelo cliente e enviados juntamente com a marcação.
- Estado da encomenda - consulta instantânea pelo número da encomenda na API de encomendas do nopCommerce, com o estado traduzido para linguagem simples.
- Falar com a sua loja - o bot identifica a loja preferida do cliente, verifica se o agente dessa loja está online nesse momento e faz a transferência em direto da conversa de WhatsApp para ele através da API de reencaminhamento do Rocket.Chat Livechat. O cliente continua a conversar na mesma janela.
- Vales no WhatsApp - o catálogo de vales específico de cada país é lido a partir do nopCommerce e o vale escolhido é entregue ao cliente como anexo PDF através de uma mensagem de modelo aprovada do WhatsApp Business.
- Ligar para a minha loja - devolve o número de telefone e os dados da loja onde o cliente está registado.
- Apoio ao cliente e ajuda - contactos, horário de funcionamento, canais sociais e um breve FAQ, sempre à distância de uma tecla.
Destaques de engenharia
- O contexto da conversa é isolado por sala, pelo que centenas de conversas de WhatsApp em paralelo mantêm cada uma o seu estado, as suas repetições e as suas regras de validação.
- Validação estrita das entradas para datas (DD/MM/AAAA, mais «hoje» / «amanhã», sem datas passadas, no máximo quatro semanas à frente), correio eletrónico, números de telefone e datas de nascimento - as respostas inválidas são pedidas de novo em vez de quebrarem o fluxo.
- Suporte multipaís baseado no indicativo telefónico, mapeado para o país e a loja corretos no nopCommerce.
- Autenticação por token na API do nopCommerce com reautenticação automática e renovação automática do token do Rocket.Chat quando este expira.
- Implementação em contentores com Docker Compose, incluindo uma barreira de arranque que espera até a API do Rocket.Chat estar acessível antes de o bot se ligar, e uma política de reinício automático.
Tecnologias
Node.js 22, Hubot, CoffeeScript, Rocket.Chat (adaptador Omnichannel / Livechat e API REST), mensagens de modelo do WhatsApp Business, API REST do nopCommerce, Axios, Docker e Docker Compose.
Resultado
Os clientes fazem agora marcações, acompanham encomendas e recolhem vales 24/7 diretamente no WhatsApp, enquanto as conversas que precisam mesmo de uma pessoa são encaminhadas automaticamente para a loja certa e apenas quando alguém está de facto online. A carga rotineira sobre a equipa central de apoio ao cliente diminui e cada interação é alimentada pelos mesmos dados do nopCommerce com que as lojas já trabalham.
Tecnologias
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