From 8a7e7a66584a8d3960338986611567b1ae9d0c5d Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 3 Jul 2026 14:28:33 -0500 Subject: [PATCH] Fix chat media upload: extract id from uploadMedia result, remap audio/webm uploadMedia() returns the full API response array, not just the id string. chat_upload_media.php was passing the whole array as $mediaId, producing {"image": {"id": {"id": "...", "messaging_product": "..."}}} which violated WhatsApp JSON schema for the media id field. Also remap audio/webm (browser MediaRecorder default) to audio/ogg at upload time since WhatsApp's media API rejects webm but accepts ogg/opus. Co-Authored-By: Claude Sonnet 4.6 --- modules/turnero/api/chat_upload_media.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/turnero/api/chat_upload_media.php b/modules/turnero/api/chat_upload_media.php index 28c19e2..9bbae0a 100644 --- a/modules/turnero/api/chat_upload_media.php +++ b/modules/turnero/api/chat_upload_media.php @@ -42,9 +42,15 @@ try { $wa = new WhatsAppService('turnero'); + // WhatsApp no acepta audio/webm — reenviar como audio/ogg (mismo codec Opus) + $uploadMime = (str_starts_with($mime, 'audio/webm')) ? 'audio/ogg' : $mime; + // Subir a WhatsApp Media API - $mediaId = $wa->uploadMedia($file['tmp_name'], $mime); - if (!$mediaId) tmErr('No se pudo subir el archivo a WhatsApp', 502); + $uploadResult = $wa->uploadMedia($file['tmp_name'], $uploadMime); + if (!$uploadResult || !isset($uploadResult['id'])) { + tmErr('No se pudo subir el archivo a WhatsApp', 502); + } + $mediaId = $uploadResult['id']; $opId = $_SESSION['admin_id'] ?? $_SESSION['user_id'] ?? null; $extra = ['canal' => 'turnero'];