मुख्य सामग्री पर जाएं

इमेज और मीडिया समर्थन — 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 तक, उपलब्ध होने पर फ़ाइलनाम संरक्षित।
  • 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 प्रवाह कवर करें।
  • इमेज के लिए पुनःसंपीड़न (आकार सीमा) और ऑडियो के लिए वॉइस-नोट फ़्लैग को सत्यापित करें।
  • सुनिश्चित करें कि बहु-मीडिया उत्तर क्रमिक भेजों के रूप में फैलते हैं।