इमेज और मीडिया समर्थन — 2025-12-05
WhatsApp channel Baileys Web के माध्यम से चलता है। यह दस्तावेज़ send, gateway, और agent replies के लिए वर्तमान media handling नियमों को कैप्चर करता है।लक्ष्य
openclaw message send --mediaके माध्यम से वैकल्पिक कैप्शन के साथ मीडिया भेजना।- वेब इनबॉक्स से स्वचालित उत्तरों में पाठ के साथ मीडिया शामिल करने की अनुमति देना।
- प्रति-प्रकार सीमाओं को यथार्थवादी और पूर्वानुमेय बनाए रखना।
CLI सतह
openclaw message send --media <path-or-url> [--message <caption>]--mediaवैकल्पिक; केवल-मीडिया भेजने के लिए कैप्शन खाली हो सकता है।--dry-runरिज़ॉल्व किया गया payload प्रिंट करता है;--json{ channel, to, messageId, mediaUrl, caption }उत्सर्जित करता है।
WhatsApp Web चैनल व्यवहार
- इनपुट: स्थानीय फ़ाइल पथ या HTTP(S) URL।
- प्रवाह: Buffer में लोड करें, मीडिया प्रकार पहचानें, और सही payload बनाएँ:
- इमेज: JPEG में रिसाइज़ और पुनःसंपीड़न (अधिकतम साइड 2048px),
agents.defaults.mediaMaxMb(डिफ़ॉल्ट 5 MB) को लक्ष्य करते हुए, 6 MB पर सीमित। - ऑडियो/वॉइस/वीडियो: 16 MB तक पास-थ्रू; ऑडियो वॉइस नोट के रूप में भेजा जाता है (
ptt: true)। - डॉक्यूमेंट्स: अन्य सभी, 100 MB तक, उपलब्ध होने पर फ़ाइलनाम संरक्षित।
- इमेज: JPEG में रिसाइज़ और पुनःसंपीड़न (अधिकतम साइड 2048px),
- WhatsApp GIF-शैली प्लेबैक: MP4 को
gifPlayback: true(CLI:--gif-playback) के साथ भेजें ताकि मोबाइल क्लाइंट्स inline लूप करें। - MIME पहचान में प्राथमिकता: मैजिक बाइट्स, फिर हेडर्स, फिर फ़ाइल एक्सटेंशन।
- कैप्शन
--messageयाreply.textसे आता है; खाली कैप्शन अनुमत है। - लॉगिंग: non-verbose में
↩️/✅दिखाता है; verbose में आकार और स्रोत पथ/URL शामिल होते हैं।
ऑटो-रिप्लाई पाइपलाइन
getReplyFromConfig{ text?, mediaUrl?, mediaUrls? }लौटाता है। डिफ़ॉल्ट रूप से केवल पहली matching image/audio/video attachment को प्रोसेस किया जाता है; कई attachments प्रोसेस करने के लिएtools.media.<cap>.attachmentsसेट करें।- जब मीडिया मौजूद होता है, वेब सेंडर
openclaw message sendके समान पाइपलाइन का उपयोग करके स्थानीय पथों या URL को रिज़ॉल्व करता है। - यदि एकाधिक मीडिया प्रविष्टियाँ प्रदान की जाती हैं, तो उन्हें क्रमिक रूप से भेजा जाता है।
कमांड्स के लिए इनबाउंड मीडिया (Pi)
- जब इनबाउंड वेब संदेशों में मीडिया शामिल होता है, OpenClaw एक अस्थायी फ़ाइल में डाउनलोड करता है और टेम्पलेटिंग वेरिएबल्स प्रदान करता है:
- इनबाउंड मीडिया के लिए
{{MediaUrl}}छद्म-URL। - कमांड चलाने से पहले लिखा गया
{{MediaPath}}स्थानीय अस्थायी पथ।
- इनबाउंड मीडिया के लिए
- जब प्रति-सत्र Docker sandbox सक्षम होता है, इनबाउंड मीडिया को sandbox वर्कस्पेस में कॉपी किया जाता है और
MediaPath/MediaUrlकोmedia/inbound/<filename>जैसे सापेक्ष पथ में पुनर्लेखित किया जाता है। - मीडिया समझ (यदि
tools.media.*या साझाtools.media.modelsके माध्यम से कॉन्फ़िगर की गई हो) टेम्पलेटिंग से पहले चलती है औरBodyमें[Image],[Audio], और[Video]ब्लॉक्स सम्मिलित कर सकती है।- ऑडियो
{{Transcript}}सेट करता है और कमांड पार्सिंग के लिए ट्रांसक्रिप्ट का उपयोग करता है ताकि स्लैश कमांड्स कार्य करते रहें। - वीडियो और इमेज विवरण कमांड पार्सिंग के लिए किसी भी कैप्शन पाठ को संरक्षित रखते हैं।
- ऑडियो
- एक node एक companion device (macOS/iOS/Android/headless) होता है जो Gateway WebSocket (operators के समान पोर्ट) से
role: "node"के साथ कनेक्ट होता है औरnode.invokeके माध्यम से एक command surface (उदा.canvas.*,camera.*,system.*) एक्सपोज़ करता है।Protocol विवरण: Gateway protocol।
सीमाएँ और त्रुटियाँ
आउटबाउंड भेजने की सीमाएँ (WhatsApp web send)- इमेज: पुनःसंपीड़न के बाद ~6 MB सीमा।
- ऑडियो/वॉइस/वीडियो: 16 MB सीमा; डॉक्यूमेंट्स: 100 MB सीमा।
- अत्यधिक आकार या अपठनीय मीडिया → लॉग्स में स्पष्ट त्रुटि और उत्तर को छोड़ दिया जाता है।
- इमेज डिफ़ॉल्ट: 10 MB (
tools.media.image.maxBytes)। - ऑडियो डिफ़ॉल्ट: 20 MB (
tools.media.audio.maxBytes)। - वीडियो डिफ़ॉल्ट: 50 MB (
tools.media.video.maxBytes)। - अत्यधिक आकार का मीडिया समझ को छोड़ देता है, लेकिन मूल बॉडी के साथ उत्तर फिर भी भेजे जाते हैं।
परीक्षणों के लिए नोट्स
- इमेज/ऑडियो/डॉक्यूमेंट मामलों के लिए send + reply प्रवाह कवर करें।
- इमेज के लिए पुनःसंपीड़न (आकार सीमा) और ऑडियो के लिए वॉइस-नोट फ़्लैग को सत्यापित करें।
- सुनिश्चित करें कि बहु-मीडिया उत्तर क्रमिक भेजों के रूप में फैलते हैं।