Compatibilidad con imágenes y contenido multimedia (2025-12-05)
El canal de WhatsApp se ejecuta mediante Baileys Web. Este documento recoge las reglas actuales de manejo multimedia para send, gateway y respuestas del agente.Objetivos
- Enviar contenido multimedia con subtítulos opcionales mediante
openclaw message send --media. - Permitir que las respuestas automáticas de la bandeja de entrada web incluyan contenido multimedia junto con texto.
- Mantener límites razonables y predecibles por tipo.
Superficie de la CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaes opcional; el subtítulo puede estar vacío para envíos solo con contenido multimedia.--dry-runimprime la carga útil resuelta;--jsonemite{ channel, to, messageId, mediaUrl, caption }.
Comportamiento del canal WhatsApp Web
- Entrada: ruta de archivo local o URL HTTP(S).
- Flujo: cargar en un Buffer, detectar el tipo de contenido multimedia y crear la carga útil correcta:
- Imágenes: redimensionar y recomprimir a JPEG (lado máximo 2048 px) apuntando a
channels.whatsapp.mediaMaxMb(predeterminado: 50 MB). - Audio/Voz/Video: paso directo hasta 16 MB; el audio se envía como nota de voz (
ptt: true). - Documentos: cualquier otra cosa, hasta 100 MB, conservando el nombre del archivo cuando esté disponible.
- Imágenes: redimensionar y recomprimir a JPEG (lado máximo 2048 px) apuntando a
- Reproducción estilo GIF de WhatsApp: envía un MP4 con
gifPlayback: true(CLI:--gif-playback) para que los clientes móviles lo reproduzcan en bucle en línea. - La detección de MIME prefiere magic bytes, luego encabezados y después la extensión del archivo.
- El subtítulo proviene de
--messageoreply.text; se permite subtítulo vacío. - Registro: en modo no detallado muestra
↩️/✅; en modo detallado incluye tamaño y ruta/URL de origen.
Pipeline de respuesta automática
getReplyFromConfigdevuelve{ text?, mediaUrl?, mediaUrls? }.- Cuando hay contenido multimedia, el remitente web resuelve rutas locales o URLs usando el mismo pipeline que
openclaw message send. - Si se proporcionan varias entradas multimedia, se envían secuencialmente.
Contenido multimedia entrante a comandos (Pi)
- Cuando los mensajes web entrantes incluyen contenido multimedia, OpenClaw lo descarga en un archivo temporal y expone variables de plantilla:
{{MediaUrl}}pseudo-URL para el contenido multimedia entrante.{{MediaPath}}ruta temporal local escrita antes de ejecutar el comando.
- Cuando un sandbox Docker por sesión está habilitado, el contenido multimedia entrante se copia al espacio de trabajo del sandbox y
MediaPath/MediaUrlse reescriben a una ruta relativa comomedia/inbound/<filename>. - La comprensión multimedia (si se configura mediante
tools.media.*otools.media.modelscompartido) se ejecuta antes de la creación de plantillas y puede insertar bloques[Image],[Audio]y[Video]enBody.- El audio establece
{{Transcript}}y usa la transcripción para el análisis del comando, de modo que los comandos slash sigan funcionando. - Las descripciones de video e imagen conservan cualquier texto de subtítulo para el análisis del comando.
- Si el modelo principal de imagen activo ya admite visión de forma nativa, OpenClaw omite el bloque de resumen
[Image]y pasa la imagen original al modelo en su lugar.
- El audio establece
- De forma predeterminada, solo se procesa el primer archivo adjunto coincidente de imagen/audio/video; establece
tools.media.<cap>.attachmentspara procesar varios archivos adjuntos.
Límites y errores
Límites de envío saliente (envío web de WhatsApp)- Imágenes: hasta
channels.whatsapp.mediaMaxMb(predeterminado: 50 MB) después de la recompresión. - Audio/voz/video: límite de 16 MB; documentos: 100 MB.
- Contenido multimedia demasiado grande o ilegible → error claro en los registros y se omite la respuesta.
- Valor predeterminado de imagen: 10 MB (
tools.media.image.maxBytes). - Valor predeterminado de audio: 20 MB (
tools.media.audio.maxBytes). - Valor predeterminado de video: 50 MB (
tools.media.video.maxBytes). - El contenido multimedia demasiado grande omite la comprensión, pero las respuestas siguen procesándose con el cuerpo original.
Notas para pruebas
- Cubre flujos de envío + respuesta para casos de imagen/audio/documento.
- Valida la recompresión de imágenes (límite de tamaño) y el indicador de nota de voz para audio.
- Asegúrate de que las respuestas con varios elementos multimedia se distribuyan como envíos secuenciales.