Laboratorio Ximena Caicedo
Instalación del Sistema de Chatbot WhatsApp
';
echo ' Verificando conexión a la base de datos...';
flush();
$db = Database::getInstance();
echo ' Conectado ';
echo '
';
$steps[] = ['name' => 'Conexión DB', 'status' => 'success'];
// PASO 2: Crear tabla de estados si no existe
echo '
';
echo ' Creando tabla de estados de conversación...';
flush();
$sqlStates = file_get_contents(__DIR__ . '/migrations/add_conversation_states.sql');
$statementsStates = array_filter(array_map('trim', explode(';', $sqlStates)));
foreach ($statementsStates as $statement) {
if (!empty($statement) && substr($statement, 0, 6) !== 'SELECT') {
$db->getConnection()->exec($statement);
}
}
echo ' Completado ';
echo '
';
$steps[] = ['name' => 'Tabla user_states', 'status' => 'success'];
// PASO 3: Importar menús y respuestas automáticas
echo '
';
echo ' Importando menús y respuestas automáticas...';
flush();
$sqlSetup = file_get_contents(__DIR__ . '/setup_laboratorio_ximena.sql');
$statementsSetup = array_filter(array_map('trim', explode(';', $sqlSetup)));
$menuCount = 0;
$responseCount = 0;
foreach ($statementsSetup as $statement) {
if (!empty($statement) && substr($statement, 0, 2) !== '--') {
if (stripos($statement, 'INSERT INTO menus') !== false) {
$menuCount++;
} elseif (stripos($statement, 'INSERT INTO autoresponses') !== false) {
$responseCount++;
}
try {
$db->getConnection()->exec($statement);
} catch (Exception $e) {
// Ignorar errores de duplicados
if (strpos($e->getMessage(), 'Duplicate entry') === false) {
throw $e;
}
}
}
}
echo " {$menuCount} menús, {$responseCount} respuestas ";
echo '
';
$steps[] = ['name' => 'Menús y respuestas', 'status' => 'success'];
// PASO 4: Verificar servicios
echo '
';
echo ' Verificando servicios del sistema...';
flush();
$services = [
'BusinessHoursService',
'ConversationStateService',
'NLPService',
'MenuService',
'PatientDataValidator',
'BotServiceLab'
];
$servicesOk = true;
foreach ($services as $service) {
$file = __DIR__ . "/services/{$service}.php";
if (!file_exists($file)) {
echo " Falta {$service}.php ";
$servicesOk = false;
break;
}
}
if ($servicesOk) {
echo ' ' . count($services) . ' servicios verificados ';
$steps[] = ['name' => 'Servicios', 'status' => 'success'];
} else {
$success = false;
}
echo '
';
// PASO 5: Obtener estadísticas
echo '
';
echo ' Obteniendo estadísticas...';
flush();
$stmt = $db->query("
SELECT
(SELECT COUNT(*) FROM menus WHERE is_active = 1) as menus_activos,
(SELECT COUNT(*) FROM menu_options WHERE is_active = 1) as opciones_activas,
(SELECT COUNT(*) FROM autoresponses WHERE is_active = 1) as respuestas_activas,
(SELECT COUNT(*) FROM users) as total_usuarios
");
$stats = $stmt->fetch(PDO::FETCH_ASSOC);
echo ' Completado ';
echo '
';
// Mostrar resumen
if ($success) {
echo '
';
echo '
¡Instalación Completada Exitosamente!';
echo '
';
echo '
📊 Estadísticas del Sistema: ';
echo '
';
echo "Menús activos: {$stats['menus_activos']} ";
echo "Opciones de menú: {$stats['opciones_activas']} ";
echo "Respuestas automáticas: {$stats['respuestas_activas']} ";
echo "Usuarios registrados: {$stats['total_usuarios']} ";
echo ' ';
echo '
';
echo '
🚀 Próximos Pasos: ';
echo '
';
echo 'Configura tus credenciales de WhatsApp Business API en el panel de administración ';
echo 'Prueba el menú principal enviando un mensaje de WhatsApp ';
echo 'Revisa las respuestas automáticas en la sección correspondiente ';
echo 'Personaliza los mensajes según las necesidades del laboratorio ';
echo ' ';
echo '
';
echo '
';
}
} catch (Exception $e) {
$success = false;
echo '
';
echo ' Error: ' . htmlspecialchars($e->getMessage());
echo '
';
echo '
';
echo '
Error en la Instalación';
echo '
Hubo un problema durante la instalación. Por favor:
';
echo '
';
echo 'Verifica que la base de datos existe y tiene permisos correctos ';
echo 'Revisa la configuración en config/config.php ';
echo 'Consulta el error arriba para más detalles ';
echo 'Intenta ejecutar la instalación nuevamente ';
echo ' ';
echo '
';
echo '';
echo ' Reintentar Instalación';
echo ' ';
echo '
';
echo '
';
}
?>