Paper Técnico: Implementación de un Chatbot para E-commerce con Consulta de Inventario en Vivo usando Rocket.Chat, Botpress, Rasa NLU y Algolia

1. Resumen
Este documento describe la arquitectura y flujo de un chatbot avanzado para un e-commerce, diseñado para interactuar con los clientes en Rocket.Chat, procesar consultas mediante Botpress, comprender el lenguaje natural con Rasa NLU y realizar búsquedas avanzadas en el inventario en tiempo real usando Algolia.
El objetivo es proporcionar respuestas precisas y rápidas sobre disponibilidad de productos, mejorando la experiencia del usuario sin depender de servicios de IA propietarios como ChatGPT o Dialogflow.
2. Introducción
Los chatbots han revolucionado la atención al cliente en e-commerce, reduciendo tiempos de respuesta y optimizando la conversión de ventas.
🔹 Beneficios clave de este chatbot
✅ Responde en tiempo real con datos de inventario actualizados.
✅ Comprende lenguaje natural con Rasa NLU sin depender de OpenAI o Google.
✅ Evita latencia y costos por uso de IA externa como ChatGPT.
✅ Garantiza privacidad y control total del modelo conversacional.
Este documento presenta una arquitectura escalable, combinando Rocket.Chat, Botpress, Rasa NLU y Algolia.
3. Arquitectura de la Solución
El sistema se compone de los siguientes módulos:
3.1 Componentes Principales
1️⃣ Rocket.Chat → Plataforma donde los usuarios interactúan con el chatbot.
2️⃣ Botpress → Framework para gestionar la conversación y orquestar llamadas a la API.
3️⃣ Rasa NLU → Procesa el lenguaje natural para entender la intención del usuario y extraer entidades.
4️⃣ Algolia → Motor de búsqueda para encontrar productos en el inventario en tiempo real.
5️⃣ API de Inventario (Backend en Go) → Expone los datos estructurados sobre disponibilidad y precios.
3.2 Flujo de Datos
El usuario envía un mensaje en Rocket.Chat:
"¿Tienen disponible la camisa azul en talla M?"
Rocket.Chat lo reenvía a Botpress mediante un webhook.
Botpress pasa el mensaje a Rasa NLU para entender la intención y extraer datos clave.
Rasa NLU responde con un JSON estructurado, por ejemplo:
{ "intent": "consultar_stock", "entities": { "producto": "camisa azul", "size": "M" } }
Botpress consulta Algolia con los parámetros extraídos:
GET https://mi-ecommerce.algolia.net/1/indexes/productos?query=camisa+azul+talla+M
Algolia devuelve los resultados con disponibilidad:
{ "hits": [ { "name": "Camisa Azul", "size": "M", "stock": 5, "price": 499.99 } ] }
Botpress responde en Rocket.Chat:
"Sí, tenemos 5 disponibles a $499.99. ¿Te gustaría comprarla?"
4. Implementación Técnica
A continuación, se detallan las configuraciones clave para cada componente.
4.1 Integración de Rocket.Chat con Botpress
Rocket.Chat puede enviar mensajes a Botpress mediante un webhook:
Configuración en Rocket.Chat:
{
"event": "message",
"trigger": "onMessage",
"url": "https://mi-botpress.com/webhook",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": {
"user": "{{user}}",
"message": "{{message}}"
}
}
4.2 Uso de Rasa NLU para procesamiento de lenguaje natural
En lugar de usar ChatGPT, el chatbot procesará las consultas con Rasa NLU.
📌 Ejemplo de datos de entrenamiento (nlu.yml
)
version: "3.1"
nlu:
- intent: consultar_stock
examples: |
- ¿Tienen en stock la [Dell XPS 15](producto)?
- ¿Queda alguna [MacBook Pro](producto) disponible?
- ¿Hay [iPhone 14](producto) en la tienda?
📌 Ejemplo de consulta en Python
from rasa_nlu.model import Interpreter
interpreter = Interpreter.load("modelo_entrenado/")
message = interpreter.parse("¿Tienen en stock la Dell XPS 15?")
print(message)
🔹 Salida esperada:
{
"intent": {"name": "consultar_stock", "confidence": 0.98},
"entities": [{"entity": "producto", "value": "Dell XPS 15"}]
}
4.3 Consulta del Inventario en Algolia
Botpress tomará la información de Rasa y consultará Algolia con una petición HTTP:
Ejemplo de consulta en Algolia (REST API):
GET https://mi-ecommerce.algolia.net/1/indexes/productos?query=camisa+azul+talla+M
Ejemplo de respuesta:
{
"hits": [
{
"name": "Camisa Azul",
"size": "M",
"stock": 5,
"price": 499.99
}
]
}
4.4 Respuesta del Chatbot en Rocket.Chat
Con los datos recibidos, Botpress responde al usuario con la información de stock y precio:
const response = await axios.get(`https://mi-ecommerce.algolia.net/1/indexes/productos?query=${product}+${size}`);
if (response.data.hits.length > 0) {
const item = response.data.hits[0];
return `Sí, tenemos ${item.stock} disponibles a $${item.price}. ¿Te gustaría comprarla?`;
} else {
return "Lo siento, no tenemos stock en este momento. ¿Quieres que te notifique cuando llegue?";
}
5. Optimización y Escalabilidad
Para mejorar el rendimiento y la experiencia del usuario, se pueden implementar las siguientes optimizaciones:
🔹 Cache en consultas frecuentes: Almacenar respuestas en Redis para evitar consultas repetitivas a Algolia.
🔹 Aprendizaje automático con datos históricos: Ajustar Rasa NLU con datos reales de preguntas de clientes.
🔹 Integración con CRM: Conectar el chatbot con la base de clientes para ofrecer recomendaciones personalizadas.
🔹 Flujos de pago automatizados: Agregar integración con Stripe o Mercado Pago para permitir compras instantáneas desde el chat.
6. Conclusión
La combinación de Rocket.Chat, Botpress, Rasa NLU y Algolia permite la creación de un chatbot eficiente para consultar inventario en vivo dentro de un e-commerce. Este enfoque optimiza la interacción con los clientes, reduce tiempos de respuesta y aumenta la conversión de ventas.
🚀 Ventajas clave del sistema:
✅ Respuestas en tiempo real gracias a Algolia.
✅ Comprensión de lenguaje natural sin depender de OpenAI.
✅ Flujo modular y escalable con Rasa NLU.
✅ Mayor control y privacidad sin enviar datos a terceros.
Esta arquitectura escalable y modular puede adaptarse a diferentes verticales de negocio, incluyendo retail, moda, electrónica y más.
Subscribe to my newsletter
Read articles from Gus directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
