رسائل المجموعات (قناة WhatsApp web)
الهدف: السماح لـ Clawd بالوجود في مجموعات WhatsApp، والاستيقاظ فقط عند مناداته، وإبقاء هذا السياق منفصلًا عن جلسة الرسائل المباشرة الشخصية. ملاحظة: يُستخدمagents.list[].groupChat.mentionPatterns الآن أيضًا بواسطة Telegram/Discord/Slack/iMessage؛ يركّز هذا المستند على السلوك الخاص بـ WhatsApp. في الإعدادات متعددة الوكلاء، اضبط agents.list[].groupChat.mentionPatterns لكل وكيل (أو استخدم messages.groupChat.mentionPatterns كخيار عام احتياطي).
التنفيذ الحالي (2025-12-03)
- أوضاع التفعيل:
mention(الافتراضي) أوalways. يتطلب وضعmentionمناداة (إشارات WhatsApp @ الحقيقية عبرmentionedJids، أو أنماط regex الآمنة، أو رقم E.164 الخاص بالبوت في أي مكان داخل النص). يوقظ وضعalwaysالوكيل عند كل رسالة، لكن يجب أن يرد فقط عندما يمكنه إضافة قيمة حقيقية؛ وإلا فإنه يعيد رمز الصمت المطابق تمامًاNO_REPLY/no_reply. يمكن ضبط القيم الافتراضية في الإعداد (channels.whatsapp.groups) وتجاوزها لكل مجموعة عبر/activation. عند ضبطchannels.whatsapp.groups، فإنه يعمل أيضًا كقائمة سماح للمجموعات (ضمّن"*"للسماح للجميع). - سياسة المجموعات: يتحكم
channels.whatsapp.groupPolicyفيما إذا كانت رسائل المجموعات مقبولة (open|disabled|allowlist). يستخدمallowlistالقيمةchannels.whatsapp.groupAllowFrom(والخيار الاحتياطي:channels.whatsapp.allowFromالصريح). القيمة الافتراضية هيallowlist(محظور حتى تضيف المرسلين). - جلسات لكل مجموعة: تبدو مفاتيح الجلسات على الشكل
agent:<agentId>:whatsapp:group:<jid>بحيث تكون أوامر مثل/verbose onأو/think high(المرسلة كرسائل مستقلة) ضمن نطاق تلك المجموعة؛ وتبقى حالة الرسائل المباشرة الشخصية دون تغيير. يتم تخطي إشارات heartbeat لخيوط المجموعات. - حقن السياق: تُضاف رسائل المجموعات المعلّقة فقط (الافتراضي 50) التي لم تشغّل تنفيذًا في البداية تحت
[Chat messages since your last reply - for context]، مع السطر المشغّل تحت[Current message - respond to this]. لا يُعاد حقن الرسائل الموجودة بالفعل في الجلسة. - إظهار المرسِل: تنتهي كل دفعة مجموعة الآن بـ
[from: Sender Name (+E164)]بحيث يعرف Pi من الذي يتحدث. - الرسائل المؤقتة/العرض لمرة واحدة: نقوم بفكها قبل استخراج النص/الإشارات، بحيث تستمر المناداة بداخلها في التفعيل.
- موجّه النظام للمجموعة: في الدورة الأولى من جلسة المجموعة (وكلما غيّر
/activationالوضع) نضيف فقرة قصيرة إلى موجّه النظام مثلYou are replying inside the WhatsApp group "<subject>". Group members: Alice (+44...), Bob (+43...), … Activation: trigger-only … Address the specific sender noted in the message context.وإذا لم تكن البيانات الوصفية متاحة، فما زلنا نُبلغ الوكيل بأنه في دردشة مجموعة.
مثال على الإعداد (WhatsApp)
أضف كتلةgroupChat إلى ~/.openclaw/openclaw.json لكي تعمل المناداة باسم العرض حتى عندما يزيل WhatsApp الرمز المرئي @ من نص الرسالة:
- تعبيرات regex غير حساسة لحالة الأحرف وتستخدم حواجز الحماية نفسها الخاصة بـ safe-regex المستخدمة في واجهات regex الأخرى في الإعداد؛ ويتم تجاهل الأنماط غير الصالحة والتكرار المتداخل غير الآمن.
- لا يزال WhatsApp يرسل الإشارات القانونية عبر
mentionedJidsعندما ينقر شخص ما جهة الاتصال، لذا نادرًا ما تكون الاستعاضة بالرقم مطلوبة، لكنها تشكل شبكة أمان مفيدة.
أمر التفعيل (للمالك فقط)
استخدم أمر دردشة المجموعة:/activation mention/activation always
channels.whatsapp.allowFrom، أو رقم E.164 الخاص بالبوت نفسه عند عدم الضبط) تغيير هذا. أرسل /status كرسالة مستقلة في المجموعة لرؤية وضع التفعيل الحالي.
كيفية الاستخدام
- أضف حساب WhatsApp الخاص بك (الحساب الذي يشغّل OpenClaw) إلى المجموعة.
- قل
@openclaw …(أو ضمّن الرقم). يمكن فقط للمرسلين المسموح لهم تشغيله ما لم تضبطgroupPolicy: "open". - سيتضمن موجّه الوكيل سياق المجموعة الحديث بالإضافة إلى العلامة اللاحقة
[from: …]حتى يتمكن من مخاطبة الشخص الصحيح. - تنطبق التوجيهات على مستوى الجلسة (
/verbose onو/think highو/newأو/resetو/compact) على جلسة تلك المجموعة فقط؛ أرسلها كرسائل مستقلة حتى يتم تسجيلها. وتبقى جلسة الرسائل المباشرة الشخصية مستقلة.
الاختبار / التحقق
- اختبار يدوي سريع:
- أرسل مناداة
@openclawفي المجموعة وتأكد من وجود رد يشير إلى اسم المرسل. - أرسل مناداة ثانية وتحقق من تضمين كتلة السجل ثم مسحها في الدورة التالية.
- أرسل مناداة
- افحص سجلات Gateway (شغّل باستخدام
--verbose) لرؤية إدخالاتinbound web messageالتي تعرضfrom: <groupJid>واللاحقة[from: …].
اعتبارات معروفة
- يتم تخطي إشارات heartbeat عمدًا للمجموعات لتجنب البث المزعج.
- يستخدم كبح التكرار سلسلة الدفعة المجمعة؛ إذا أرسلت النص نفسه مرتين دون إشارات، فلن يحصل إلا الأول على رد.
- ستظهر إدخالات مخزن الجلسات بالشكل
agent:<agentId>:whatsapp:group:<jid>في مخزن الجلسات (الافتراضي~/.openclaw/agents/<agentId>/sessions/sessions.json)؛ وغياب الإدخال يعني فقط أن المجموعة لم تشغّل تنفيذًا بعد. - تتبع مؤشرات الكتابة في المجموعات
agents.defaults.typingMode(الافتراضي:messageعند عدم وجود إشارة).