Doelen
- Media met optionele bijschriften verzenden via
openclaw message send --media. - Automatische antwoorden vanuit de web-inbox toestaan om naast tekst ook media op te nemen.
- Limieten per type verstandig en voorspelbaar houden.
CLI-interface
openclaw message send --media <path-or-url> [--message <caption>]--mediais optioneel; het bijschrift mag leeg zijn voor verzendingen met alleen media.--dry-runtoont de opgeloste payload;--jsongeeft{ channel, to, messageId, mediaUrl, caption }uit.
Gedrag van het WhatsApp Web-kanaal
- Invoer: lokaal bestandspad of HTTP(S)-URL.
- Flow: laad in een buffer, detecteer het mediatype en bouw de juiste payload:
- Afbeeldingen: verkleinen en opnieuw comprimeren naar JPEG (maximale zijde 2048px), gericht op
channels.whatsapp.mediaMaxMb(standaard: 50 MB). - Audio/spraak/video: ongewijzigd doorgeven tot 16 MB; audio wordt verzonden als spraakbericht (
ptt: true). - Documenten: al het overige, tot 100 MB, met behoud van bestandsnaam waar beschikbaar.
- Afbeeldingen: verkleinen en opnieuw comprimeren naar JPEG (maximale zijde 2048px), gericht op
- GIF-achtige weergave in WhatsApp: verstuur een MP4 met
gifPlayback: true(CLI:--gif-playback) zodat mobiele clients inline loopen. - MIME-detectie geeft de voorkeur aan magische bytes, daarna headers en daarna bestandsextensie.
- Het bijschrift komt uit
--messageofreply.text; een leeg bijschrift is toegestaan. - Logging: niet-uitgebreid toont
↩️/✅; uitgebreid bevat grootte en bronpad/URL.
Pipeline voor automatische antwoorden
getReplyFromConfigretourneert{ text?, mediaUrl?, mediaUrls? }.- Wanneer media aanwezig is, lost de webverzender lokale paden of URL’s op met dezelfde pipeline als
openclaw message send. - Meerdere media-items worden opeenvolgend verzonden als ze zijn opgegeven.
Inkomende media naar opdrachten
- Wanneer inkomende webberichten media bevatten, downloadt OpenClaw die naar een tijdelijk bestand en stelt het templatingvariabelen beschikbaar:
{{MediaUrl}}pseudo-URL voor de inkomende media.{{MediaPath}}lokaal tijdelijk pad dat wordt geschreven voordat de opdracht wordt uitgevoerd.
- Wanneer een Docker-sandbox per sessie is ingeschakeld, wordt inkomende media naar de sandbox-werkruimte gekopieerd en worden
MediaPath/MediaUrlherschreven naar een relatief pad zoalsmedia/inbound/<filename>. - Mediabegrip (indien geconfigureerd via
tools.media.*of gedeeldetools.media.models) draait vóór templating en kan blokken[Image],[Audio]en[Video]invoegen inBody.- Audio stelt
{{Transcript}}in en gebruikt het transcript voor opdrachtparsing, zodat slash-opdrachten blijven werken. - Beschrijvingen van video en afbeeldingen behouden eventuele bijschrifttekst voor opdrachtparsing.
- Als het actieve primaire afbeeldingsmodel al native vision ondersteunt, slaat OpenClaw het samenvattingsblok
[Image]over en geeft het in plaats daarvan de oorspronkelijke afbeelding door aan het model.
- Audio stelt
- Standaard wordt alleen de eerste overeenkomende afbeelding/audio-/videobijlage verwerkt; stel
tools.media.<cap>.attachmentsin om meerdere bijlagen te verwerken.
Limieten en fouten
Limieten voor uitgaand verzenden (WhatsApp webverzending)- Afbeeldingen: tot
channels.whatsapp.mediaMaxMb(standaard: 50 MB) na hercompressie. - Audio/spraak/video: limiet van 16 MB; documenten: limiet van 100 MB.
- Te grote of onleesbare media → duidelijke fout in logs en het antwoord wordt overgeslagen.
- Standaard voor afbeeldingen: 10 MB (
tools.media.image.maxBytes). - Standaard voor audio: 20 MB (
tools.media.audio.maxBytes). - Standaard voor video: 50 MB (
tools.media.video.maxBytes). - Te grote media slaan begrip over, maar antwoorden gaan nog steeds door met de oorspronkelijke body.
Opmerkingen voor tests
- Dek verzend- en antwoordflows af voor gevallen met afbeeldingen/audio/documenten.
- Valideer hercompressie voor afbeeldingen (groottegrens) en de spraakberichtvlag voor audio.
- Zorg dat antwoorden met meerdere media uitwaaieren als opeenvolgende verzendingen.