fix: corregir reproducción de audio en chat turnero
- URL absoluta para local_file y media_url_external (igual que conversations.php)
- Múltiples <source> con MIME types (ogg, mpeg, wav, webm) para compatibilidad
- onerror handler cuando el archivo no está disponible
- Fallback visible cuando mediaSrc es null ("Audio pendiente de descarga")
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
53dc492b5e
commit
282c372de3
@@ -752,7 +752,9 @@ function buildBubble(msg) {
|
||||
div.dataset.msgId = msg.id;
|
||||
div.dataset.waId = msg.message_id || '';
|
||||
|
||||
const mediaSrc = msg.local_file ? ('../' + msg.local_file) : (msg.media_url_external || null);
|
||||
const _base = window.location.origin;
|
||||
const _toAbs = p => p ? (p.startsWith('http') ? p : `${_base}/${p.replace(/^\//, '')}`) : null;
|
||||
const mediaSrc = msg.local_file ? _toAbs(msg.local_file) : (msg.media_url_external ? _toAbs(msg.media_url_external) : null);
|
||||
let content = '';
|
||||
|
||||
if (msg.message_type === 'image' && mediaSrc) {
|
||||
@@ -762,8 +764,18 @@ function buildBubble(msg) {
|
||||
} else if (msg.message_type === 'video' && mediaSrc) {
|
||||
content = `<video class="msg-video" src="${escHtml(mediaSrc)}" controls preload="metadata"></video>`;
|
||||
if (msg.content) content += `<div style="font-size:.82rem;margin-top:2px">${escHtml(msg.content)}</div>`;
|
||||
} else if (msg.message_type === 'audio' && mediaSrc) {
|
||||
content = `<audio class="msg-audio" src="${escHtml(mediaSrc)}" controls preload="metadata"></audio>`;
|
||||
} else if (msg.message_type === 'audio') {
|
||||
if (mediaSrc) {
|
||||
content = `<audio class="msg-audio" controls preload="metadata"
|
||||
onerror="this.outerHTML='<div style=\\'font-size:.78rem;color:#e53e3e;padding:4px 0\\'><i class=\\'fas fa-exclamation-circle\\'></i> Audio no disponible</div>'">
|
||||
<source src="${escHtml(mediaSrc)}" type="audio/ogg">
|
||||
<source src="${escHtml(mediaSrc)}" type="audio/mpeg">
|
||||
<source src="${escHtml(mediaSrc)}" type="audio/wav">
|
||||
<source src="${escHtml(mediaSrc)}" type="audio/webm">
|
||||
</audio>`;
|
||||
} else {
|
||||
content = `<div style="font-size:.78rem;color:#aaa;padding:4px 0"><i class="fas fa-microphone-slash"></i> Audio pendiente de descarga</div>`;
|
||||
}
|
||||
} else if (msg.message_type === 'document' && mediaSrc) {
|
||||
const icon = (msg.mime_type || '').includes('pdf') ? 'fa-file-pdf' :
|
||||
(msg.mime_type || '').includes('spreadsheet') || (msg.mime_type || '').includes('excel') ? 'fa-file-excel' :
|
||||
|
||||
Reference in New Issue
Block a user