WhatsApp (قناة Web)
الحالة: جاهزة للإنتاج عبر WhatsApp Web (Baileys). يمتلك gateway الجلسة (الجلسات) المرتبطة.التثبيت (عند الطلب)
- يطلب كل من الإعداد التفاعلي (
openclaw onboard) وopenclaw channels add --channel whatsappتثبيت plugin WhatsApp في أول مرة تحددها فيها. - يوفّر
openclaw channels login --channel whatsappأيضًا تدفق التثبيت عندما لا يكون plugin موجودًا بعد. - قناة التطوير + نسخة git محلية: تكون القيمة الافتراضية هي مسار plugin المحلي.
- Stable/Beta: القيمة الافتراضية هي حزمة npm
@openclaw/whatsapp.
الاقتران
سياسة الرسائل الخاصة الافتراضية هي الاقتران للمرسلين غير المعروفين.
استكشاف أخطاء القنوات وإصلاحها
أدوات التشخيص وخطط الإصلاح عبر القنوات.
تكوين Gateway
أنماط وأمثلة تكوين القنوات الكاملة.
الإعداد السريع
يوصي OpenClaw بتشغيل WhatsApp على رقم منفصل كلما أمكن ذلك. (تم تحسين بيانات تعريف القناة وتدفق الإعداد لهذا الإعداد، لكن الإعدادات التي تستخدم الرقم الشخصي مدعومة أيضًا.)
أنماط النشر
رقم مخصص (موصى به)
رقم مخصص (موصى به)
هذا هو وضع التشغيل الأنظف:
- هوية WhatsApp منفصلة لـ OpenClaw
- حدود أوضح لقوائم السماح بالرسائل الخاصة والتوجيه
- احتمال أقل لحدوث ارتباك في الدردشة الذاتية
بديل الرقم الشخصي
بديل الرقم الشخصي
يدعم الإعداد التفاعلي وضع الرقم الشخصي ويكتب خط أساس مناسبًا للدردشة الذاتية:
dmPolicy: "allowlist"- تتضمن
allowFromرقمك الشخصي selfChatMode: true
allowFrom.نطاق قناة WhatsApp Web فقط
نطاق قناة WhatsApp Web فقط
قناة منصة المراسلة في بنية قنوات OpenClaw الحالية تستند إلى WhatsApp Web (
Baileys).لا توجد قناة مراسلة WhatsApp منفصلة عبر Twilio ضمن سجل قنوات الدردشة المدمج.نموذج وقت التشغيل
- يمتلك gateway مقبس WhatsApp وحلقة إعادة الاتصال.
- تتطلب عمليات الإرسال الصادرة وجود مستمع WhatsApp نشط للحساب الهدف.
- يتم تجاهل محادثات الحالة والبث (
@statusو@broadcast). - تستخدم المحادثات المباشرة قواعد جلسات الرسائل الخاصة (
session.dmScope؛ القيمة الافتراضيةmainتؤدي إلى طي الرسائل الخاصة ضمن الجلسة الرئيسية للوكيل). - تكون جلسات المجموعات معزولة (
agent:<agentId>:whatsapp:group:<jid>).
التحكم في الوصول والتفعيل
- سياسة الرسائل الخاصة
- سياسة المجموعات + قوائم السماح
- الإشارات + /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>
حقن سجل المجموعات المعلق
حقن سجل المجموعات المعلق
بالنسبة إلى المجموعات، يمكن تخزين الرسائل غير المعالجة مؤقتًا وحقنها كسياق عندما يتم تشغيل bot أخيرًا.
- الحد الافتراضي:
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 في مدى استخدام الوكيل لتفاعلات emoji على 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.لا يوجد مستمع نشط عند الإرسال
لا يوجد مستمع نشط عند الإرسال
تفشل عمليات الإرسال الصادرة بسرعة عندما لا يوجد مستمع gateway نشط للحساب الهدف.تأكد من أن gateway يعمل وأن الحساب مرتبط.
يتم تجاهل رسائل المجموعات بشكل غير متوقع
يتم تجاهل رسائل المجموعات بشكل غير متوقع
تحقق بالترتيب التالي:
groupPolicygroupAllowFrom/allowFrom- إدخالات قائمة سماح
groups - ضبط الإشارة (
requireMention+ أنماط الإشارة) - المفاتيح المكررة في
openclaw.json(JSON5): تتجاوز الإدخالات اللاحقة الإدخالات السابقة، لذا احتفظ بقيمةgroupPolicyواحدة لكل نطاق
تحذير وقت تشغيل Bun
تحذير وقت تشغيل Bun
يجب أن يستخدم وقت تشغيل WhatsApp gateway بيئة Node. تُصنَّف Bun على أنها غير متوافقة مع التشغيل المستقر لـ WhatsApp/Telegram gateway.
مؤشرات مرجع التكوين
المرجع الأساسي: حقول 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