منصات المراسلة
واتساب
الحالة: جاهز للإنتاج عبر واتساب ويب (Baileys). البوابة تمتلك جلسة/جلسات الارتباط.
الإعداد السريع
الخطوة 1: تكوين سياسة الوصول إلى واتساب
{
channels: {
whatsapp: {
dmPolicy: "pairing",
allowFrom: ["+15551234567"],
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"],
},
},
}
الخطوة 2: ربط واتساب (QR)
openclaw channels login --channel whatsapp
لحساب محدد:
openclaw channels login --channel whatsapp --account work
الخطوة 3: تشغيل البوابة
openclaw gateway
الخطوة 4: الموافقة على طلب الاقتران الأول (إذا كنت تستخدم وضع الاقتران)
openclaw pairing list whatsapp
openclaw pairing approve whatsapp <CODE>
طلبات الاقتران تنتهي صلاحيتها بعد ساعة واحدة. الطلبات المعلقة محدودة بـ 3 لكل قناة.
ℹ️ يوصي OpenClaw بتشغيل واتساب على رقم منفصل عندما يكون ذلك ممكنًا. (بيانات وصفية القناة وتدفق الإعداد مُحسّنان لهذا الإعداد، لكن إعدادات الرقم الشخصي مدعومة أيضًا.)
أنماط النشر
هذا هو أنظف وضع تشغيلي:
- هوية واتساب منفصلة لـ OpenClaw
- حدود قوائم السماح والتوجيه أوضح
- فرصة أقل لحدوث ارتباك في الدردشة الذاتية
نمط السياسة الأدنى:
{
channels: {
whatsapp: {
dmPolicy: "allowlist",
allowFrom: ["+15551234567"],
},
},
}
يدعم الإعداد وضع الرقم الشخصي ويكتب إعدادًا أساسيًا مناسبًا للدردشة الذاتية:
dmPolicy: "allowlist"allowFromيتضمن رقمك الشخصيselfChatMode: true
خلال التشغيل، تعتمد حماية الدردشة الذاتية على رقم الذات المرتبط و allowFrom.
قناة منصة المراسلة تعتمد على واتساب ويب (Baileys) في بنية قنوات OpenClaw الحالية. لا توجد قناة مراسلة واتساب منفصلة من Twilio في سجل قنوات الدردشة المدمج.
نموذج التشغيل
- البوابة تمتلك مقبس واتساب وحلقة إعادة الاتصال.
- عمليات الإرسال الصادرة تتطلب مستمع واتساب نشط للحساب المستهدف.
- محادثات الحالة والبث تُتجاهل (
@status,@broadcast). - محادثات الدردشة المباشرة تستخدم قواعد جلسة الرسائل المباشرة (
session.dmScope؛ الافتراضيmainيدمج الرسائل المباشرة في الجلسة الرئيسية للوكيل). - جلسات المجموعة معزولة (
agent::whatsapp:group:).
التحكم في الوصول والتشغيل
channels.whatsapp.dmPolicy تتحكم في الوصول إلى محادثات الدردشة المباشرة:
pairing(الافتراضي)allowlistopen(يتطلب تضمين"*"فيallowFrom)disabled
allowFrom تقبل أرقامًا بتنسيق E.164 (يتم تطبيعها داخليًا).تجاوز متعدد الحسابات: channels.whatsapp.accounts..dmPolicy (و allowFrom) تأخذ الأولوية على الإعدادات الافتراضية على مستوى القناة لذلك الحساب.تفاصيل سلوك التشغيل:
- عمليات الاقتران تُحفظ في مخزن السماح للقناة وتُدمج مع
allowFromالمُكون - إذا لم يتم تكوين قائمة سماح، فإن رقم الذات المرتبط يُسمح به افتراضيًا
- الرسائل المباشرة الصادرة
fromMeلا يتم اقترانها تلقائيًا أبدًا
الوصول إلى المجموعة له طبقتان:
- قائمة سماح عضوية المجموعة (
channels.whatsapp.groups)- إذا تم حذف
groups، فإن جميع المجموعات مؤهلة - إذا كان
groupsموجودًا، فإنه يعمل كقائمة سماح للمجموعات ("*"مسموح)
- إذا تم حذف
- سياسة مرسل المجموعة (
channels.whatsapp.groupPolicy+groupAllowFrom)open: يتم تجاوز قائمة سماح المرسلallowlist: يجب أن يطابق المرسلgroupAllowFrom(أو*)disabled: حظر كل الوارد للمجموعة
التراجع لقائمة سماح المرسل:
- إذا لم يتم تعيين
groupAllowFrom، فإن وقت التشغيل يتراجع إلىallowFromعند التوفر - يتم تقييم قوائم سماح المرسل قبل تشغيل الإشارة/الرد
ملاحظة: إذا لم يكن هناك كتلة channels.whatsapp على الإطلاق، فإن التراجع لسياسة المجموعة في وقت التشغيل هو allowlist (مع تسجيل تحذير)، حتى إذا تم تعيين channels.defaults.groupPolicy.
الردود في المجموعة تتطلب الإشارة افتراضيًا.كشف الإشارة يتضمن:
- إشارات واتساب الصريحة لهوية البوت
- أنماط التعبير العادي المُكونة للإشارة (
agents.list[].groupChat.mentionPatterns، التراجعmessages.groupChat.mentionPatterns) - كشف الرد-على-البوت الضمني (مرسل الرد يطابق هوية البوت)
ملاحظة أمنية:
- الاقتباس/الرد يلبي فقط بوابة الإشارة؛ إنه لا يمنح تفويض المرسل
- مع
groupPolicy: "allowlist"، لا يزال المرسلون غير المدرجين في قائمة السماح محظورين حتى لو ردوا على رسالة مستخدم مدرج في قائمة السماح
أمر التشغيل على مستوى الجلسة:
/activation mention/activation always
activation يقوم بتحديث حالة الجلسة (ليس التكوين العام). إنه مقيد بالمالك.
سلوك الرقم الشخصي والدردشة الذاتية
عندما يكون رقم الذات المرتبط موجودًا أيضًا في allowFrom، يتم تفعيل ضمانات الدردشة الذاتية في واتساب:
- تخطي إيصالات القراءة لدورات الدردشة الذاتية
- تجاهل سلوب التشغيل التلقائي لـ JID الإشارة الذي قد يسبب إشعارك بنفسك
- إذا لم يتم تعيين
messages.responsePrefix، فإن ردود الدردشة الذاتية الافتراضية هي[{identity.name}]أو[openclaw]
تطبيع الرسالة والسياق
يتم تغليف رسائل واتساب الواردة في المغلف المش ترك للوارد.إذا كان هناك رد مقتبس، يتم إلحاق السياق بهذا الشكل:
[Replying to <sender> id:<stanzaId>]
<quoted body or media placeholder>
[/Replying]
يتم أيضًا ملء حقب بيانات الرد عند توفرها (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]
إيصالات القراءة مفعلة افتراضيًا لرسائل واتساب الواردة المقبولة.تعطيل عالميًا:
{
channels: {
whatsapp: {
sendReadReceipts: false,
},
},
}
تجاوز لكل حساب:
{
channels: {
whatsapp: {
accounts: {
work: {
sendReadReceipts: false,
},
},
},
},
}
دورات الدردشة الذاتية تتخطى إيصالات القراءة حتى عند تفعيلها عالميًا.
التسليم والتقسيم والوسائط
-
حد التقسيم الافتراضي:
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..mediaMaxMb -
يتم تحسين الصور تلقائيًا (تغيير الحجم/جودة) لتناسب الحدود
-
عند فشل إرسال الوسائط، يرسل التراجع للعنصر الأول تحذيرًا نصيًا بدلاً من إسقاط الرد بصمت
تفاعلات الإقرار
يدعم واتساب تفاعلات الإقرار الفورية عند استلام الوارد عبر channels.whatsapp.ackReaction.
{
channels: {
whatsapp: {
ackReaction: {
emoji: "👀",
direct: true,
group: "mentions", // always | mentions | never
},
},
},
}
ملاحظات السلوك:
- تُرسل فورًا بعد قبول الوارد (قبل الرد)
- يتم تسجيل حالات الفشل لكنها لا تمنع تسليم الرد العادي
- وضع المجموعة
mentionsيتفاعل على الدورات التي تم تشغيلها بالإشارة؛ تشغيل المجموعةalwaysيعمل كتجاوز لهذا الفحص - يستخدم واتساب
channels.whatsapp.ackReaction(القديمmessages.ackReactionلا يُستخدم هنا)
الحسابات المتعددة والمعلومات الاعتمادية
-
معرفات الحسابات تأتي من
channels.whatsapp.accounts -
اختيار الحساب الافتراضي:
defaultإذا كان موجودًا، وإلا أول معرف حساب مُكون (مرتب) -
يتم تطبيع معرفات الحسابات داخليًا للبحث
-
مسار المصادقة الحالي:
~/.openclaw/credentials/whatsapp//creds.json -
ملف النسخ الاحتياطي:
creds.json.bak -
المصادقة الافتراضية القديمة في
~/.openclaw/credentials/لا تزال معترف بها/يتم نقلها لتدفقات الحساب الافتراضي
openclaw channels logout --channel whatsapp [--account ] يمسح حالة مصادقة واتساب لذلك الحساب.في أدلة المصادقة القديمة، يتم الحفاظ على oauth.json بينما يتم إزالة ملفات مصادقة Baileys.
الأدوات والإجراءات وكتابة التكوين
- دعم أداة الوكيل يتضمن إجراء تفاعل واتساب (
react). - بوابات الإجراءات:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- كتابة التكوين التي تبدأها القناة مفعلة افتراضيًا (تعطيل عبر
channels.whatsapp.configWrites=false).
استكشاف الأخطاء وإصلاحها
العَرَض: حالة القناة تشير إلى غير مرتبط.الإصلاح:
openclaw channels login --channel whatsapp
openclaw channels status
العَرَض: حساب مرتبط مع انقطاعات متكررة أو محاولات إعادة اتصال.الإصلاح:
openclaw doctor
openclaw logs --follow
إذا لزم الأمر، أعد الربط باستخدام channels login.
عمليات الإرسال الصادرة تفشل بسرعة عندما لا يوجد مستمع بوابة نشط للحساب المستهدف.تأكد من أن البوابة قيد التشغيل وأن الحساب مرتبط.
تحقق بهذا الترتيب:
groupPolicygroupAllowFrom/allowFrom- إدخالات قائمة السماح
groups - بوابة الإشارة (
requireMention+ أنماط الإشارة) - مفاتيح مكررة في
openclaw.json(JSON5): الإدخالات اللاحقة تتجاوز السابقة، لذا احتفظ بـgroupPolicyواحد لكل نطاق
يجب أن يستخدم وقت تشغيل بوابة واتساب Node. يتم الإشارة إلى Bun على أنه غير متوافق لتشغيل بوابة واتساب/تيليجرام المستقر.
إشارات مرجع التكوين
المرجع الأساسي:
حقول واتساب عالية الأهمية:
- الوصول:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - التسليم:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction - الحسابات المتعددة:
accounts..enabled,accounts..authDir, تجاوزات مستوى الحساب - العمليات:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.* - سلوب الجلسة:
session.dmScope,historyLimit,dmHistoryLimit,dms..historyLimit