Files
whatsapp/test_text_message.php
T
2026-01-12 16:13:41 -05:00

92 lines
3.4 KiB
PHP

<?php
/**
* Test directo para mensajes de texto
*/
require_once 'config/config.php';
// Simular datos de entrada para mensaje de texto
$testData = [
'recipient' => '+1234567890',
'type' => 'text',
'message' => 'Mensaje de prueba desde test directo'
];
echo "=== TEST MENSAJE DE TEXTO ===\n";
echo "Datos de entrada: " . json_encode($testData) . "\n\n";
try {
// Test 1: Verificar conexión a la base de datos
$db = Database::getInstance();
echo "✅ Conexión a base de datos: OK\n";
// Test 2: Verificar si existe la tabla users
$stmt = $db->query("SHOW TABLES LIKE 'users'");
$usersTable = $stmt->fetch();
echo "✅ Tabla users existe: " . ($usersTable ? 'OK' : 'NO') . "\n";
// Test 3: Verificar si existe la tabla conversations
$stmt = $db->query("SHOW TABLES LIKE 'conversations'");
$conversationsTable = $stmt->fetch();
echo "✅ Tabla conversations existe: " . ($conversationsTable ? 'OK' : 'NO') . "\n";
// Test 4: Simular búsqueda de usuario
$recipient = $testData['recipient'];
$stmt = $db->query("SELECT id FROM users WHERE phone_number = ? LIMIT 1", [$recipient]);
$user = $stmt->fetch();
echo "📱 Usuario existente con teléfono $recipient: " . ($user ? "ID=" . $user['id'] : 'NO EXISTE') . "\n";
// Test 5: Simular creación de usuario si no existe
if (!$user) {
echo "🔄 Intentando crear nuevo usuario...\n";
$stmt = $db->query(
"INSERT INTO users (phone_number, name, created_at) VALUES (?, ?, NOW())",
[$recipient, $recipient]
);
$userId = $db->lastInsertId();
echo "✅ Usuario creado con ID: $userId\n";
} else {
$userId = $user['id'];
echo "✅ Usuario existente con ID: $userId\n";
}
// Test 6: Verificar ventana de 24 horas
if ($userId) {
$stmt = $db->query(
"SELECT MAX(created_at) as last_message FROM conversations
WHERE user_id = ? AND direction = 'incoming'
AND created_at >= DATE_SUB(NOW(), INTERVAL 24 HOUR)",
[$userId]
);
$lastMessage = $stmt->fetch();
echo "⏰ Último mensaje entrante en 24h: " . ($lastMessage['last_message'] ?? 'NINGUNO') . "\n";
if (!$lastMessage || !$lastMessage['last_message']) {
echo "⚠️ Usuario fuera de ventana de 24h - Solo plantillas permitidas\n";
} else {
echo "✅ Usuario dentro de ventana de 24h - Mensajes de texto permitidos\n";
}
}
// Test 7: Simular guardado de mensaje
if ($userId) {
echo "💾 Intentando guardar mensaje en conversations...\n";
$messageContent = $testData['message'];
$messageType = $testData['type'];
$stmt = $db->query(
"INSERT INTO conversations (user_id, content, direction, message_type, status, message_id, created_at) VALUES (?, ?, 'outgoing', ?, 'sent', ?, NOW())",
[$userId, $messageContent, $messageType, 'test_message_' . time()]
);
echo "✅ Mensaje guardado correctamente en conversations\n";
}
echo "\n=== RESULTADO ===\n";
echo "✅ Todas las operaciones de base de datos funcionan correctamente\n";
echo "✅ El problema debería estar resuelto\n";
} catch (Exception $e) {
echo "❌ ERROR: " . $e->getMessage() . "\n";
echo "Stack trace: " . $e->getTraceAsString() . "\n";
}
?>