Nodes and media
Supporto per immagini e contenuti multimediali
Il canale WhatsApp funziona tramite Baileys Web. Questo documento descrive le regole attuali di gestione dei contenuti multimediali per invii, Gateway e risposte degli agenti.
Obiettivi
- Inviare contenuti multimediali con didascalie opzionali tramite
openclaw message send --media. - Consentire alle risposte automatiche dalla casella in arrivo web di includere contenuti multimediali insieme al testo.
- Mantenere limiti per tipo sensati e prevedibili.
Superficie CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaè opzionale; la didascalia può essere vuota per invii di soli contenuti multimediali.--dry-runstampa il payload risolto;--jsonemette{ channel, to, messageId, mediaUrl, caption }.
Comportamento del canale WhatsApp Web
- Input: percorso di file locale oppure URL HTTP(S).
- Flusso: carica in un Buffer, rileva il tipo di contenuto multimediale e costruisce il payload corretto:
- Immagini: ridimensionamento e ricompressione in JPEG (lato massimo 2048 px) puntando a
channels.whatsapp.mediaMaxMb(predefinito: 50 MB). - Audio/voce/video: pass-through fino a 16 MB; l'audio viene inviato come nota vocale (
ptt: true). - Documenti: qualsiasi altra cosa, fino a 100 MB, con nome file preservato quando disponibile.
- Immagini: ridimensionamento e ricompressione in JPEG (lato massimo 2048 px) puntando a
- Riproduzione in stile GIF su WhatsApp: invia un MP4 con
gifPlayback: true(CLI:--gif-playback) così i client mobili lo riproducono in loop inline. - Il rilevamento MIME preferisce i magic byte, poi gli header, poi l'estensione del file.
- La didascalia viene da
--messageoreply.text; è consentita una didascalia vuota. - Logging: la modalità non dettagliata mostra
↩️/✅; quella dettagliata include dimensione e percorso/URL di origine.
Pipeline di risposta automatica
getReplyFromConfigrestituisce{ text?, mediaUrl?, mediaUrls? }.- Quando sono presenti contenuti multimediali, il mittente web risolve percorsi locali o URL usando la stessa pipeline di
openclaw message send. - Se fornite, più voci multimediali vengono inviate in sequenza.
Contenuti multimediali in ingresso verso i comandi (Pi)
- Quando i messaggi web in ingresso includono contenuti multimediali, OpenClaw li scarica in un file temporaneo ed espone variabili di templating:
- pseudo-URL
{{MediaUrl}}per il contenuto multimediale in ingresso. - percorso temporaneo locale
{{MediaPath}}scritto prima di eseguire il comando.
- pseudo-URL
- Quando è abilitata una sandbox Docker per sessione, i contenuti multimediali in ingresso vengono copiati nello spazio di lavoro della sandbox e
MediaPath/MediaUrlvengono riscritti in un percorso relativo comemedia/inbound/<filename>. - La comprensione dei contenuti multimediali (se configurata tramite
tools.media.*otools.media.modelscondivisi) viene eseguita prima del templating e può inserire blocchi[Image],[Audio]e[Video]inBody.- L'audio imposta
{{Transcript}}e usa la trascrizione per il parsing dei comandi, così i comandi slash continuano a funzionare. - Le descrizioni di video e immagini preservano eventuale testo della didascalia per il parsing dei comandi.
- Se il modello di immagine primario attivo supporta già nativamente la visione, OpenClaw salta il blocco di riepilogo
[Image]e passa invece l'immagine originale al modello.
- L'audio imposta
- Per impostazione predefinita viene elaborato solo il primo allegato immagine/audio/video corrispondente; imposta
tools.media.<cap>.attachmentsper elaborare più allegati.
Limiti ed errori
Limiti di invio in uscita (invio web WhatsApp)
- Immagini: fino a
channels.whatsapp.mediaMaxMb(predefinito: 50 MB) dopo la ricompressione. - Audio/voce/video: limite di 16 MB; documenti: limite di 100 MB.
- Contenuti multimediali troppo grandi o illeggibili → errore chiaro nei log e la risposta viene saltata.
Limiti di comprensione dei contenuti multimediali (trascrizione/descrizione)
- Immagine predefinita: 10 MB (
tools.media.image.maxBytes). - Audio predefinito: 20 MB (
tools.media.audio.maxBytes). - Video predefinito: 50 MB (
tools.media.video.maxBytes). - I contenuti multimediali troppo grandi saltano la comprensione, ma le risposte vengono comunque inviate con il corpo originale.
Note per i test
- Coprire i flussi di invio e risposta per i casi immagine/audio/documento.
- Convalidare la ricompressione per le immagini (limite di dimensione) e il flag di nota vocale per l'audio.
- Assicurare che le risposte con più contenuti multimediali si espandano in invii sequenziali.