Nodes and media
Dukungan gambar dan media
Kanal WhatsApp berjalan melalui Baileys Web. Dokumen ini mencatat aturan penanganan media saat ini untuk pengiriman, Gateway, dan balasan agen.
Tujuan
- Mengirim media dengan keterangan opsional melalui
openclaw message send --media. - Memungkinkan balasan otomatis dari kotak masuk web menyertakan media bersama teks.
- Menjaga batas per jenis tetap wajar dan dapat diprediksi.
Permukaan CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaopsional; keterangan dapat kosong untuk pengiriman media saja.--dry-runmencetak payload yang sudah diselesaikan;--jsonmenghasilkan{ channel, to, messageId, mediaUrl, caption }.
Perilaku kanal WhatsApp Web
- Masukan: jalur file lokal atau URL HTTP(S).
- Alur: muat ke dalam Buffer, deteksi jenis media, dan bangun payload yang benar:
- Gambar: ubah ukuran & kompres ulang ke JPEG (sisi maksimum 2048px) dengan target
channels.whatsapp.mediaMaxMb(default: 50 MB). - Audio/Suara/Video: diteruskan apa adanya hingga 16 MB; audio dikirim sebagai catatan suara (
ptt: true). - Dokumen: apa pun lainnya, hingga 100 MB, dengan nama file dipertahankan jika tersedia.
- Gambar: ubah ukuran & kompres ulang ke JPEG (sisi maksimum 2048px) dengan target
- Pemutaran bergaya GIF WhatsApp: kirim MP4 dengan
gifPlayback: true(CLI:--gif-playback) agar klien seluler memutar berulang langsung dalam percakapan. - Deteksi MIME memprioritaskan magic bytes, lalu header, lalu ekstensi file.
- Keterangan berasal dari
--messageataureply.text; keterangan kosong diperbolehkan. - Pencatatan log: mode non-verbose menampilkan
↩️/✅; mode verbose menyertakan ukuran dan jalur/URL sumber.
Pipeline Balasan Otomatis
getReplyFromConfigmengembalikan{ text?, mediaUrl?, mediaUrls? }.- Saat media ada, pengirim web menyelesaikan jalur lokal atau URL menggunakan pipeline yang sama seperti
openclaw message send. - Beberapa entri media dikirim secara berurutan jika disediakan.
Media masuk ke perintah (Pi)
- Saat pesan web masuk menyertakan media, OpenClaw mengunduhnya ke file sementara dan mengekspos variabel templat:
{{MediaUrl}}pseudo-URL untuk media masuk.{{MediaPath}}jalur sementara lokal yang ditulis sebelum menjalankan perintah.
- Saat sandbox Docker per sesi diaktifkan, media masuk disalin ke workspace sandbox dan
MediaPath/MediaUrlditulis ulang menjadi jalur relatif sepertimedia/inbound/<filename>. - Pemahaman media (jika dikonfigurasi melalui
tools.media.*atautools.media.modelsbersama) berjalan sebelum pemrosesan templat dan dapat menyisipkan blok[Image],[Audio], dan[Video]ke dalamBody.- Audio menetapkan
{{Transcript}}dan menggunakan transkrip untuk penguraian perintah sehingga perintah slash tetap berfungsi. - Deskripsi video dan gambar mempertahankan teks keterangan apa pun untuk penguraian perintah.
- Jika model gambar utama yang aktif sudah mendukung vision secara native, OpenClaw melewati blok ringkasan
[Image]dan meneruskan gambar asli ke model sebagai gantinya.
- Audio menetapkan
- Secara default hanya lampiran gambar/audio/video pertama yang cocok yang diproses; tetapkan
tools.media.<cap>.attachmentsuntuk memproses beberapa lampiran.
Batas dan kesalahan
Batas pengiriman keluar (pengiriman web WhatsApp)
- Gambar: hingga
channels.whatsapp.mediaMaxMb(default: 50 MB) setelah kompresi ulang. - Audio/suara/video: batas 16 MB; dokumen: batas 100 MB.
- Media yang terlalu besar atau tidak dapat dibaca → kesalahan yang jelas dalam log dan balasan dilewati.
Batas pemahaman media (transkripsi/deskripsi)
- Default gambar: 10 MB (
tools.media.image.maxBytes). - Default audio: 20 MB (
tools.media.audio.maxBytes). - Default video: 50 MB (
tools.media.video.maxBytes). - Media yang terlalu besar melewati pemahaman, tetapi balasan tetap berjalan dengan isi asli.
Catatan untuk Pengujian
- Cakup alur pengiriman + balasan untuk kasus gambar/audio/dokumen.
- Validasi kompresi ulang untuk gambar (batas ukuran) dan flag catatan suara untuk audio.
- Pastikan balasan multi-media dikirim sebagai pengiriman berurutan.