WhatsApp (قناة الويب)
الحالة: جاهزة للإنتاج عبر WhatsApp Web (Baileys). تتولى البوابة جلسة/جلسات الربط.التثبيت (عند الطلب)
- الإعداد (
openclaw onboard) وopenclaw channels add --channel whatsappيطالبان بتثبيت إضافة WhatsApp أول مرة تحددها فيها. - يوفّر
openclaw channels login --channel whatsappأيضًا تدفق التثبيت عندما لا تكون الإضافة موجودة بعد. - قناة التطوير + سحب git: يُستخدم مسار الإضافة المحلي افتراضيًا.
- Stable/Beta: تُستخدم حزمة npm
@openclaw/whatsappافتراضيًا.
الاقتران
سياسة الرسائل الخاصة الافتراضية هي الاقتران للمرسلين غير المعروفين.
استكشاف أخطاء القناة وإصلاحها
تشخيصات متعددة القنوات وكتيبات الإصلاح.
إعدادات البوابة
أنماط وأمثلة كاملة لإعداد القنوات.
إعداد سريع
يوصي OpenClaw بتشغيل WhatsApp على رقم منفصل كلما أمكن. (البيانات الوصفية للقناة وتدفق الإعداد محسّنان لهذا الإعداد، لكن إعدادات الأرقام الشخصية مدعومة أيضًا.)
أنماط النشر
رقم مخصص (موصى به)
رقم مخصص (موصى به)
هذا هو وضع التشغيل الأنظف:
- هوية WhatsApp منفصلة لـ OpenClaw
- حدود أوضح لقوائم السماح في الرسائل الخاصة والتوجيه
- احتمال أقل لحدوث ارتباك في الدردشة الذاتية
العودة إلى الرقم الشخصي
العودة إلى الرقم الشخصي
يدعم الإعداد وضع الرقم الشخصي ويكتب خط أساس مناسبًا للدردشة الذاتية:
dmPolicy: "allowlist"- يتضمن
allowFromرقمك الشخصي selfChatMode: true
allowFrom.نطاق قناة WhatsApp Web فقط
نطاق قناة WhatsApp Web فقط
قناة منصة المراسلة تعتمد على WhatsApp Web (
Baileys) في بنية قنوات OpenClaw الحالية.لا توجد قناة مراسلة WhatsApp منفصلة عبر Twilio في سجل قنوات الدردشة المضمّن.نموذج التشغيل
- تتولى البوابة مقبس WhatsApp وحلقة إعادة الاتصال.
- تتطلب عمليات الإرسال الصادرة مستمع WhatsApp نشطًا للحساب المستهدف.
- يتم تجاهل محادثات الحالة والبث (
@status,@broadcast). - تستخدم المحادثات المباشرة قواعد جلسة الرسائل الخاصة (
session.dmScope؛ والقيمة الافتراضيةmainتدمج الرسائل الخاصة في الجلسة الرئيسية للوكيل). - جلسات المجموعات معزولة (
agent:<agentId>:whatsapp:group:<jid>). - يراعي نقل WhatsApp Web متغيرات بيئة الوكيل القياسية على مضيف البوابة (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ والمتغيرات المكافئة بالأحرف الصغيرة). يُفضَّل إعداد الوكيل على مستوى المضيف بدلًا من إعدادات وكيل WhatsApp الخاصة بالقناة.
التحكم في الوصول والتفعيل
- سياسة الرسائل الخاصة
- سياسة المجموعات + قوائم السماح
- الإشارات + /activation
يتحكم
channels.whatsapp.dmPolicy في الوصول إلى المحادثات المباشرة:pairing(الافتراضي)allowlistopen(يتطلب أن يتضمنallowFromالقيمة"*")disabled
allowFrom أرقامًا بنمط E.164 (مع تسويتها داخليًا).تجاوز متعدد الحسابات: يحظى channels.whatsapp.accounts.<id>.dmPolicy (و allowFrom) بالأولوية على الإعدادات الافتراضية على مستوى القناة لذلك الحساب.تفاصيل سلوك التشغيل:- يتم الاحتفاظ بعمليات الاقتران في مخزن السماح الخاص بالقناة ودمجها مع
allowFromالمكوَّنة - إذا لم تُكوَّن قائمة سماح، فسيُسمح بالرقم الذاتي المرتبط افتراضيًا
- لا تُقرن الرسائل الخاصة الصادرة
fromMeتلقائيًا أبدًا
سلوك الرقم الشخصي والدردشة الذاتية
عندما يكون الرقم الذاتي المرتبط موجودًا أيضًا فيallowFrom، يتم تفعيل وسائل الحماية الخاصة بالدردشة الذاتية في WhatsApp:
- تخطي إيصالات القراءة في دورات الدردشة الذاتية
- تجاهل سلوك التشغيل التلقائي لإشارة JID الذي قد يؤدي بخلاف ذلك إلى تنبيهك أنت نفسك
- إذا لم يتم تعيين
messages.responsePrefix، فستكون بادئة ردود الدردشة الذاتية افتراضيًا[{identity.name}]أو[openclaw]
تسوية الرسائل والسياق
غلاف الوارد + سياق الرد
غلاف الوارد + سياق الرد
تُغلّف رسائل WhatsApp الواردة داخل الغلاف المشترك للوارد.إذا وُجد رد مقتبس، يُضاف السياق بهذا الشكل:تُعبّأ أيضًا حقول بيانات تعريف الرد عند توفرها (
ReplyToId, ReplyToBody, ReplyToSender, ومرسل JID/E.164).العناصر النائبة للوسائط واستخراج الموقع/جهة الاتصال
العناصر النائبة للوسائط واستخراج الموقع/جهة الاتصال
تتم تسوية الرسائل الواردة التي تحتوي على وسائط فقط بعناصر نائبة مثل:
<media:image><media:video><media:audio><media:document><media:sticker>
حقن سجل المجموعة المعلّق
حقن سجل المجموعة المعلّق
بالنسبة للمجموعات، يمكن تخزين الرسائل غير المعالجة مؤقتًا وحقنها كسياق عندما يتم تشغيل الروبوت أخيرًا.
- الحد الافتراضي:
50 - الإعداد:
channels.whatsapp.historyLimit - البديل:
messages.groupChat.historyLimit 0يعطّل الميزة
[Chat messages since your last reply - for context][Current message - respond to this]
إيصالات القراءة
إيصالات القراءة
تكون إيصالات القراءة مفعّلة افتراضيًا لرسائل WhatsApp الواردة المقبولة.للتعطيل على مستوى عام:تجاوز لكل حساب:تتخطى دورات الدردشة الذاتية إيصالات القراءة حتى عند تفعيلها على مستوى عام.
التسليم، والتقسيم، والوسائط
تقسيم النص
تقسيم النص
- الحد الافتراضي للتقسيم:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"- يفضّل وضع
newlineحدود الفقرات (الأسطر الفارغة)، ثم يعود إلى تقسيم آمن بحسب الطول
سلوك الوسائط الصادرة
سلوك الوسائط الصادرة
- يدعم حمولات الصور والفيديو والصوت (مذكرة صوتية PTT) والمستندات
- يُعاد كتابة
audio/oggإلىaudio/ogg; codecs=opusلتوافق الملاحظات الصوتية - يتم دعم تشغيل GIF المتحرك عبر
gifPlayback: trueعند إرسال الفيديو - تُطبّق التسميات التوضيحية على أول عنصر وسائط عند إرسال حمولات رد متعددة الوسائط
- يمكن أن يكون مصدر الوسائط HTTP(S) أو
file://أو مسارات محلية
حدود حجم الوسائط وسلوك الرجوع
حدود حجم الوسائط وسلوك الرجوع
- الحد الأقصى لحفظ الوسائط الواردة:
channels.whatsapp.mediaMaxMb(الافتراضي50) - الحد الأقصى لإرسال الوسائط الصادرة:
channels.whatsapp.mediaMaxMb(الافتراضي50) - تستخدم التجاوزات لكل حساب
channels.whatsapp.accounts.<accountId>.mediaMaxMb - تُحسَّن الصور تلقائيًا (تغيير الحجم/اختبار الجودة) لتلائم الحدود
- عند فشل إرسال الوسائط، يرسل الرجوع الخاص بالعنصر الأول تحذيرًا نصيًا بدلًا من إسقاط الرد بصمت
مستوى التفاعلات
يتحكمchannels.whatsapp.reactionLevel في مدى استخدام الوكيل لتفاعلات الإيموجي على WhatsApp:
| المستوى | تفاعلات الإقرار | تفاعلات يبدأها الوكيل | الوصف |
|---|---|---|---|
"off" | لا | لا | بدون أي تفاعلات على الإطلاق |
"ack" | نعم | لا | تفاعلات الإقرار فقط (إقرار ما قبل الرد) |
"minimal" | نعم | نعم (بحذر) | الإقرار + تفاعلات الوكيل مع إرشادات متحفظة |
"extensive" | نعم | نعم (مستحسنة) | الإقرار + تفاعلات الوكيل مع إرشادات مشجعة |
"minimal".
تستخدم التجاوزات لكل حساب channels.whatsapp.accounts.<id>.reactionLevel.
تفاعلات الإقرار
يدعم WhatsApp تفاعلات الإقرار الفورية عند استلام الرسائل الواردة عبرchannels.whatsapp.ackReaction.
تخضع تفاعلات الإقرار لـ reactionLevel — ويتم كبتها عندما تكون قيمة reactionLevel هي "off".
- تُرسل فورًا بعد قبول الوارد (قبل الرد)
- يتم تسجيل الإخفاقات لكنها لا تمنع تسليم الرد العادي
- يتفاعل وضع المجموعة
mentionsفي الدورات التي يتم تشغيلها بالإشارة؛ ويعمل تفعيل المجموعةalwaysكتجاوز لهذا الفحص - يستخدم WhatsApp
channels.whatsapp.ackReaction(ولا يُستخدم هنا الإرثيmessages.ackReaction)
الحسابات المتعددة وبيانات الاعتماد
اختيار الحساب والإعدادات الافتراضية
اختيار الحساب والإعدادات الافتراضية
- تأتي معرّفات الحسابات من
channels.whatsapp.accounts - اختيار الحساب الافتراضي:
defaultإذا كان موجودًا، وإلا أول معرّف حساب مُكوَّن (بعد الفرز) - تتم تسوية معرّفات الحسابات داخليًا لأغراض البحث
مسارات بيانات الاعتماد والتوافق مع الإصدارات السابقة
مسارات بيانات الاعتماد والتوافق مع الإصدارات السابقة
- مسار المصادقة الحالي:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - ملف النسخة الاحتياطية:
creds.json.bak - لا يزال يتم التعرّف على المصادقة الافتراضية القديمة في
~/.openclaw/credentials/وترحيلها لتدفقات الحساب الافتراضي
سلوك تسجيل الخروج
سلوك تسجيل الخروج
يقوم
openclaw channels logout --channel whatsapp [--account <id>] بمسح حالة مصادقة WhatsApp لذلك الحساب.في أدلة المصادقة القديمة، يتم الاحتفاظ بـ oauth.json بينما تتم إزالة ملفات مصادقة Baileys.الأدوات والإجراءات وكتابة الإعدادات
- يتضمن دعم أدوات الوكيل إجراء تفاعل WhatsApp (
react). - بوابات الإجراءات:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- تكون عمليات كتابة الإعدادات التي تبدأها القناة مفعّلة افتراضيًا (يمكن تعطيلها عبر
channels.whatsapp.configWrites=false).
استكشاف الأخطاء وإصلاحها
غير مرتبط (يتطلب QR)
غير مرتبط (يتطلب QR)
العَرَض: تشير حالة القناة إلى أنها غير مرتبطة.الإصلاح:
مرتبط ولكن غير متصل / حلقة إعادة الاتصال
مرتبط ولكن غير متصل / حلقة إعادة الاتصال
العَرَض: حساب مرتبط مع انقطاعات متكررة أو محاولات إعادة اتصال.الإصلاح:عند الحاجة، أعد الربط باستخدام
channels login.لا يوجد مستمع نشط عند الإرسال
لا يوجد مستمع نشط عند الإرسال
تفشل عمليات الإرسال الصادرة سريعًا عندما لا يوجد مستمع بوابة نشط للحساب المستهدف.تأكد من أن البوابة قيد التشغيل وأن الحساب مرتبط.
يتم تجاهل رسائل المجموعات بشكل غير متوقع
يتم تجاهل رسائل المجموعات بشكل غير متوقع
تحقق بهذا الترتيب:
groupPolicygroupAllowFrom/allowFrom- إدخالات قائمة السماح
groups - بوابة الإشارة (
requireMention+ أنماط الإشارة) - المفاتيح المكررة في
openclaw.json(JSON5): الإدخالات اللاحقة تتجاوز السابقة، لذا احتفظ بقيمةgroupPolicyواحدة لكل نطاق
تحذير وقت تشغيل Bun
تحذير وقت تشغيل Bun
يجب أن يستخدم وقت تشغيل بوابة WhatsApp Node. ويتم تمييز Bun على أنه غير متوافق لتشغيل بوابة WhatsApp/Telegram بشكل مستقر.
مؤشرات مرجعية للإعداد
المرجع الأساسي: حقول WhatsApp عالية الأهمية:- الوصول:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - التسليم:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - الحسابات المتعددة:
accounts.<id>.enabled,accounts.<id>.authDir, والتجاوزات على مستوى الحساب - العمليات:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.* - سلوك الجلسة:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit