رسائل المجموعة
الهدف: السماح لـ Clawd بالتواجد في مجموعات واتساب، والاستيقاظ فقط عند الإشارة إليه، والحفاظ على سلسلة تلك المحادثة منفصلة عن جلسة المراسلة الشخصية المباشرة. ملاحظة: agents.list[].groupChat.mentionPatterns تُستخدم الآن أيضًا من قبل Telegram/Discord/Slack/iMessage؛ يركز هذا المستند على سلوك واتساب المحدد. للإعدادات متعددة الوكلاء، اضبط agents.list[].groupChat.mentionPatterns لكل وكيل (أو استخدم messages.groupChat.mentionPatterns كخيار احتياطي عام).
ما تم تنفيذه (2025-12-03)
- أوضاع التفعيل:
mention(الافتراضي) أوalways. يتطلبmentionإشارة (إشارات @-mentions حقيقية في واتساب عبرmentionedJids، أو أنماط regex، أو رقم E.164 الخاص بالبوت في أي مكان في النص).alwaysيوقظ الوكيل عند كل رسالة ولكن يجب أن يرد فقط عندما يمكنه إضافة قيمة ذات معنى؛ وإلا فإنه يُرجع الرمز الصامتNO_REPLY. يمكن تعيين الإعدادات الافتراضية في التكوين (channels.whatsapp.groups) وتجاوزها لكل مجموعة عبر/activation. عند تعيينchannels.whatsapp.groups، فإنه يعمل أيضًا كقائمة سماح للمجموعات (قم بتضمين"*"للسماح للجميع). - سياسة المجموعة:
channels.whatsapp.groupPolicyتتحكم فيما إذا كانت رسائل المجموعة مقبولة (open|disabled|allowlist). يستخدمallowlistchannels.whatsapp.groupAllowFrom(الخيار الاحتياطي:channels.whatsapp.allowFromالصريح). الافتراضي هوallowlist(محظور حتى تقوم بإضافة مرسلين). - جلسات لكل مجموعة: تبدو مفاتيح الجلسة كالتالي
agent:<agentId>:whatsapp:group:<jid>لذا فإن الأوامر مثل/verbose onأو/think high(المرسلة كرسائل منفردة) تكون محددة بتلك المجموعة؛ ولا تتأثر حالة المراسلة الشخصية المباشرة. يتم تخطي نبضات القلب لجلسات المجموعة. - حقن السياق: يتم إضافة رسائل المجموعة التي في انتظار المعالجة فقط (50 افتراضيًا) والتي لم تؤدي إلى تشغيل الوكيل كبادئة تحت
[رسائل الدردشة منذ ردك الأخير - للسياق]، مع سطر التنبيه تحت[الرسالة الحالية - رد على هذا]. لا يتم إعادة حقن الرسائل الموجودة بالفعل في الجلسة. - عرض المرسل: كل دفعة من رسائل المجموعة تنتهي الآن بـ
[من: اسم المرسل (+E164)]حتى يعرف Pi من يتحدث. - الرسائل العابرة/المشاهدة لمرة واحدة: نقوم بفك تغليفها قبل استخراج النص/الإشارات، لذا فإن الإشارات الموجودة داخلها لا تزال تُطلق التنبيه.
- موجه النظام للمجموعة: في الدور الأول من جلسة المجموعة (وكلما قام
/activationبتغيير الوضع) نقوم بحقن نبذة قصيرة في موجه النظام مثلأنت ترد داخل مجموعة واتساب "<subject>". أعضاء المجموعة: أليس (+44...)، بوب (+43...)، … التفعيل: عند التنبيه فقط … خاطب المرسل المحدد المذكور في سياق الرسالة.إذا لم تكن البيانات الوصفية متاحة، فإننا لا نزال نخبر الوكيل أنها دردشة جماعية.
مثال على التكوين (واتساب)
أضف كتلة groupChat إلى ~/.openclaw/openclaw.json حتى تعمل إشارات اسم العرض حتى عندما تقوم واتساب بإزالة الرمز المرئي @ في نص الرسالة:
{
channels: {
whatsapp: {
groups: {
"*": { requireMention: true },
},
},
},
agents: {
list: [
{
id: "main",
groupChat: {
historyLimit: 50,
mentionPatterns: ["@?openclaw", "\\+?15555550123"],
},
},
],
},
}
ملاحظات:
- أنماط regex لا تحترم حالة الأحرف؛ وهي تغطي إشارة اسم العرض مثل
@openclawوالرقم الخام مع أو بدون+/مسافات. - لا تزال واتساب ترسل إشارات قياسية عبر
mentionedJidsعندما ينقر شخص ما على جهة الاتصال، لذا فإن استخدام الرقم كخيار احتياطي نادرًا ما يكون مطلوبًا ولكنه شبكة أمان مفيدة.
أمر التفعيل (للمالك فقط)
استخدم أمر دردشة المجموعة:
/activation mention/activation always
يمكن فقط لرقم المالك (من channels.whatsapp.allowFrom، أو رقم E.164 الخاص بالبوت نفسه عندما لا يكون مضبوطًا) تغيير هذا. أرسل /status كرسالة منفردة في المجموعة لرؤية وضع التفعيل الحالي.
كيفية الاستخدام
- أضف حساب واتساب الخاص بك (الذي يعمل عليه OpenClaw) إلى المجموعة.
- قل
@openclaw …(أو قم بتضمين الرقم). فقط المرسلون الموجودون في قائمة السماح يمكنهم تشغيله ما لم تقم بتعيينgroupPolicy: "open". - سيتضمن موجه الوكيل سياق المجموعة الحديث بالإضافة إلى علامة
[من: …]في النهاية حتى يتمكن من مخاطبة الشخص الصحيح. - توجيهات مستوى الجلسة (
/verbose on,/think high,/newأو/reset,/compact) تنطبق فقط على جلسة تلك المجموعة؛ أرسلها كرسائل منفردة حتى يتم تسجيلها. تظل جلسة المراسلة الشخصية المباشرة الخاصة بك مستقلة.
الاختبار / التحقق
- اختبار يدوي سريع:
- أرسل إشارة
@openclawفي المجموعة وتأكد من وجود رد يشير إلى اسم المرسل. - أرسل إشارة ثانية وتحقق من تضمين كتلة السجل ثم مسحها في الدور التالي.
- أرسل إشارة
- تحقق من سجلات البوابة (شغّل بـ
--verbose) لرؤية إدخالاتinbound web messageالتي تظهرfrom: <groupJid>واللاحقة[من: …].
الاعتبارات المعروفة
- يتم تخطي نبضات القلب عمدًا للمجموعات لتجنب البث الصاخب.
- يستخدم قمع الصدى سلسلة الدفعة المجمعة؛ إذا أرسلت نصًا متطابقًا مرتين بدون إشارات، فسيحصل الأول فقط على رد.
- ستظهر إدخالات مخزن الجلسات كـ
agent:<agentId>:whatsapp:group:<jid>في مخزن الجلسات (~/.openclaw/agents/<agentId>/sessions/sessions.jsonافتراضيًا)؛ يعني الإدخال المفقود فقط أن المجموعة لم تؤد إلى تشغيل بعد. - تتبع مؤشرات الكتابة في المجموعات
agents.defaults.typingMode(الافتراضي:messageعندما لا يتم الإشارة إليه).