Nodes and media
دعم الصور والوسائط
تعمل قناة WhatsApp عبر Baileys Web. يوثّق هذا المستند قواعد التعامل مع الوسائط الحالية للإرسال وGateway وردود الوكيل.
الأهداف
- إرسال الوسائط مع تسميات توضيحية اختيارية عبر
openclaw message send --media. - السماح للردود التلقائية من صندوق الوارد على الويب بتضمين وسائط إلى جانب النص.
- إبقاء الحدود حسب النوع معقولة وقابلة للتنبؤ.
سطح CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaاختياري؛ يمكن أن تكون التسمية التوضيحية فارغة لعمليات الإرسال التي تحتوي على وسائط فقط.- يطبع
--dry-runالحمولة المحلولة؛ ويُخرج--json{ channel, to, messageId, mediaUrl, caption }.
سلوك قناة WhatsApp Web
- الإدخال: مسار ملف محلي أو عنوان URL بنظام HTTP(S).
- التدفق: التحميل في Buffer، واكتشاف نوع الوسائط، وبناء الحمولة الصحيحة:
- الصور: تغيير الحجم وإعادة الضغط إلى JPEG (أقصى جانب 2048px) مع استهداف
channels.whatsapp.mediaMaxMb(الافتراضي: 50 MB). - الصوت/الصوتيات/الفيديو: تمرير مباشر حتى 16 MB؛ يُرسل الصوت كملاحظة صوتية (
ptt: true). - المستندات: أي شيء آخر، حتى 100 MB، مع الحفاظ على اسم الملف عندما يكون متاحًا.
- الصور: تغيير الحجم وإعادة الضغط إلى JPEG (أقصى جانب 2048px) مع استهداف
- تشغيل بنمط GIF في WhatsApp: أرسل MP4 مع
gifPlayback: true(CLI: --gif-playback) كي تكرره عملاء الجوال داخل السطر. - يفضّل اكتشاف MIME البايتات السحرية، ثم الرؤوس، ثم امتداد الملف.
- تأتي التسمية التوضيحية من
--messageأوreply.text؛ التسمية التوضيحية الفارغة مسموحة. - التسجيل: يعرض الوضع غير المطوّل
↩️/✅؛ ويتضمن الوضع المطوّل الحجم ومسار/عنوان URL المصدر.
مسار الرد التلقائي
- يعيد
getReplyFromConfig{ text?, mediaUrl?, mediaUrls? }. - عند وجود وسائط، يحل مرسل الويب المسارات المحلية أو عناوين URL باستخدام المسار نفسه مثل
openclaw message send. - تُرسل إدخالات الوسائط المتعددة بالتتابع إذا قُدمت.
الوسائط الواردة إلى الأوامر (Pi)
- عندما تتضمن رسائل الويب الواردة وسائط، ينزل OpenClaw الوسائط إلى ملف مؤقت ويعرض متغيرات القوالب:
{{MediaUrl}}عنوان URL زائف للوسائط الواردة.{{MediaPath}}مسار مؤقت محلي يُكتب قبل تشغيل الأمر.
- عند تمكين صندوق عزل Docker لكل جلسة، تُنسخ الوسائط الواردة إلى مساحة عمل صندوق العزل ويُعاد كتابة
MediaPath/MediaUrlإلى مسار نسبي مثلmedia/inbound/<filename>. - يعمل فهم الوسائط (إذا ضُبط عبر
tools.media.*أوtools.media.modelsالمشتركة) قبل القوالب ويمكنه إدراج كتل[Image]و[Audio]و[Video]فيBody.- يضبط الصوت
{{Transcript}}ويستخدم النص المفرغ لتحليل الأوامر كي تستمر أوامر الشرطة المائلة في العمل. - تحافظ أوصاف الفيديو والصور على أي نص تسمية توضيحية لتحليل الأوامر.
- إذا كان نموذج الصور الأساسي النشط يدعم الرؤية أصلاً، يتخطى OpenClaw كتلة ملخص
[Image]ويمرر الصورة الأصلية إلى النموذج بدلاً من ذلك.
- يضبط الصوت
- افتراضيًا، لا تُعالَج إلا أول مرفقات صورة/صوت/فيديو مطابقة؛ اضبط
tools.media.<cap>.attachmentsلمعالجة مرفقات متعددة.
الحدود والأخطاء
حدود الإرسال الصادر (إرسال WhatsApp عبر الويب)
- الصور: حتى
channels.whatsapp.mediaMaxMb(الافتراضي: 50 MB) بعد إعادة الضغط. - الصوت/الصوتيات/الفيديو: حد 16 MB؛ المستندات: حد 100 MB.
- الوسائط كبيرة الحجم أو غير القابلة للقراءة → خطأ واضح في السجلات ويتم تخطي الرد.
حدود فهم الوسائط (النسخ/الوصف)
- الافتراضي للصور: 10 MB (
tools.media.image.maxBytes). - الافتراضي للصوت: 20 MB (
tools.media.audio.maxBytes). - الافتراضي للفيديو: 50 MB (
tools.media.video.maxBytes). - تتخطى الوسائط كبيرة الحجم الفهم، لكن الردود تظل تمرر بالنص الأصلي.
ملاحظات للاختبارات
- تغطية تدفقات الإرسال + الرد لحالات الصور/الصوت/المستندات.
- التحقق من إعادة الضغط للصور (حد الحجم) وعلامة الملاحظة الصوتية للصوت.
- التأكد من أن الردود متعددة الوسائط تتفرع كعمليات إرسال متتابعة.