Update send_media_message.php
This commit is contained in:
@@ -102,6 +102,37 @@ try {
|
|||||||
error_log("send_media_message.php - Input decoded: " . json_encode($input));
|
error_log("send_media_message.php - Input decoded: " . json_encode($input));
|
||||||
smm_log("Input decoded: " . json_encode($input));
|
smm_log("Input decoded: " . json_encode($input));
|
||||||
|
|
||||||
|
// Debug flag: permitir depuración remota si se pasa debug=true en query o en body
|
||||||
|
$debugMode = (isset($_GET['debug']) && $_GET['debug'] === 'true') || (!empty($input['debug']));
|
||||||
|
$debugInfo = [];
|
||||||
|
|
||||||
|
// Helper: hacer HEAD request para verificar accesibilidad de URL de media
|
||||||
|
function headCheckUrl($url) {
|
||||||
|
$ch = curl_init();
|
||||||
|
curl_setopt_array($ch, [
|
||||||
|
CURLOPT_URL => $url,
|
||||||
|
CURLOPT_NOBODY => true,
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_HEADER => true,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
CURLOPT_TIMEOUT => 10
|
||||||
|
]);
|
||||||
|
$res = curl_exec($ch);
|
||||||
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||||
|
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
|
||||||
|
$contentLength = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
|
||||||
|
$err = curl_error($ch);
|
||||||
|
if (version_compare(PHP_VERSION, '8.5.0', '<')) {
|
||||||
|
curl_close($ch);
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
'http_code' => $httpCode,
|
||||||
|
'content_type' => $contentType,
|
||||||
|
'content_length' => $contentLength,
|
||||||
|
'error' => $err
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
// Validar campos requeridos
|
// Validar campos requeridos
|
||||||
if (empty($input['recipient']) || empty($input['media_url']) || empty($input['media_type'])) {
|
if (empty($input['recipient']) || empty($input['media_url']) || empty($input['media_type'])) {
|
||||||
$missing = [];
|
$missing = [];
|
||||||
@@ -172,7 +203,22 @@ try {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// URL pública, usar método normal con link
|
// URL pública, usar método normal con link
|
||||||
error_log("send_media_message.php - URL pública detectada, usando link directo");
|
error_log("send_media_message.php - URL pública detectada, usando link directo: " . $mediaUrl);
|
||||||
|
smm_log("Public URL: " . $mediaUrl);
|
||||||
|
|
||||||
|
// Chequear accesibilidad de la URL antes de pedir a WhatsApp que la descargue
|
||||||
|
try {
|
||||||
|
$head = headCheckUrl($mediaUrl);
|
||||||
|
smm_log("HEAD check: " . json_encode($head));
|
||||||
|
if ($debugMode) $debugInfo['media_head'] = $head;
|
||||||
|
if (isset($head['http_code']) && intval($head['http_code']) >= 400) {
|
||||||
|
smm_log("send_media_message.php - Warning: media URL returned HTTP " . $head['http_code']);
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
smm_log("send_media_message.php - HEAD check failed: " . $e->getMessage());
|
||||||
|
if ($debugMode) $debugInfo['media_head_error'] = $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
$response = sendMediaByLinkToWhatsApp($whatsapp, $recipient, $mediaUrl, $mediaType, $caption, $filename);
|
$response = sendMediaByLinkToWhatsApp($whatsapp, $recipient, $mediaUrl, $mediaType, $caption, $filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,6 +251,7 @@ try {
|
|||||||
if ($response && $sentMessageId) {
|
if ($response && $sentMessageId) {
|
||||||
error_log("send_media_message.php - Respuesta de WhatsApp exitosa: " . json_encode($response));
|
error_log("send_media_message.php - Respuesta de WhatsApp exitosa: " . json_encode($response));
|
||||||
smm_log("WhatsApp response (successful): " . json_encode($response));
|
smm_log("WhatsApp response (successful): " . json_encode($response));
|
||||||
|
if ($debugMode) $debugInfo['whatsapp_response'] = $response;
|
||||||
|
|
||||||
// Guardar en base de datos
|
// Guardar en base de datos
|
||||||
$db = Database::getInstance();
|
$db = Database::getInstance();
|
||||||
@@ -242,12 +289,15 @@ try {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo json_encode([
|
$out = [
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'message' => 'Mensaje multimedia enviado correctamente',
|
'message' => 'Mensaje multimedia enviado correctamente',
|
||||||
'media_type' => $mediaType,
|
'media_type' => $mediaType,
|
||||||
'data' => $response
|
'data' => $response
|
||||||
]);
|
];
|
||||||
|
if ($debugMode) $out['debug'] = $debugInfo;
|
||||||
|
|
||||||
|
echo json_encode($out);
|
||||||
} else {
|
} else {
|
||||||
error_log("send_media_message.php - Respuesta de WhatsApp sin message_id: " . json_encode($response));
|
error_log("send_media_message.php - Respuesta de WhatsApp sin message_id: " . json_encode($response));
|
||||||
|
|
||||||
@@ -267,11 +317,15 @@ try {
|
|||||||
if (ob_get_length()) ob_clean();
|
if (ob_get_length()) ob_clean();
|
||||||
|
|
||||||
http_response_code(500);
|
http_response_code(500);
|
||||||
echo json_encode([
|
$errOut = [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'error' => $e->getMessage(),
|
'error' => $e->getMessage(),
|
||||||
'file' => basename($e->getFile()),
|
'file' => basename($e->getFile()),
|
||||||
'line' => $e->getLine()
|
'line' => $e->getLine()
|
||||||
], JSON_UNESCAPED_UNICODE);
|
];
|
||||||
|
if (isset($debugMode) && $debugMode) {
|
||||||
|
$errOut['debug'] = $debugInfo;
|
||||||
|
}
|
||||||
|
echo json_encode($errOut, JSON_UNESCAPED_UNICODE);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
Reference in New Issue
Block a user