Hỗ trợ Hình ảnh & Media — 2025-12-05
Channel WhatsApp chạy qua Baileys Web. Tài liệu này ghi lại các quy tắc xử lý media hiện tại cho send, gateway và agent replies.
Mục tiêu
- Gửi media kèm caption tùy chọn qua
openclaw message send --media. - Cho phép auto-replies từ web inbox bao gồm media cùng với text.
- Giữ giới hạn theo từng loại hợp lý và dễ dự đoán.
CLI Surface
openclaw message send --media <path-or-url> [--message <caption>]--medialà tùy chọn; caption có thể để trống cho trường hợp chỉ gửi media.--dry-runin ra payload đã resolve;--jsonxuất ra{ channel, to, messageId, mediaUrl, caption }.
Hành vi của WhatsApp Web channel
- Input: đường dẫn file local hoặc HTTP(S) URL.
- Flow: load vào Buffer, phát hiện loại media, và build payload phù hợp:
- Images: resize & nén lại thành JPEG (cạnh tối đa 2048px) nhắm đến
agents.defaults.mediaMaxMb(mặc định 5 MB), giới hạn tối đa 6 MB. - Audio/Voice/Video: pass-through tối đa 16 MB; audio được gửi dưới dạng voice note (
ptt: true). - Documents: mọi thứ khác, tối đa 100 MB, với tên file được giữ nguyên khi có.
- Images: resize & nén lại thành JPEG (cạnh tối đa 2048px) nhắm đến
- WhatsApp GIF-style playback: gửi MP4 với
gifPlayback: true(CLI:--gif-playback) để mobile clients loop inline. - MIME detection ưu tiên magic bytes, sau đó headers, rồi file extension.
- Caption lấy từ
--messagehoặcreply.text; caption trống cũng được chấp nhận. - Logging: chế độ non-verbose hiển thị
↩️/✅; verbose bao gồm size và source path/URL.
Auto-Reply Pipeline
getReplyFromConfigtrả về{ text?, mediaUrl?, mediaUrls? }.- Khi có media, web sender resolve local paths hoặc URLs dùng cùng pipeline như
openclaw message send. - Nhiều media entries được gửi tuần tự nếu được cung cấp.
Inbound Media to Commands (Pi)
- Khi inbound web messages bao gồm media, OpenClaw download về temp file và expose các templating variables:
{{MediaUrl}}pseudo-URL cho inbound media.{{MediaPath}}đường dẫn temp local được ghi trước khi chạy command.
- Khi per-session Docker sandbox được bật, inbound media được copy vào sandbox workspace và
MediaPath/MediaUrlđược viết lại thành đường dẫn tương đối nhưmedia/inbound/<filename>. - Media understanding (nếu được config qua
tools.media.*hoặc sharedtools.media.models) chạy trước templating và có thể chèn các blocks[Image],[Audio], và[Video]vàoBody.- Audio set
{{Transcript}}và dùng transcript cho command parsing nên slash commands vẫn hoạt động. - Video và image descriptions giữ nguyên caption text cho command parsing.
- Audio set
- Mặc định chỉ attachment image/audio/video đầu tiên được xử lý; set
tools.media.<cap>.attachmentsđể xử lý nhiều attachments.
Giới hạn & Lỗi
Outbound send caps (WhatsApp web send)
- Images: giới hạn ~6 MB sau khi nén lại.
- Audio/voice/video: giới hạn 16 MB; documents: giới hạn 100 MB.
- Media quá khổ hoặc không đọc được → lỗi rõ ràng trong logs và reply bị bỏ qua.
Media understanding caps (transcription/description)
- Image mặc định: 10 MB (
tools.media.image.maxBytes). - Audio mặc định: 20 MB (
tools.media.audio.maxBytes). - Video mặc định: 50 MB (
tools.media.video.maxBytes). - Media quá khổ bỏ qua understanding, nhưng replies vẫn được gửi với body gốc.
Ghi chú cho Tests
- Cover send + reply flows cho các trường hợp image/audio/document.
- Validate recompression cho images (size bound) và voice-note flag cho audio.
- Đảm bảo multi-media replies fan out thành sequential sends.