Asistente virtual inteligente para agendamiento y atención al cliente.
Este repositorio contiene el código fuente de un chatbot para WhatsApp desarrollado con Node.js y la librería @bot-whatsapp (Baileys Provider). Su función principal es automatizar la atención al cliente utilizando OpenAI (ChatGPT & Whisper) para interpretar texto y audio, responder preguntas basándose en un documento PDF de la empresa y gestionar reservas de citas directamente en Google Calendar.
- Procesamiento de Lenguaje Natural: Utiliza el modelo
gpt-4o-minipara entender la intención del usuario y generar respuestas coherentes y empáticas. - Base de Conocimiento (RAG): Lee y procesa un archivo
pregunta.pdfal iniciar para nutrir al bot con información específica del negocio (preguntas frecuentes, servicios, precios), asegurando respuestas contextualizadas. - Transcripción de Audio: Capaz de recibir notas de voz, convertirlas de formato OGG a MP3 usando
ffmpeg, y transcribirlas a texto con el modelo Whisper-1 para procesarlas como si fueran mensajes escritos.
- Disponibilidad en Tiempo Real: Consulta la API de Google Calendar para verificar huecos libres dentro de un horario laboral definido (Lunes a Viernes, 9am - 6pm).
- Interpretación de Fechas: Emplea IA para convertir expresiones humanas como "el próximo martes a las 3" en formatos ISO procesables (
2024-06-30T15:00:00). - Agendamiento Automático: Crea eventos reales en el calendario con la información recopilada del cliente (Nombre, Motivo) una vez confirmada la disponibilidad.
Para que el bot funcione, necesitas configurar las siguientes credenciales y archivos en la raíz del proyecto:
- Archivo
.env: Debe contener tuOPENAI_API_KEY. - Credenciales de Google (
google.json): Archivo de cuenta de servicio (Service Account) descargado de Google Cloud Console con permisos para la API de Calendar. - Documento Base (
pregunta.pdf): Archivo con la información que el bot debe aprender. - Librerías del Sistema: Requiere tener instalado
ffmpegen el sistema operativo si no se usa el instalador de npm incluido.
app.js: Punto de entrada. Inicializa el bot, carga el PDF y define los flujos principales (Bienvenida, Voz, Agendamiento).flows/: Contiene la lógica conversacional dividida en módulos:date.flow.js: Lógica compleja para negociar fechas y verificar disponibilidad.form.flow.js: Formulario para pedir datos finales y crear el evento.welcome.flow.js: Flujo simple de saludo.
scripts/: Utilidades técnicas:calendar.js: Conexión con Google API (Listar slots, crear eventos).chatgpt.js: Conexión con OpenAI API (Chat y Transcripción).utils.js: Funciones auxiliares para manejo de fechas conluxon.
- Instalar dependencias:
npm install
- Iniciar el bot:
npm start
- Vincular: Escanea el código QR que aparecerá en la terminal o en el navegador (si usas
QRPortalWeb).
Hay ciertos parámetros críticos que están definidos directamente en el código y deben revisarse antes de desplegar:
1. ID del Calendario de Google:
En scripts/calendar.js, debes reemplazar la variable calendarID con el ID de tu calendario específico (usualmente un correo electrónico).
2. Prompt del Sistema:
En app.js, la función getPrompt define la personalidad del bot. Puedes editarla para cambiar cómo se presenta o qué instrucciones sigue.
3. Horarios de Atención:
En scripts/calendar.js, el objeto rangeLimit define los días y horas hábiles para citas.
Versión: 1.0.0 (Prototipo) Desarrollado por: Tag Marketing Digital Tecnología: Node.js, Baileys, OpenAI API, Google Calendar API.
Cambiar ID del Calendario (scripts/calendar.js):
const calendarID = 'TU_ID_DE_CALENDARIO@group.calendar.google.com';