Validación del Sistema WhatsApp Bot

Información del Sistema

Versión:

Desarrollador:

URL Base:

Zona Horaria:

Fecha/Hora:

='); $tests[] = [ 'name' => 'Versión de PHP', 'status' => $phpOk ? 'success' : 'error', 'message' => "PHP $phpVersion " . ($phpOk ? '✓' : '✗ (Se requiere PHP 8.0+)'), 'details' => $phpOk ? 'Versión compatible' : 'Actualiza a PHP 8.0 o superior' ]; // Test 2: Extensiones PHP $requiredExtensions = ['pdo', 'pdo_mysql', 'curl', 'json', 'mbstring', 'openssl']; $missingExtensions = []; foreach ($requiredExtensions as $ext) { if (!extension_loaded($ext)) { $missingExtensions[] = $ext; } } $extOk = empty($missingExtensions); $tests[] = [ 'name' => 'Extensiones PHP', 'status' => $extOk ? 'success' : 'error', 'message' => $extOk ? 'Todas las extensiones están disponibles ✓' : 'Faltan extensiones: ' . implode(', ', $missingExtensions), 'details' => $extOk ? 'PDO, cURL, JSON, mbstring, OpenSSL' : 'Instala las extensiones faltantes' ]; // Test 3: Conexión a Base de Datos $dbOk = false; $dbMessage = ''; $dbDetails = ''; try { $db = Database::getInstance(); $result = $db->fetch("SELECT 1 as test"); $dbOk = ($result['test'] == 1); $dbMessage = 'Conexión exitosa ✓'; $dbDetails = 'Host: ' . DB_HOST . ', DB: ' . DB_NAME; } catch (Exception $e) { $dbMessage = 'Error de conexión: ' . $e->getMessage(); $dbDetails = 'Verifica la configuración en config.php'; } $tests[] = [ 'name' => 'Base de Datos', 'status' => $dbOk ? 'success' : 'error', 'message' => $dbMessage, 'details' => $dbDetails ]; // Test 4: Estructura de tablas (solo si DB está OK) $tablesOk = false; $tablesMessage = ''; $tablesDetails = ''; if ($dbOk) { try { $requiredTables = ['users', 'conversations', 'menus', 'menu_options', 'auto_responses', 'system_config']; $db = Database::getInstance(); $existingTables = []; $missingTables = []; foreach ($requiredTables as $table) { $result = $db->fetch("SHOW TABLES LIKE '$table'"); if ($result) { $existingTables[] = $table; } else { $missingTables[] = $table; } } $tablesOk = empty($missingTables); $tablesMessage = $tablesOk ? 'Todas las tablas existen ✓' : 'Faltan tablas: ' . implode(', ', $missingTables); $tablesDetails = 'Tablas encontradas: ' . count($existingTables) . '/' . count($requiredTables); } catch (Exception $e) { $tablesMessage = 'Error verificando tablas: ' . $e->getMessage(); $tablesDetails = 'Ejecuta el instalador para crear las tablas'; } } else { $tablesMessage = 'No se puede verificar (DB no disponible)'; $tablesDetails = 'Primero arregla la conexión a la base de datos'; } $tests[] = [ 'name' => 'Estructura de Base de Datos', 'status' => $tablesOk ? 'success' : ($dbOk ? 'error' : 'warning'), 'message' => $tablesMessage, 'details' => $tablesDetails ]; // Test 5: Archivos críticos $criticalFiles = [ 'classes/Database.php', 'services/BotService.php', 'services/WhatsAppService.php', 'api/webhook.php', 'api/send_message.php' ]; $missingFiles = []; foreach ($criticalFiles as $file) { if (!file_exists($file)) { $missingFiles[] = $file; } } $filesOk = empty($missingFiles); $tests[] = [ 'name' => 'Archivos Críticos', 'status' => $filesOk ? 'success' : 'error', 'message' => $filesOk ? 'Todos los archivos críticos están presentes ✓' : 'Faltan archivos: ' . implode(', ', $missingFiles), 'details' => 'Classes, Services, APIs' ]; // Test 6: Permisos de archivos $logsDir = 'logs'; $logsWritable = is_dir($logsDir) && is_writable($logsDir); $tests[] = [ 'name' => 'Permisos de Escritura', 'status' => $logsWritable ? 'success' : 'warning', 'message' => $logsWritable ? 'Directorio de logs escribible ✓' : 'Directorio de logs no escribible', 'details' => $logsWritable ? 'Los logs se pueden escribir correctamente' : 'chmod 755 en el directorio logs' ]; // Test 7: Configuración WhatsApp $whatsappErrors = validateWhatsAppConfig(); $whatsappOk = empty($whatsappErrors); $tests[] = [ 'name' => 'Configuración WhatsApp', 'status' => $whatsappOk ? 'success' : 'warning', 'message' => $whatsappOk ? 'WhatsApp configurado correctamente ✓' : 'Configuración pendiente', 'details' => $whatsappOk ? 'Token, Phone ID y Webhook configurados' : implode(', ', $whatsappErrors) ]; // Test 8: Estado de instalación $installationCompleted = isInstallationCompleted(); $tests[] = [ 'name' => 'Estado de Instalación', 'status' => $installationCompleted ? 'success' : 'info', 'message' => $installationCompleted ? 'Instalación completada ✓' : 'Instalación pendiente', 'details' => $installationCompleted ? 'Sistema listo para usar' : 'Ejecuta install.php para completar' ]; // Test 9: Conectividad cURL $curlOk = false; $curlMessage = ''; if (function_exists('curl_version')) { $curlInfo = curl_version(); $curlOk = true; $curlMessage = 'cURL disponible v' . $curlInfo['version'] . ' ✓'; } else { $curlMessage = 'cURL no disponible'; } $tests[] = [ 'name' => 'Conectividad cURL', 'status' => $curlOk ? 'success' : 'error', 'message' => $curlMessage, 'details' => $curlOk ? 'Puede comunicarse con APIs externas' : 'Se requiere cURL para WhatsApp API' ]; // Test 10: Memoria y límites PHP $memoryLimit = ini_get('memory_limit'); $maxExecution = ini_get('max_execution_time'); $postMaxSize = ini_get('post_max_size'); $uploadMaxSize = ini_get('upload_max_filesize'); $tests[] = [ 'name' => 'Límites PHP', 'status' => 'info', 'message' => 'Configuración actual del servidor', 'details' => "Memoria: $memoryLimit, Ejecución: {$maxExecution}s, POST: $postMaxSize, Upload: $uploadMaxSize" ]; // Mostrar resultados foreach ($tests as $test) { $statusClass = 'test-' . $test['status']; $iconClass = [ 'success' => 'fa-check-circle text-success', 'error' => 'fa-times-circle text-danger', 'warning' => 'fa-exclamation-triangle text-warning', 'info' => 'fa-info-circle text-info' ][$test['status']]; echo "
"; echo "
{$test['name']}
"; echo "

{$test['message']}

"; echo "{$test['details']}"; echo "
"; } // Resumen $totalTests = count($tests); $successCount = count(array_filter($tests, fn($t) => $t['status'] === 'success')); $errorCount = count(array_filter($tests, fn($t) => $t['status'] === 'error')); $warningCount = count(array_filter($tests, fn($t) => $t['status'] === 'warning')); $infoCount = count(array_filter($tests, fn($t) => $t['status'] === 'info')); ?>
Resumen de Validación

Exitosos

Errores

Advertencias

Información

Sistema Validado Correctamente

Tu instalación de WhatsApp Bot está lista para funcionar

Acceder al Sistema

Se Requiere Configuración

Hay error(es) que deben solucionarse antes de continuar

Ir al Instalador
WhatsApp Bot Manager v -