लक्ष्य
openclaw message send --mediaके माध्यम से वैकल्पिक कैप्शन के साथ मीडिया भेजें।- वेब इनबॉक्स से स्वचालित उत्तरों में टेक्स्ट के साथ मीडिया शामिल करने की अनुमति दें।
- प्रत्येक प्रकार की सीमाओं को उचित और पूर्वानुमेय बनाए रखें।
CLI सतह
openclaw message send --target <dest> --media <path-or-url> [--message <caption>]
--media <path-or-url>— मीडिया (इमेज/ऑडियो/वीडियो/दस्तावेज़) संलग्न करें; स्थानीय पथ या URL स्वीकार करता है। वैकल्पिक; केवल मीडिया वाले प्रेषण के लिए कैप्शन खाली हो सकता है।--gif-playback— वीडियो मीडिया को GIF प्लेबैक के रूप में मानें (केवल WhatsApp)।--force-document— चैनल संपीड़न से बचने के लिए मीडिया को दस्तावेज़ के रूप में भेजें (Telegram, WhatsApp); इमेज, GIF और वीडियो पर लागू होता है।--reply-to <id>,--thread-id <id>,--pin,--silent— केवल टेक्स्ट वाले प्रेषणों के साथ साझा किए जाने वाले डिलीवरी/थ्रेडिंग विकल्प।--dry-run— हल किया गया पेलोड प्रिंट करें और भेजना छोड़ दें।--json— परिणाम को JSON के रूप में प्रिंट करें:{ action, channel, dryRun, handledBy, messageId?, payload }(payloadमें चैनल-विशिष्ट प्रेषण परिणाम होता है, जिसमें कोई भी मीडिया संदर्भ शामिल है)।
WhatsApp Web चैनल का व्यवहार
- इनपुट: स्थानीय फ़ाइल पथ या HTTP(S) URL।
- प्रवाह: बफ़र में लोड करें, मीडिया का प्रकार पहचानें, फिर प्रकार के अनुसार आउटबाउंड पेलोड बनाएँ:
- इमेज:
channels.whatsapp.mediaMaxMb(डिफ़ॉल्ट 50MB) के अंतर्गत समाने के लिए अनुकूलित की जाती हैं। अपारदर्शी इमेज को JPEG में फिर से संपीड़ित किया जाता है (डिफ़ॉल्ट साइड क्रम 2048px से शुरू होता है और आकार की सीमा बार-बार चूकने पर घटता जाता है); पारदर्शिता वाली इमेज को PNG के रूप में रखा जाता है। यदि स्रोत पहले से ही आकार और साइड-लंबाई बजट के भीतर स्वीकार्य JPEG/PNG/WebP है, तो उसे फिर से संपीड़ित करने के बजाय मूल बाइट्स को अपरिवर्तित रखा जाता है। एनिमेटेड GIF को कभी दोबारा एन्कोड नहीं किया जाता, केवल उनके आकार की जाँच होती है। - ऑडियो/वॉइस: यदि ऑडियो पहले से मूल वॉइस ऑडियो (
.ogg/.opus, याaudio/ogg/audio/opus) नहीं है, तो वॉइस नोट (ptt: true) के रूप में भेजने से पहले आउटबाउंड ऑडियो कोffmpegके माध्यम से Opus/OGG (48kHz मोनो, 64kbps, अधिकतम 20 मिनट) में ट्रांसकोड किया जाता है। - वीडियो: 16MB तक बिना बदलाव के भेजा जाता है।
- दस्तावेज़: अन्य सभी सामग्री, 100MB तक; उपलब्ध होने पर फ़ाइल नाम सुरक्षित रखा जाता है।
- इमेज:
- WhatsApp पर GIF-शैली प्लेबैक:
gifPlayback: true(CLI:--gif-playback) के साथ MP4 भेजें, ताकि मोबाइल क्लाइंट उसे इनलाइन लूप करें। - MIME पहचान में पहले जाँचे गए मैजिक बाइट्स, फिर फ़ाइल एक्सटेंशन और उसके बाद प्रतिक्रिया हेडर को प्राथमिकता दी जाती है; सामान्य रूप से पहचाना गया कंटेनर (
application/octet-stream,zip) कभी भी अधिक विशिष्ट एक्सटेंशन मैपिंग (उदाहरण के लिए XLSX बनाम ZIP) को ओवरराइड नहीं करता। - कैप्शन
--messageयाreply.textसे आता है; खाली कैप्शन की अनुमति है। - लॉगिंग: गैर-वर्बोज़ मोड में
↩️/✅दिखते हैं; वर्बोज़ मोड में आकार और स्रोत पथ/URL भी शामिल होते हैं।
ऊपर दिए गए 16MB ऑडियो/वीडियो और 100MB दस्तावेज़ के मान प्रत्येक प्रकार के लिए साझा मीडिया डिफ़ॉल्ट हैं, जिनका उपयोग तब होता है जब कोई स्पष्ट बाइट सीमा नहीं दी जाती। WhatsApp प्रेषण
channels.whatsapp.mediaMaxMb (डिफ़ॉल्ट 50MB) से एक स्पष्ट सीमा निर्धारित करते हैं, जो उस खाते के सभी प्रकारों पर समान रूप से लागू होती है।स्वचालित उत्तर पाइपलाइन
getReplyFromConfigअन्य फ़ील्ड के साथtext?,mediaUrl?औरmediaUrls?वाला उत्तर पेलोड (या पेलोड की सरणी) लौटाता है।- मीडिया मौजूद होने पर, वेब प्रेषक
openclaw message sendवाली पाइपलाइन का उपयोग करके स्थानीय पथ या URL हल करता है। - यदि एक से अधिक मीडिया प्रविष्टियाँ दी गई हों, तो उन्हें क्रमिक रूप से भेजा जाता है।
इनबाउंड मीडिया से कमांड
- जब इनबाउंड वेब संदेशों में मीडिया शामिल होता है, तो OpenClaw उसे एक अस्थायी फ़ाइल में डाउनलोड करता है और टेम्पलेटिंग चर उपलब्ध कराता है:
{{AttachmentUrl}}— वर्तमान अटैचमेंट का मूल URL या प्रदाता संदर्भ।{{AttachmentPath}}— कमांड चलाने से पहले लिखा गया स्थानीय अस्थायी पथ।{{AttachmentContentType}}— MIME सामग्री प्रकार।{{AttachmentDir}}— स्थानीय पथ वाली डायरेक्टरी।{{AttachmentIndex}}— शून्य-आधारित स्रोत तथ्य इंडेक्स।
- प्रति-सत्र Docker सैंडबॉक्स सक्षम होने पर, इनबाउंड मीडिया को सैंडबॉक्स कार्यक्षेत्र में कॉपी किया जाता है और अटैचमेंट पथ/संदर्भ को
media/inbound/<filename>जैसे सैंडबॉक्स-सापेक्ष पथ के रूप में फिर से लिखा जाता है। - Plugin SDK माइग्रेशन अवधि के दौरान
{{MediaPath}},{{MediaUrl}},{{MediaType}}और{{MediaDir}}बहिष्कृत संगतता उपनाम बने रहते हैं। - मीडिया समझ (जिसे
tools.media.*या साझाtools.media.modelsके माध्यम से कॉन्फ़िगर किया जाता है) टेम्पलेटिंग से पहले चलती है औरBodyमें[Image],[Audio]और[Video]ब्लॉक सम्मिलित कर सकती है।- ऑडियो
{{Transcript}}निर्धारित करता है और कमांड पार्सिंग के लिए ट्रांसक्रिप्ट का उपयोग करता है, ताकि स्लैश कमांड काम करते रहें। - वीडियो और इमेज के विवरण कमांड पार्सिंग के लिए किसी भी कैप्शन टेक्स्ट को सुरक्षित रखते हैं।
- यदि सक्रिय प्राथमिक मॉडल पहले से ही मूल रूप से विज़न का समर्थन करता है, तो OpenClaw
[Image]सारांश ब्लॉक को छोड़ देता है और इसके बजाय मूल इमेज को मॉडल को भेजता है।
- ऑडियो
- डिफ़ॉल्ट रूप से केवल पहले मेल खाने वाले इमेज/ऑडियो/वीडियो अटैचमेंट को संसाधित किया जाता है; एकाधिक अटैचमेंट चुनने के लिए
tools.media.<capability>.attachmentsका उपयोग करें।
सीमाएँ और त्रुटियाँ
आउटबाउंड प्रेषण सीमाएँ (WhatsApp वेब प्रेषण)- इमेज: अनुकूलन के बाद
channels.whatsapp.mediaMaxMb(डिफ़ॉल्ट 50MB) तक। - ऑडियो/वीडियो: 16MB सीमा (साझा डिफ़ॉल्ट; WhatsApp के माध्यम से भेजते समय
mediaMaxMbद्वारा ओवरराइड होती है)। - दस्तावेज़: 100MB सीमा (साझा डिफ़ॉल्ट; WhatsApp के माध्यम से भेजते समय
mediaMaxMbद्वारा ओवरराइड होती है)। - अत्यधिक बड़े या अपठनीय मीडिया से लॉग में स्पष्ट त्रुटि उत्पन्न होती है और उत्तर छोड़ दिया जाता है।
- इमेज डिफ़ॉल्ट: 10MB (
tools.media.image.maxBytesसे, या प्रत्येकtools.media.models[]प्रविष्टि के लिएmaxBytesसे ओवरराइड करें)। - ऑडियो डिफ़ॉल्ट: 20MB (
tools.media.audio.maxBytesसे, या प्रति प्रविष्टि ओवरराइड करें)। - वीडियो डिफ़ॉल्ट: 50MB (
tools.media.video.maxBytesसे, या प्रति प्रविष्टि ओवरराइड करें)। - अत्यधिक बड़ा मीडिया समझ प्रक्रिया को छोड़ देता है, लेकिन उत्तर फिर भी मूल बॉडी के साथ भेजा जाता है।
परीक्षणों के लिए टिप्पणियाँ
- इमेज/ऑडियो/दस्तावेज़ मामलों के लिए प्रेषण और उत्तर प्रवाहों को कवर करें।
- इमेज अनुकूलन के बाद आकार सीमाओं और ऑडियो के लिए वॉइस-नोट फ़्लैग को सत्यापित करें।
- सुनिश्चित करें कि बहु-मीडिया उत्तर क्रमिक प्रेषणों के रूप में फैलें।