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، مع الحفاظ على اسم الملف عندما يكون متاحًا.
  • تشغيل بنمط 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).
  • تتخطى الوسائط كبيرة الحجم الفهم، لكن الردود تظل تمرر بالنص الأصلي.

ملاحظات للاختبارات

  • تغطية تدفقات الإرسال + الرد لحالات الصور/الصوت/المستندات.
  • التحقق من إعادة الضغط للصور (حد الحجم) وعلامة الملاحظة الصوتية للصوت.
  • التأكد من أن الردود متعددة الوسائط تتفرع كعمليات إرسال متتابعة.

ذات صلة