Files
whatsapp/README_LABORATORIO.md
T
2026-01-21 08:28:54 -05:00

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.