Files
whatsapp/scripts/debug_process_message.php
2026-01-21 11:58:17 -05:00

65 lines
2.8 KiB
PHP

<?php
require_once __DIR__ . '/../config/config.php';
$id = $argv[1] ?? null;
if (!$id) { echo "Usage: php debug_process_message.php <webhook_log_id>\n"; exit; }
$db = Database::getInstance();
$row = $db->fetch('SELECT request_body FROM webhook_logs WHERE id = ?', [$id]);
if (!$row) { echo "Log not found\n"; exit; }
$data = json_decode($row['request_body'], true);
$messages = $data['entry'][0]['changes'][0]['value']['messages'] ?? null;
if (!$messages) { echo "No messages in log\n"; exit; }
foreach ($messages as $message) {
echo "--- Message ---\n";
print_r($message);
$phoneNumber = $message['from'] ?? ($message['wa_id'] ?? null);
$messageId = $message['id'] ?? ($message['message_id'] ?? null);
$timestamp = $message['timestamp'] ?? null;
echo "phone=$phoneNumber messageId=$messageId ts=$timestamp\n";
if (empty($phoneNumber) || empty($messageId)) { echo "Missing phone or msg id\n"; continue; }
$existing = $db->fetch('SELECT id FROM conversations WHERE message_id = ?', [$messageId]);
echo "existing: "; var_export((bool)$existing); echo "\n";
$user = $db->fetch('SELECT * FROM users WHERE phone_number = ?', [$phoneNumber]);
if (!$user) { echo "User not found, creating...\n"; $id = $db->insert('users', ['phone_number' => $phoneNumber, 'status' => 'active', 'created_at' => date('Y-m-d H:i:s')]); $user = $db->fetch('SELECT * FROM users WHERE id = ?', [$id]); }
echo "user id: " . $user['id'] . "\n";
$messageText = '';
$messageType = 'text';
$mediaUrl = null; $mimeType = null; $filename = null;
if (isset($message['text']) || (($message['type'] ?? '') === 'text')) {
$messageText = isset($message['text']['body']) ? $message['text']['body'] : ($message['body'] ?? '');
$messageType = 'text';
} elseif (isset($message['image'])) {
$messageText = $message['image']['caption'] ?? '';
$messageType = 'image';
$mediaUrl = $message['image']['url'] ?? ($message['image']['id'] ?? null);
$mimeType = $message['image']['mime_type'] ?? null;
$filename = $message['image']['filename'] ?? null;
}
echo "type=$messageType text=" . substr($messageText,0,100) . " mediaUrl=" . ($mediaUrl ?? 'NULL') . "\n";
$saveData = [
'user_id' => $user['id'],
'message_id' => $messageId,
'direction' => 'incoming',
'message_type' => $messageType,
'content' => $messageText,
'media_url' => $mediaUrl,
'filename' => $filename,
'mime_type' => $mimeType,
'status' => 'received',
'is_read' => 0,
'created_at' => date('Y-m-d H:i:s')
];
try {
$res = $db->insert('conversations', $saveData);
echo "Insert returned: "; var_export($res); echo "\n";
} catch (Exception $e) {
echo "Insert failed: " . $e->getMessage() . "\n";
}
}