Nodes and media
Ondersteuning voor afbeeldingen en media
Het WhatsApp-kanaal draait op Baileys Web. Deze pagina behandelt de regels voor mediaverwerking bij verzenden, via de Gateway en bij antwoorden van de agent.
Doelen
- Media met een optioneel bijschrift verzenden via
openclaw message send --media. - Toestaan dat automatische antwoorden vanuit het webpostvak media naast tekst bevatten.
- Limieten per type redelijk en voorspelbaar houden.
CLI-oppervlak
openclaw message send --target <dest> --media <path-or-url> [--message <caption>]
--media <path-or-url>— media bijvoegen (afbeelding/audio/video/document); accepteert lokale paden of URL's. Optioneel; het bijschrift mag leeg zijn voor verzendingen met alleen media.--gif-playback— videomedia afspelen als GIF (alleen WhatsApp).--force-document— media als document verzenden om compressie door het kanaal te voorkomen (Telegram, WhatsApp); geldt voor afbeeldingen, GIF's en video's.--reply-to <id>,--thread-id <id>,--pin,--silent— opties voor bezorging en gespreksthreads die worden gedeeld met verzendingen met alleen tekst.--dry-run— de resulterende payload afdrukken en het verzenden overslaan.--json— het resultaat als JSON afdrukken:{ action, channel, dryRun, handledBy, messageId?, payload }(payloadbevat het kanaalspecifieke verzendresultaat, inclusief eventuele mediaverwijzing).
Gedrag van het WhatsApp-webkanaal
- Invoer: lokaal bestandspad of HTTP(S)-URL.
- Verloop: in een buffer laden, het mediatype detecteren en vervolgens per type de uitgaande payload samenstellen:
- Afbeeldingen: geoptimaliseerd om onder
channels.whatsapp.mediaMaxMbte blijven (standaard 50 MB). Niet-transparante afbeeldingen worden opnieuw gecomprimeerd als JPEG (de standaardreeks voor afmetingen begint bij 2048 px en loopt af wanneer de bestandsgrootte herhaaldelijk wordt overschreden); afbeeldingen met transparantie blijven PNG. Als de bron al een geschikte JPEG/PNG/WebP is die binnen de limieten voor bestandsgrootte en zijlengte valt, blijven de oorspronkelijke bytes ongewijzigd behouden in plaats van opnieuw te worden gecomprimeerd. Geanimeerde GIF's worden nooit opnieuw gecodeerd; alleen de grootte wordt gecontroleerd. - Audio/spraak: tenzij het bestand al systeemeigen spraakaudio is (
.ogg/.opusofaudio/ogg/audio/opus), wordt uitgaande audio vóór verzending viaffmpeggetranscodeerd naar Opus/OGG (48 kHz mono, 64 kbps, maximaal 20 minuten) en als spraakbericht verzonden (ptt: true). - Video: ongewijzigd doorsturen tot 16 MB.
- Documenten: al het overige, tot 100 MB, waarbij de bestandsnaam indien beschikbaar behouden blijft.
- Afbeeldingen: geoptimaliseerd om onder
- Afspelen in GIF-stijl op WhatsApp: verzend een MP4 met
gifPlayback: true(CLI:--gif-playback), zodat mobiele clients deze doorlopend in de berichtenstroom afspelen. - MIME-detectie geeft de voorkeur aan geïdentificeerde magische bytes, daarna aan de bestandsextensie en vervolgens aan antwoordheaders; een algemeen gedetecteerde container (
application/octet-stream,zip) overschrijft nooit een specifiekere extensietoewijzing (bijvoorbeeld XLSX tegenover ZIP). - Het bijschrift komt uit
--messageofreply.text; een leeg bijschrift is toegestaan. - Logboekregistratie: niet-uitgebreid toont
↩️/✅; uitgebreid bevat de grootte en het bronpad/de bron-URL.
Pijplijn voor automatische antwoorden
getReplyFromConfigretourneert een antwoordpayload (of een reeks payloads) met onder anderetext?,mediaUrl?enmediaUrls?.- Wanneer media aanwezig is, zet de webverzender lokale paden of URL's om via dezelfde pijplijn als
openclaw message send. - Als meerdere media-items zijn opgegeven, worden ze achtereenvolgens verzonden.
Inkomende media naar opdrachten
- Wanneer inkomende webberichten media bevatten, downloadt OpenClaw deze naar een tijdelijk bestand en stelt het sjabloonvariabelen 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, worden inkomende media naar de sandboxwerkruimte gekopieerd en worden
MediaPath/MediaUrlherschreven naar een sandboxrelatief pad zoalsmedia/inbound/<filename>. - Mediabegrip (geconfigureerd via
tools.media.*of gedeeldetools.media.models) wordt vóór het toepassen van sjablonen uitgevoerd en kan blokken[Image],[Audio]en[Video]inBodyinvoegen.- Voor audio wordt
{{Transcript}}ingesteld en wordt het transcript gebruikt voor het verwerken van opdrachten, zodat slash-opdrachten blijven werken. - Beschrijvingen van video's en afbeeldingen behouden eventuele bijschrifttekst voor het verwerken van opdrachten.
- Als het actieve primaire model al systeemeigen beeldherkenning ondersteunt, slaat OpenClaw het samenvattingsblok
[Image]over en geeft het in plaats daarvan de oorspronkelijke afbeelding aan het model door.
- Voor audio wordt
- Standaard wordt alleen de eerste overeenkomende afbeelding, audio- of videobijlage verwerkt; stel
tools.media.<capability>.attachmentsin om meerdere bijlagen te verwerken.
Limieten en fouten
Limieten voor uitgaande verzendingen (verzenden via WhatsApp Web)
- Afbeeldingen: na optimalisatie maximaal
channels.whatsapp.mediaMaxMb(standaard 50 MB). - Audio/video: limiet van 16 MB (gedeelde standaard; bij verzending via WhatsApp overschreven door
mediaMaxMb). - Documenten: limiet van 100 MB (gedeelde standaard; bij verzending via WhatsApp overschreven door
mediaMaxMb). - Te grote of onleesbare media veroorzaken een duidelijke fout in de logboeken en het antwoord wordt overgeslagen.
Limieten voor mediabegrip (transcriptie/beschrijving)
- 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). - Bij te grote media wordt mediabegrip overgeslagen, maar het antwoord wordt nog steeds met de oorspronkelijke berichttekst verzonden.
Opmerkingen voor tests
- Dek de verzend- en antwoordstromen af voor afbeeldingen, audio en documenten.
- Valideer de groottelimieten na afbeeldingsoptimalisatie en de spraakberichtvlag voor audio.
- Zorg dat antwoorden met meerdere media-items worden opgesplitst in opeenvolgende verzendingen.
Gerelateerd
Was this useful?