299 lines
8.8 KiB
Markdown
299 lines
8.8 KiB
Markdown
# 🏥 Sistema de Chatbot WhatsApp - Laboratorio Ximena Caicedo
|
|
|
|
## 📋 Descripción
|
|
|
|
Sistema completo de chatbot para WhatsApp diseñado específicamente para el Laboratorio Ximena Caicedo en Cúcuta, Colombia. Incluye flujos conversacionales inteligentes, detección de horarios, gestión de estados, respuestas automáticas y mucho más.
|
|
|
|
## ✨ Características Principales
|
|
|
|
### 🤖 Bot Inteligente
|
|
- ✅ Procesamiento de Lenguaje Natural (NLP) básico
|
|
- ✅ Detección de palabras clave y sinónimos
|
|
- ✅ Respuestas automáticas contextuales
|
|
- ✅ Detección de sentimientos y frustración
|
|
- ✅ Escalamiento automático a asesores humanos
|
|
|
|
### 📅 Gestión de Horarios
|
|
- ✅ Detección automática de horario de atención
|
|
- ✅ Mensajes diferentes dentro/fuera de horario
|
|
- ✅ Configuración por día de la semana
|
|
- ✅ Soporte para horarios partidos (7-12, 14-17)
|
|
|
|
### 🗂️ Sistema de Menús
|
|
- ✅ Menú principal con 5 opciones
|
|
- ✅ Submenú de exámenes con información detallada
|
|
- ✅ Navegación intuitiva con números
|
|
- ✅ Opción de volver al menú anterior
|
|
|
|
### 🔄 Gestión de Estados
|
|
- ✅ Tracking del estado de cada conversación
|
|
- ✅ Flujos de agendamiento paso a paso
|
|
- ✅ Validación de datos del paciente
|
|
- ✅ Timeout automático de estados inactivos
|
|
|
|
### 💬 Respuestas Automáticas
|
|
- ✅ Más de 15 triggers configurados
|
|
- ✅ Respuestas por palabras clave
|
|
- ✅ Información de precios, horarios, ubicación
|
|
- ✅ Instrucciones para exámenes específicos
|
|
|
|
### 📸 Procesamiento de Multimedia
|
|
- ✅ Recepción de órdenes médicas
|
|
- ✅ Fotos de documentos de identidad
|
|
- ✅ Validación de imágenes
|
|
- ✅ Almacenamiento seguro
|
|
|
|
## 🚀 Instalación
|
|
|
|
### Requisitos Previos
|
|
- PHP 8.0 o superior
|
|
- MySQL 5.7 o superior
|
|
- Servidor web (Apache/Nginx)
|
|
- Cuenta de WhatsApp Business API
|
|
|
|
### Paso 1: Clonar/Descargar Archivos
|
|
Asegúrate de tener todos los archivos en tu servidor.
|
|
|
|
### Paso 2: Configurar Base de Datos
|
|
1. Crea una base de datos MySQL
|
|
2. Importa las tablas base si no existen:
|
|
```sql
|
|
-- Ejecutar los scripts SQL en este orden:
|
|
1. create_tables.sql (tablas base)
|
|
2. migrations/add_conversation_states.sql (tabla de estados)
|
|
3. setup_laboratorio_ximena.sql (datos del laboratorio)
|
|
```
|
|
|
|
### Paso 3: Configurar Credenciales
|
|
Edita `config/config.php` con tus credenciales:
|
|
```php
|
|
define('DB_HOST', 'localhost');
|
|
define('DB_NAME', 'whatsapp_bot');
|
|
define('DB_USER', 'tu_usuario');
|
|
define('DB_PASS', 'tu_password');
|
|
```
|
|
|
|
### Paso 4: Ejecutar Instalación Automática
|
|
Visita en tu navegador:
|
|
```
|
|
http://tu-dominio.com/install_laboratorio.php
|
|
```
|
|
|
|
Este script:
|
|
- ✅ Verifica la conexión a la base de datos
|
|
- ✅ Crea la tabla de estados
|
|
- ✅ Importa menús y respuestas automáticas
|
|
- ✅ Verifica los servicios del sistema
|
|
- ✅ Muestra estadísticas finales
|
|
|
|
### Paso 5: Configurar WhatsApp API
|
|
1. Ve al panel de administración: `http://tu-dominio.com/index.php`
|
|
2. Navega a la pestaña "Configuración"
|
|
3. Ingresa:
|
|
- Token de Acceso de WhatsApp Business API
|
|
- Phone Number ID
|
|
- Webhook Verify Token
|
|
- API URL (por defecto: https://graph.facebook.com/v22.0/)
|
|
|
|
### Paso 6: Configurar Webhook
|
|
1. En Meta for Developers, configura el webhook:
|
|
- URL: `https://tu-dominio.com/api/webhook.php`
|
|
- Verify Token: El mismo que configuraste en el paso anterior
|
|
- Suscripciones: `conversations`, `message_status`
|
|
|
|
## 📚 Estructura de Archivos
|
|
|
|
```
|
|
whatsapp/
|
|
├── services/
|
|
│ ├── BusinessHoursService.php # Gestión de horarios
|
|
│ ├── ConversationStateService.php # Estados de conversación
|
|
│ ├── NLPService.php # Procesamiento de lenguaje
|
|
│ ├── MenuService.php # Gestión de menús
|
|
│ ├── PatientDataValidator.php # Validación de datos
|
|
│ ├── BotServiceLab.php # Servicio principal del bot
|
|
│ └── WhatsAppService.php # Integración con WhatsApp API
|
|
├── api/
|
|
│ └── webhook.php # Recepción de mensajes
|
|
├── migrations/
|
|
│ └── add_conversation_states.sql # Migración de tabla de estados
|
|
├── setup_laboratorio_ximena.sql # Setup completo del laboratorio
|
|
├── install_laboratorio.php # Instalador automático
|
|
└── README_LABORATORIO.md # Este archivo
|
|
```
|
|
|
|
## 🎯 Flujos Implementados
|
|
|
|
### 1. Menú Principal
|
|
```
|
|
1️⃣ Agendar toma a domicilio
|
|
2️⃣ Consultar resultados
|
|
3️⃣ Información sobre exámenes
|
|
4️⃣ Ubicación y horarios
|
|
5️⃣ Hablar con un asesor
|
|
```
|
|
|
|
### 2. Submenú de Exámenes
|
|
```
|
|
1️⃣ Pruebas de embarazo
|
|
2️⃣ Prueba de paternidad
|
|
3️⃣ Helicobacter pylori (en aliento)
|
|
4️⃣ Orina de 24 horas
|
|
5️⃣ Solicitar cotización
|
|
0️⃣ Volver al menú principal
|
|
```
|
|
|
|
### 3. Palabras Clave Automáticas
|
|
- **"precio", "costo", "cuánto"** → Información de precios
|
|
- **"resultado", "resultados"** → Instrucciones para descargar
|
|
- **"horario", "cuando"** → Horarios de atención
|
|
- **"domicilio", "casa"** → Servicio a domicilio
|
|
- **"embarazo"** → Pruebas de embarazo
|
|
- **"paternidad", "ADN"** → Prueba de paternidad
|
|
- **"ubicación", "donde"** → Dirección y mapa
|
|
- **"asesor", "ayuda", "persona"** → Transferir a humano
|
|
- **"gracias"** → Mensaje de despedida
|
|
- **"menú", "inicio"** → Mostrar menú principal
|
|
|
|
## ⚙️ Configuración Avanzada
|
|
|
|
### Horarios de Atención
|
|
Edita en la base de datos o desde el panel:
|
|
```sql
|
|
UPDATE system_config
|
|
SET config_value = '7:00-12:00,14:00-17:00'
|
|
WHERE config_key = 'business_hours_weekday';
|
|
|
|
UPDATE system_config
|
|
SET config_value = '8:00-11:00'
|
|
WHERE config_key = 'business_hours_saturday';
|
|
```
|
|
|
|
### Agregar Nueva Respuesta Automática
|
|
Desde el panel de administración:
|
|
1. Ve a "Respuestas Automáticas"
|
|
2. Click en "Nueva Respuesta"
|
|
3. Configura:
|
|
- Tipo de trigger (keyword, contains, exact, etc.)
|
|
- Palabras clave (separadas por comas)
|
|
- Texto de respuesta
|
|
- Prioridad (1-100, mayor = más prioridad)
|
|
|
|
### Personalizar Menús
|
|
1. Ve a "Menús Configurados"
|
|
2. Click en el menú que quieres editar
|
|
3. Modifica el mensaje de bienvenida o las opciones
|
|
4. Guarda los cambios
|
|
|
|
## 🔧 Personalización
|
|
|
|
### Cambiar Nombre del Laboratorio
|
|
Edita `setup_laboratorio_ximena.sql` antes de instalar, reemplaza:
|
|
```sql
|
|
'Laboratorio Ximena Caicedo' → 'Tu Laboratorio'
|
|
```
|
|
|
|
### Modificar Valores de Exámenes
|
|
Edita los mensajes en la tabla `menu_options` o `autoresponses`:
|
|
```sql
|
|
UPDATE menu_options
|
|
SET response_text = REPLACE(response_text, '$28.000', '$30.000')
|
|
WHERE response_text LIKE '%$28.000%';
|
|
```
|
|
|
|
### Agregar Nuevo Examen al Submenú
|
|
```sql
|
|
INSERT INTO menu_options (menu_id, option_key, option_order, option_text, response_type, response_text, is_active)
|
|
VALUES
|
|
(
|
|
(SELECT id FROM menus WHERE menu_key = 'lab_menu_examenes'),
|
|
'6',
|
|
6,
|
|
'Nuevo Examen',
|
|
'text',
|
|
'Información del nuevo examen...',
|
|
1
|
|
);
|
|
```
|
|
|
|
## 📊 Monitoreo y Logs
|
|
|
|
### Ver Conversaciones Recientes
|
|
```sql
|
|
SELECT phone_number, message_text, direction, created_at
|
|
FROM conversations
|
|
ORDER BY created_at DESC
|
|
LIMIT 50;
|
|
```
|
|
|
|
### Ver Estados Activos
|
|
```sql
|
|
SELECT phone_number, state, state_data, updated_at
|
|
FROM user_states
|
|
WHERE updated_at > DATE_SUB(NOW(), INTERVAL 1 HOUR);
|
|
```
|
|
|
|
### Ver Logs de Webhook
|
|
```sql
|
|
SELECT * FROM webhook_logs
|
|
ORDER BY created_at DESC
|
|
LIMIT 20;
|
|
```
|
|
|
|
## 🐛 Solución de Problemas
|
|
|
|
### El bot no responde
|
|
1. Verifica que el webhook esté configurado correctamente
|
|
2. Revisa los logs de webhook: `SELECT * FROM webhook_logs ORDER BY created_at DESC LIMIT 1`
|
|
3. Verifica las credenciales de WhatsApp API en "Configuración"
|
|
|
|
### Mensajes fuera de horario no funcionan
|
|
1. Verifica la zona horaria del servidor: `date_default_timezone_get()`
|
|
2. Revisa la configuración de horarios en `system_config`
|
|
3. Asegúrate de que `BusinessHoursService.php` existe
|
|
|
|
### Estados no se guardan
|
|
1. Verifica que la tabla `user_states` existe:
|
|
```sql
|
|
SHOW TABLES LIKE 'user_states';
|
|
```
|
|
2. Si no existe, ejecuta: `migrations/add_conversation_states.sql`
|
|
|
|
### NLP no detecta palabras clave
|
|
1. Revisa que las palabras estén en minúsculas en la BD
|
|
2. Verifica que `autoresponses` tiene registros activos:
|
|
```sql
|
|
SELECT COUNT(*) FROM autoresponses WHERE is_active = 1;
|
|
```
|
|
3. Aumenta la prioridad de la respuesta automática
|
|
|
|
## 📞 Soporte
|
|
|
|
Para soporte técnico o consultas:
|
|
- 📧 Email: soporte@ejemplo.com
|
|
- 📱 WhatsApp: +57 XXX XXX XXXX
|
|
- 💻 GitHub: [repositorio]
|
|
|
|
## 📝 Changelog
|
|
|
|
### Versión 1.0.0 (13 de enero de 2026)
|
|
- ✅ Implementación completa del sistema
|
|
- ✅ Menús del laboratorio
|
|
- ✅ 15+ respuestas automáticas
|
|
- ✅ Detección de horarios
|
|
- ✅ Gestión de estados
|
|
- ✅ NLP básico
|
|
- ✅ Validación de datos de pacientes
|
|
- ✅ Instalador automático
|
|
|
|
## 📜 Licencia
|
|
|
|
Este sistema fue desarrollado específicamente para Laboratorio Ximena Caicedo.
|
|
Todos los derechos reservados © 2026
|
|
|
|
---
|
|
|
|
**¡Sistema listo para producción! 🚀**
|
|
|
|
Para comenzar, ejecuta `install_laboratorio.php` y sigue las instrucciones.
|