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

GusGus
4 min read

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

  1. El usuario envía un mensaje en Rocket.Chat:

    "¿Tienen disponible la camisa azul en talla M?"

  2. Rocket.Chat lo reenvía a Botpress mediante un webhook.

  3. Botpress pasa el mensaje a Rasa NLU para entender la intención y extraer datos clave.

  4. Rasa NLU responde con un JSON estructurado, por ejemplo:

     {
       "intent": "consultar_stock",
       "entities": {
         "producto": "camisa azul",
         "size": "M"
       }
     }
    
  5. Botpress consulta Algolia con los parámetros extraídos:

     GET https://mi-ecommerce.algolia.net/1/indexes/productos?query=camisa+azul+talla+M
    
  6. Algolia devuelve los resultados con disponibilidad:

     {
       "hits": [
         {
           "name": "Camisa Azul",
           "size": "M",
           "stock": 5,
           "price": 499.99
         }
       ]
     }
    
  7. 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.

0
Subscribe to my newsletter

Read articles from Gus directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gus
Gus