This commit is contained in:
lizandrogd
2026-01-21 10:57:02 -05:00
parent f6a62ce360
commit 5e9220590a
7 changed files with 159 additions and 5 deletions
+16 -5
View File
@@ -160,18 +160,27 @@ class WhatsAppWebhook {
} elseif (isset($message['image'])) {
$messageText = $message['image']['caption'] ?? '';
$messageType = 'image';
$mediaUrl = $message['image']['id'] ?? null;
// Preferir URL directo si viene en el webhook (evita resolver media_id)
$mediaUrl = $message['image']['url'] ?? ($message['image']['id'] ?? null);
$mimeType = $message['image']['mime_type'] ?? null;
$filename = $message['image']['filename'] ?? null;
} elseif (isset($message['audio'])) {
$messageType = 'audio';
$mediaUrl = $message['audio']['id'] ?? null;
$mediaUrl = $message['audio']['url'] ?? ($message['audio']['id'] ?? null);
$mimeType = $message['audio']['mime_type'] ?? null;
$filename = $message['audio']['filename'] ?? null;
} elseif (isset($message['video'])) {
$messageText = $message['video']['caption'] ?? '';
$messageType = 'video';
$mediaUrl = $message['video']['id'] ?? null;
$mediaUrl = $message['video']['url'] ?? ($message['video']['id'] ?? null);
$mimeType = $message['video']['mime_type'] ?? null;
$filename = $message['video']['filename'] ?? null;
} elseif (isset($message['document'])) {
$messageText = $message['document']['filename'] ?? '';
$messageType = 'document';
$mediaUrl = $message['document']['id'] ?? null;
$mediaUrl = $message['document']['url'] ?? ($message['document']['id'] ?? null);
$mimeType = $message['document']['mime_type'] ?? null;
$filename = $message['document']['filename'] ?? null;
}
// Guardar mensaje en base de datos
@@ -182,6 +191,8 @@ class WhatsAppWebhook {
'message_type' => $messageType,
'content' => $messageText,
'media_url' => $mediaUrl,
'filename' => isset($filename) ? $filename : null,
'mime_type' => isset($mimeType) ? $mimeType : null,
'status' => 'received',
'is_read' => 0
];
@@ -307,7 +318,7 @@ class WhatsAppWebhook {
if (isset($entry['changes'])) {
foreach ($entry['changes'] as $change) {
error_log("processPayload: processing change field=" . ($change['field'] ?? ''));
if (($change['field'] ?? '') === 'conversations' && isset($change['value'])) {
if ((($change['field'] ?? '') === 'conversations' || ($change['field'] ?? '') === 'messages' || isset($change['value']['messages'])) && isset($change['value'])) {
try {
$this->processconversations($change['value']);
} catch (Exception $e) {