Görüntü ve Medya Desteği (2025-12-05)
WhatsApp kanalı Baileys Web üzerinden çalışır. Bu belge, gönderme, gateway ve agent yanıtları için mevcut medya işleme kurallarını açıklar.Hedefler
openclaw message send --mediaile isteğe bağlı açıklama metniyle medya göndermek.- Web gelen kutusundan gelen otomatik yanıtların metnin yanında medya da içerebilmesini sağlamak.
- Tür başına sınırları makul ve öngörülebilir tutmak.
CLI yüzeyi
openclaw message send --media <path-or-url> [--message <caption>]--mediaisteğe bağlıdır; yalnızca medya gönderimleri için açıklama metni boş olabilir.--dry-runçözümlenmiş yükü yazdırır;--jsonşu çıktıyı verir:{ channel, to, messageId, mediaUrl, caption }.
WhatsApp Web kanal davranışı
- Girdi: yerel dosya yolu veya HTTP(S) URL’si.
- Akış: bir Buffer içine yüklenir, medya türü algılanır ve doğru yük oluşturulur:
- Görüntüler:
channels.whatsapp.mediaMaxMbhedeflenerek JPEG’e yeniden boyutlandırılır ve yeniden sıkıştırılır (maksimum kenar 2048 px, varsayılan: 50 MB). - Ses/Sesli not/Video: 16 MB’ye kadar doğrudan geçirilir; ses, sesli not olarak gönderilir (
ptt: true). - Belgeler: diğer her şey, 100 MB’ye kadar; mümkün olduğunda dosya adı korunur.
- Görüntüler:
- WhatsApp GIF tarzı oynatma: mobil istemcilerin satır içinde döngüye alması için
gifPlayback: trueile bir MP4 gönderin (CLI:--gif-playback). - MIME algılama önce magic bytes, sonra başlıklar, sonra dosya uzantısını tercih eder.
- Açıklama metni
--messageveyareply.textiçinden gelir; boş açıklama metnine izin verilir. - Günlükleme: verbose olmadığında
↩️/✅gösterilir; verbose modunda boyut ve kaynak yol/URL de eklenir.
Otomatik yanıt işlem hattı
getReplyFromConfig,{ text?, mediaUrl?, mediaUrls? }döndürür.- Medya mevcut olduğunda, web göndericisi yerel yolları veya URL’leri
openclaw message sendile aynı işlem hattını kullanarak çözümler. - Birden fazla medya girdisi verilirse sıralı olarak gönderilir.
Komutlara gelen medya (Pi)
- Gelen web mesajları medya içerdiğinde, OpenClaw bunu geçici bir dosyaya indirir ve şu şablon değişkenlerini açığa çıkarır:
- Gelen medya için sözde URL olan
{{MediaUrl}}. - Komut çalıştırılmadan önce yazılan yerel geçici yol olan
{{MediaPath}}.
- Gelen medya için sözde URL olan
- Oturum başına bir Docker sandbox etkinse, gelen medya sandbox çalışma alanına kopyalanır ve
MediaPath/MediaUrl,media/inbound/<filename>gibi göreli bir yola yeniden yazılır. - Medya anlama (
tools.media.*veya paylaşılantools.media.modelsile yapılandırılmışsa) şablonlamadan önce çalışır veBodyiçine[Image],[Audio]ve[Video]blokları ekleyebilir.- Ses,
{{Transcript}}ayarlar ve komut ayrıştırma için transkripti kullanır; böylece slash komutları çalışmaya devam eder. - Video ve görüntü açıklamaları, komut ayrıştırma için her türlü açıklama metnini korur.
- Etkin birincil görüntü modeli zaten yerel olarak vision desteği sunuyorsa, OpenClaw
[Image]özet bloğunu atlar ve bunun yerine özgün görüntüyü modele geçirir.
- Ses,
- Varsayılan olarak yalnızca ilk eşleşen görüntü/ses/video eki işlenir; birden fazla eki işlemek için
tools.media.<cap>.attachmentsayarlayın.
Sınırlar ve hatalar
Giden gönderim sınırları (WhatsApp web gönderimi)- Görüntüler: yeniden sıkıştırmadan sonra
channels.whatsapp.mediaMaxMbdeğerine kadar (varsayılan: 50 MB). - Ses/sesli not/video: 16 MB sınırı; belgeler: 100 MB sınırı.
- Aşırı büyük veya okunamayan medya → günlüklerde açık hata ve yanıt atlanır.
- Görüntü varsayılanı: 10 MB (
tools.media.image.maxBytes). - Ses varsayılanı: 20 MB (
tools.media.audio.maxBytes). - Video varsayılanı: 50 MB (
tools.media.video.maxBytes). - Aşırı büyük medya anlamayı atlar, ancak yanıtlar özgün gövdeyle yine de devam eder.
Testler için notlar
- Görüntü/ses/belge durumları için gönderim + yanıt akışlarını kapsayın.
- Görüntüler için yeniden sıkıştırmayı (boyut sınırı) ve ses için sesli not bayrağını doğrulayın.
- Çoklu medya yanıtlarının sıralı gönderimlere ayrıldığından emin olun.