Bild- und Medienunterstützung (2025-12-05)
Der WhatsApp-Channel läuft über Baileys Web. Dieses Dokument beschreibt die aktuellen Regeln für die Medienverarbeitung bei Send, Gateway und Agent-Antworten.Ziele
- Medien mit optionalen Bildunterschriften über
openclaw message send --mediasenden. - Auto-Antworten aus dem Web-Posteingang erlauben, Medien zusammen mit Text zu enthalten.
- Grenzwerte pro Typ sinnvoll und vorhersehbar halten.
CLI-Oberfläche
openclaw message send --media <path-or-url> [--message <caption>]--mediaoptional; die Bildunterschrift kann für reine Mediensendungen leer sein.--dry-rungibt die aufgelöste Nutzlast aus;--jsongibt{ channel, to, messageId, mediaUrl, caption }aus.
Verhalten des WhatsApp-Web-Channels
- Eingabe: lokaler Dateipfad oder HTTP(S)-URL.
- Ablauf: In einen Buffer laden, Medientyp erkennen und die richtige Nutzlast erstellen:
- Bilder: auf JPEG skalieren und neu komprimieren (maximale Seitenlänge 2048 px) mit Zielwert
channels.whatsapp.mediaMaxMb(Standard: 50 MB). - Audio/Sprachnachrichten/Videos: unverändert durchreichen bis 16 MB; Audio wird als Sprachnachricht gesendet (
ptt: true). - Dokumente: alles andere, bis 100 MB, wobei der Dateiname nach Möglichkeit erhalten bleibt.
- Bilder: auf JPEG skalieren und neu komprimieren (maximale Seitenlänge 2048 px) mit Zielwert
- GIF-ähnliche Wiedergabe in WhatsApp: Ein MP4 mit
gifPlayback: truesenden (CLI:--gif-playback), damit mobile Clients es inline in Schleife abspielen. - MIME-Erkennung bevorzugt Magic Bytes, dann Header, dann Dateiendung.
- Die Bildunterschrift stammt aus
--messageoderreply.text; eine leere Bildunterschrift ist erlaubt. - Logging: Nicht-ausführlich zeigt
↩️/✅; ausführlich enthält Größe und Quellpfad/-URL.
Auto-Reply-Pipeline
getReplyFromConfiggibt{ text?, mediaUrl?, mediaUrls? }zurück.- Wenn Medien vorhanden sind, löst der Web-Sender lokale Pfade oder URLs mit derselben Pipeline auf wie
openclaw message send. - Wenn mehrere Medieneinträge angegeben sind, werden sie nacheinander gesendet.
Eingehende Medien für Befehle (Pi)
- Wenn eingehende Web-Nachrichten Medien enthalten, lädt OpenClaw sie in eine temporäre Datei herunter und stellt Templating-Variablen bereit:
{{MediaUrl}}Pseudo-URL für das eingehende Medium.{{MediaPath}}lokaler temporärer Pfad, der vor dem Ausführen des Befehls geschrieben wird.
- Wenn eine Docker-Sandbox pro Sitzung aktiviert ist, werden eingehende Medien in den Sandbox-Workspace kopiert und
MediaPath/MediaUrlzu einem relativen Pfad wiemedia/inbound/<filename>umgeschrieben. - Medienverständnis (wenn über
tools.media.*oder gemeinsametools.media.modelskonfiguriert) läuft vor dem Templating und kann[Image]-,[Audio]- und[Video]-Blöcke inBodyeinfügen.- Audio setzt
{{Transcript}}und verwendet das Transkript für das Befehlsparsing, sodass Slash-Befehle weiterhin funktionieren. - Video- und Bildbeschreibungen behalten vorhandenen Bildunterschriftentext für das Befehlsparsing bei.
- Wenn das aktive primäre Bildmodell Vision bereits nativ unterstützt, überspringt OpenClaw den Zusammenfassungsblock
[Image]und übergibt stattdessen das Originalbild an das Modell.
- Audio setzt
- Standardmäßig wird nur der erste passende Bild-/Audio-/Video-Anhang verarbeitet; setzen Sie
tools.media.<cap>.attachments, um mehrere Anhänge zu verarbeiten.
Limits und Fehler
Grenzwerte für ausgehende Sendungen (WhatsApp-Web-Sendungen)- Bilder: bis
channels.whatsapp.mediaMaxMb(Standard: 50 MB) nach der Neukomprimierung. - Audio/Sprachnachrichten/Videos: Grenze 16 MB; Dokumente: 100 MB.
- Zu große oder unlesbare Medien → klarer Fehler in den Logs und die Antwort wird übersprungen.
- Bildstandard: 10 MB (
tools.media.image.maxBytes). - Audiostandard: 20 MB (
tools.media.audio.maxBytes). - Videostandard: 50 MB (
tools.media.video.maxBytes). - Zu große Medien überspringen das Verständnis, aber Antworten werden weiterhin mit dem ursprünglichen Body verarbeitet.
Hinweise für Tests
- Send- und Antwort-Abläufe für Bild-/Audio-/Dokument-Fälle abdecken.
- Neukomprimierung bei Bildern validieren (Größenbegrenzung) und das Flag für Sprachnachrichten bei Audio.
- Sicherstellen, dass Antworten mit mehreren Medien als aufeinanderfolgende Sendungen aufgefächert werden.