fix: reacciones y audio en chat turnero

- chat_react: guardaba en tabla `messages` en lugar de `conversations` (tabla real del chat)
- chat_react: columna era `whatsapp_message_id`; la correcta es `message_id`
- chat.php: sendReactionEmoji actualiza la burbuja DOM inmediatamente sin esperar poll
- chat_upload_media: mime_content_type() devuelve video/webm en Linux para audio grabado;
  ahora cualquier mime con "webm" se remapea a audio/ogg antes de determinar mediaType

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-03 17:24:35 -05:00
co-authored by Claude Sonnet 4.6
parent ab72750410
commit f975844d9d
3 changed files with 31 additions and 11 deletions
+10 -7
View File
@@ -22,9 +22,15 @@ if ($file['error'] !== UPLOAD_ERR_OK) tmErr('Error al subir archivo: código ' .
$maxBytes = 64 * 1024 * 1024; // 64 MB
if ($file['size'] > $maxBytes) tmErr('El archivo supera el límite de 64 MB');
$mime = mime_content_type($file['tmp_name']) ?: $file['type'];
$caption = trim($_POST['caption'] ?? '');
$isVoice = !empty($_POST['is_voice']);
$detectedMime = mime_content_type($file['tmp_name']) ?: $file['type'];
$browserMime = $file['type'] ?: '';
$caption = trim($_POST['caption'] ?? '');
$isVoice = !empty($_POST['is_voice']);
// mime_content_type() returns video/webm for browser-recorded audio (same WebM container).
// WhatsApp rejects webm; map to audio/ogg (same Opus codec, accepted format).
$mime = (str_contains($detectedMime, 'webm') || str_contains($browserMime, 'webm'))
? 'audio/ogg' : $detectedMime;
// Determinar tipo de media
if (str_starts_with($mime, 'image/')) $mediaType = 'image';
@@ -42,11 +48,8 @@ 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
$uploadResult = $wa->uploadMedia($file['tmp_name'], $uploadMime);
$uploadResult = $wa->uploadMedia($file['tmp_name'], $mime);
if (!$uploadResult || !isset($uploadResult['id'])) {
tmErr('No se pudo subir el archivo a WhatsApp', 502);
}