up
This commit is contained in:
@@ -70,6 +70,8 @@ try {
|
||||
'message_type' => $msg['message_type'],
|
||||
'content' => $msg['content'] ?? '',
|
||||
'media_url' => (isset($msg['media_url']) && $msg['media_url']) ? (preg_match('#^https?://#i', $msg['media_url']) ? $msg['media_url'] : ("api/get_media.php?id=" . urlencode($msg['media_url']))) : null,
|
||||
'filename' => $msg['filename'] ?? null,
|
||||
'mime_type' => $msg['mime_type'] ?? null,
|
||||
'status' => $msg['status'] ?? 'sent',
|
||||
'created_at' => $msg['created_at'],
|
||||
'time' => date('H:i', strtotime($msg['created_at'])),
|
||||
|
||||
@@ -87,6 +87,8 @@ try {
|
||||
'content' => $msg['content'] ?? '',
|
||||
'message_id' => $msg['message_id'] ?? null,
|
||||
'media_url' => (isset($msg['media_url']) && $msg['media_url']) ? (preg_match('#^https?://#i', $msg['media_url']) ? $msg['media_url'] : ("api/get_media.php?id=" . urlencode($msg['media_url']))) : null,
|
||||
'filename' => $msg['filename'] ?? null,
|
||||
'mime_type' => $msg['mime_type'] ?? null,
|
||||
'user_phone' => $msg['user_phone'] ?? null,
|
||||
'direction' => $msg['direction'] ?? 'incoming',
|
||||
'message_type' => $msg['message_type'] ?? 'text',
|
||||
|
||||
+16
-5
@@ -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) {
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../config/config.php';
|
||||
try {
|
||||
$db = Database::getInstance();
|
||||
$row = $db->fetch('SELECT * FROM conversations WHERE message_id = :mid', ['mid' => 'wamid.TEST123']);
|
||||
if ($row) {
|
||||
echo "FOUND:\n" . json_encode($row, JSON_PRETTY_PRINT) . "\n";
|
||||
} else {
|
||||
echo "NOT FOUND\n";
|
||||
}
|
||||
} catch (Throwable $t) {
|
||||
echo "Error: " . $t->getMessage() . "\n";
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
// Script para reproducir payload de ejemplo y verificar que media_url se guarde como URL cuando existe
|
||||
require_once __DIR__ . '/../config/config.php';
|
||||
require_once __DIR__ . '/../api/webhook.php';
|
||||
|
||||
$sample = json_decode('{
|
||||
"object": "whatsapp_business_account",
|
||||
"entry": [
|
||||
{
|
||||
"id": "639871912520412",
|
||||
"changes": [
|
||||
{
|
||||
"value": {
|
||||
"messaging_product": "whatsapp",
|
||||
"metadata": {
|
||||
"display_phone_number": "573053370116",
|
||||
"phone_number_id": "959898150536936"
|
||||
},
|
||||
"contacts": [
|
||||
{
|
||||
"profile": { "name": "Usite" },
|
||||
"wa_id": "573168950803"
|
||||
}
|
||||
],
|
||||
"messages": [
|
||||
{
|
||||
"from": "573168950803",
|
||||
"id": "wamid.TEST123",
|
||||
"timestamp": "1769010028",
|
||||
"type": "image",
|
||||
"image": {
|
||||
"mime_type": "image/jpeg",
|
||||
"sha256": "uzRfL5tvbqab4eorbpRrPr4Simdfknt0pRxHK5VGqOo=",
|
||||
"id": "1211305863907885",
|
||||
"url": "https://lookaside.fbsbx.com/whatsapp_business/attachments/?mid=1211305863907885&source=webhook&ext=1769010330&hash=EXAMPLE"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"field": "messages"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}', true);
|
||||
|
||||
try {
|
||||
$webhook = new WhatsAppWebhook();
|
||||
$ok = $webhook->processPayload($sample);
|
||||
echo "processPayload returned: " . ($ok ? 'true' : 'false') . "\n";
|
||||
|
||||
// Consultar DB para ver entrada
|
||||
$db = Database::getInstance();
|
||||
$row = $db->fetch("SELECT * FROM conversations WHERE message_id = :mid", ['mid' => 'wamid.TEST123']);
|
||||
echo json_encode($row, JSON_PRETTY_PRINT);
|
||||
} catch (Throwable $t) {
|
||||
echo "Error: " . $t->getMessage() . "\n";
|
||||
echo $t->getTraceAsString();
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../config/config.php';
|
||||
require_once __DIR__ . '/../api/webhook.php';
|
||||
|
||||
$sample = json_decode('{
|
||||
"object": "whatsapp_business_account",
|
||||
"entry": [
|
||||
{
|
||||
"id": "639871912520412",
|
||||
"changes": [
|
||||
{
|
||||
"value": {
|
||||
"messaging_product": "whatsapp",
|
||||
"metadata": {
|
||||
"display_phone_number": "573053370116",
|
||||
"phone_number_id": "959898150536936"
|
||||
},
|
||||
"contacts": [
|
||||
{
|
||||
"profile": { "name": "Usite" },
|
||||
"wa_id": "573168950803"
|
||||
}
|
||||
],
|
||||
"messages": [
|
||||
{
|
||||
"from": "573168950803",
|
||||
"id": "wamid.TESTURL",
|
||||
"timestamp": "1769010028",
|
||||
"type": "image",
|
||||
"image": {
|
||||
"mime_type": "image/jpeg",
|
||||
"sha256": "uzRfL5tvbqab4eorbpRrPr4Simdfknt0pRxHK5VGqOo=",
|
||||
"id": "1211305863907885",
|
||||
"url": "https://lookaside.fbsbx.com/whatsapp_business/attachments/?mid=1211305863907885&source=webhook&ext=1769010330&hash=EXAMPLE"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"field": "messages"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}', true);
|
||||
|
||||
try {
|
||||
$webhook = new WhatsAppWebhook();
|
||||
$ok = $webhook->processPayload($sample);
|
||||
echo "processPayload returned: " . ($ok ? 'true' : 'false') . "\n";
|
||||
|
||||
$db = Database::getInstance();
|
||||
$row = $db->fetchAll('SELECT * FROM conversations WHERE message_id LIKE :mid', ['mid' => '%TESTURL%']);
|
||||
echo "Rows matching TESTURL: " . count($row) . "\n";
|
||||
echo json_encode($row, JSON_PRETTY_PRINT) . "\n";
|
||||
} catch (Throwable $t) {
|
||||
echo "Error: " . $t->getMessage() . "\n";
|
||||
echo $t->getTraceAsString();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../config/config.php';
|
||||
try {
|
||||
$db = Database::getInstance();
|
||||
$rows = $db->fetchAll('SELECT * FROM conversations ORDER BY created_at DESC LIMIT 5');
|
||||
echo json_encode($rows, JSON_PRETTY_PRINT);
|
||||
} catch (Throwable $t) {
|
||||
echo "Error: " . $t->getMessage() . "\n";
|
||||
}
|
||||
Reference in New Issue
Block a user