Nodes and media
پشتیبانی از تصویر و رسانه
کانال WhatsApp از طریق Baileys Web اجرا میشود. این سند قواعد فعلی مدیریت رسانه را برای ارسال، Gateway، و پاسخهای عامل ثبت میکند.
اهداف
- ارسال رسانه با کپشن اختیاری از طریق
openclaw message send --media. - اجازه دادن به پاسخهای خودکار از صندوق ورودی وب برای شامل کردن رسانه در کنار متن.
- منطقی و قابل پیشبینی نگه داشتن محدودیتها برای هر نوع.
سطح CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaاختیاری است؛ کپشن میتواند برای ارسالهای فقط رسانه خالی باشد.--dry-runpayload حلشده را چاپ میکند؛--jsonمقدار{ channel, to, messageId, mediaUrl, caption }را خروجی میدهد.
رفتار کانال WhatsApp Web
- ورودی: مسیر فایل محلی یا URL با HTTP(S).
- جریان: بارگذاری در یک بافر، تشخیص نوع رسانه، و ساخت payload درست:
- تصاویر: تغییر اندازه و فشردهسازی دوباره به JPEG (حداکثر ضلع 2048px) با هدفگیری
channels.whatsapp.mediaMaxMb(پیشفرض: 50 MB). - صدا/صوت/ویدیو: عبور بدون تغییر تا 16 MB؛ صدا بهصورت یادداشت صوتی (
ptt: true) ارسال میشود. - اسناد: هر مورد دیگر، تا 100 MB، با حفظ نام فایل در صورت موجود بودن.
- تصاویر: تغییر اندازه و فشردهسازی دوباره به JPEG (حداکثر ضلع 2048px) با هدفگیری
- پخش به سبک GIF در WhatsApp: یک MP4 با
gifPlayback: trueارسال کنید (CLI:--gif-playback) تا کلاینتهای موبایل آن را بهصورت درونخطی تکرار کنند. - تشخیص MIME ابتدا magic byteها، سپس هدرها، و بعد پسوند فایل را ترجیح میدهد.
- کپشن از
--messageیاreply.textمیآید؛ کپشن خالی مجاز است. - ثبت گزارش: حالت غیرمفصل
↩️/✅را نشان میدهد؛ حالت مفصل شامل اندازه و مسیر/URL منبع است.
خط لوله پاسخ خودکار
getReplyFromConfigمقدار{ text?, mediaUrl?, mediaUrls? }را برمیگرداند.- وقتی رسانه وجود دارد، فرستنده وب مسیرهای محلی یا URLها را با همان خط لوله
openclaw message sendحل میکند. - اگر چند ورودی رسانه ارائه شود، بهترتیب و پشت سر هم ارسال میشوند.
رسانه ورودی به فرمانها (Pi)
- وقتی پیامهای وب ورودی شامل رسانه باشند، OpenClaw آن را در یک فایل موقت دانلود میکند و متغیرهای قالببندی را در دسترس میگذارد:
{{MediaUrl}}شبه-URL برای رسانه ورودی.{{MediaPath}}مسیر موقت محلی که پیش از اجرای فرمان نوشته میشود.
- وقتی sandbox داکر برای هر نشست فعال باشد، رسانه ورودی در فضای کاری sandbox کپی میشود و
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). - رسانه بیشازحد بزرگ درک را رد میکند، اما پاسخها همچنان با بدنه اصلی عبور میکنند.
نکات برای آزمونها
- جریانهای ارسال + پاسخ را برای موارد تصویر/صدا/سند پوشش دهید.
- فشردهسازی دوباره تصاویر (کران اندازه) و پرچم یادداشت صوتی برای صدا را اعتبارسنجی کنید.
- اطمینان حاصل کنید پاسخهای چندرسانهای بهصورت ارسالهای ترتیبی منشعب میشوند.