Nodes and media
Dukungan gambar dan media
Kanal WhatsApp berjalan di Baileys Web. Halaman ini membahas aturan penanganan media 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.
Antarmuka CLI
openclaw message send --target <dest> --media <path-or-url> [--message <caption>]
--media <path-or-url>— melampirkan media (gambar/audio/video/dokumen); menerima jalur lokal atau URL. Opsional; keterangan dapat kosong untuk pengiriman media saja.--gif-playback— memperlakukan media video sebagai pemutaran GIF (khusus WhatsApp).--force-document— mengirim media sebagai dokumen untuk menghindari kompresi kanal (Telegram, WhatsApp); berlaku untuk gambar, GIF, dan video.--reply-to <id>,--thread-id <id>,--pin,--silent— opsi pengiriman/utas yang juga digunakan untuk pengiriman teks saja.--dry-run— mencetak muatan yang telah diuraikan dan melewati pengiriman.--json— mencetak hasil sebagai JSON:{ action, channel, dryRun, handledBy, messageId?, payload }(payloadmemuat hasil pengiriman khusus kanal, termasuk referensi media jika ada).
Perilaku kanal WhatsApp Web
- Masukan: jalur berkas lokal atau URL HTTP(S).
- Alur: memuat ke dalam buffer, mendeteksi jenis media, lalu membuat muatan keluar berdasarkan jenis:
- Gambar: dioptimalkan agar berada di bawah
channels.whatsapp.mediaMaxMb(bawaan 50MB). Gambar tanpa transparansi dikompresi ulang menjadi JPEG (urutan ukuran sisi bawaan dimulai dari 2048px, lalu menurun setiap kali ukuran masih melampaui batas); gambar dengan transparansi dipertahankan sebagai PNG. Jika sumber sudah berupa JPEG/PNG/WebP yang dapat diterima dan berada dalam batas ukuran serta panjang sisi, byte asli dipertahankan tanpa perubahan alih-alih dikompresi ulang. GIF animasi tidak pernah dienkode ulang, hanya diperiksa ukurannya. - Audio/suara: kecuali sudah berupa audio suara asli (
.ogg/.opus, atauaudio/ogg/audio/opus), audio keluar ditranskode melaluiffmpegmenjadi Opus/OGG (mono 48kHz, 64kbps, dibatasi hingga 20 menit) sebelum dikirim sebagai pesan suara (ptt: true). - Video: diteruskan tanpa perubahan hingga 16MB.
- Dokumen: semua jenis lainnya, hingga 100MB, dengan nama berkas dipertahankan jika tersedia.
- Gambar: dioptimalkan agar berada di bawah
- Pemutaran bergaya GIF di WhatsApp: kirim MP4 dengan
gifPlayback: true(CLI:--gif-playback) agar klien seluler memutarnya berulang secara langsung. - Deteksi MIME mengutamakan byte ajaib yang terdeteksi, lalu ekstensi berkas, kemudian header respons; kontainer generik yang terdeteksi (
application/octet-stream,zip) tidak pernah menggantikan pemetaan ekstensi yang lebih spesifik (misalnya XLSX dibandingkan ZIP). - Keterangan berasal dari
--messageataureply.text; keterangan kosong diperbolehkan. - Pencatatan log: mode nonverbal menampilkan
↩️/✅; mode verbal menyertakan ukuran dan jalur sumber/URL.
Alur Balasan Otomatis
getReplyFromConfigmengembalikan muatan balasan (atau larik muatan) dengantext?,mediaUrl?, danmediaUrls?, beserta bidang lainnya.- Saat media tersedia, pengirim web menguraikan jalur lokal atau URL menggunakan alur yang sama seperti
openclaw message send. - Beberapa entri media dikirim secara berurutan jika disediakan.
Media Masuk ke Perintah
- Saat pesan web masuk menyertakan media, OpenClaw mengunduhnya ke berkas sementara dan menyediakan variabel templat:
{{MediaUrl}}— URL semu untuk media masuk.{{MediaPath}}— jalur lokal sementara yang ditulis sebelum menjalankan perintah.
- Saat sandbox Docker per sesi diaktifkan, media masuk disalin ke ruang kerja sandbox dan
MediaPath/MediaUrlditulis ulang menjadi jalur relatif sandbox sepertimedia/inbound/<filename>. - Pemahaman media (dikonfigurasi melalui
tools.media.*atautools.media.modelsbersama) berjalan sebelum penerapan templat dan dapat menyisipkan blok[Image],[Audio], dan[Video]ke dalamBody.- Audio menetapkan
{{Transcript}}dan menggunakan transkrip untuk penguraian perintah agar perintah garis miring tetap berfungsi. - Deskripsi video dan gambar mempertahankan teks keterangan untuk penguraian perintah.
- Jika model utama aktif sudah mendukung penglihatan secara bawaan, OpenClaw melewati blok ringkasan
[Image]dan sebagai gantinya meneruskan gambar asli ke model.
- Audio menetapkan
- Secara bawaan, hanya lampiran gambar/audio/video pertama yang cocok yang diproses; tetapkan
tools.media.<capability>.attachmentsuntuk memproses beberapa lampiran.
Batas dan kesalahan
Batas pengiriman keluar (pengiriman web WhatsApp)
- Gambar: hingga
channels.whatsapp.mediaMaxMb(bawaan 50MB) setelah pengoptimalan. - Audio/video: batas 16MB (nilai bawaan bersama; digantikan oleh
mediaMaxMbsaat dikirim melalui WhatsApp). - Dokumen: batas 100MB (nilai bawaan bersama; digantikan oleh
mediaMaxMbsaat dikirim melalui WhatsApp). - Media yang terlalu besar atau tidak dapat dibaca menghasilkan kesalahan yang jelas dalam log, dan balasan dilewati.
Batas pemahaman media (transkripsi/deskripsi)
- Bawaan gambar: 10MB (
tools.media.image.maxBytes). - Bawaan audio: 20MB (
tools.media.audio.maxBytes). - Bawaan video: 50MB (
tools.media.video.maxBytes). - Media yang terlalu besar melewati proses pemahaman, tetapi balasan tetap diteruskan dengan isi asli.
Catatan untuk Pengujian
- Cakup alur pengiriman dan balasan untuk kasus gambar/audio/dokumen.
- Validasi batas ukuran setelah pengoptimalan gambar dan tanda pesan suara untuk audio.
- Pastikan balasan dengan beberapa media dikembangkan menjadi pengiriman berurutan.
Terkait
Was this useful?