> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# رسائل المجموعات

# رسائل المجموعات (قناة WhatsApp web)

الهدف: السماح لـ Clawd بالتواجد في مجموعات WhatsApp، والاستيقاظ فقط عند مناداته، مع إبقاء ذلك الخيط منفصلًا عن جلسة الرسائل الخاصة (DM) الشخصية.

ملاحظة: أصبح `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`. يمكن تعيين القيم الافتراضية في التهيئة (`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` (عند إرسالها كرسائل مستقلة) محصورة بتلك المجموعة؛ ولا تتأثر حالة الرسائل الخاصة الشخصية. يتم تخطي نبضات القلب لخيوط المجموعات.
* حقن السياق: يتم إلحاق رسائل المجموعة **المعلّقة فقط** (الافتراضي 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 العلامة المرئية `@` من نص الرسالة:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    whatsapp: {
      groups: {
        "*": { requireMention: true },
      },
    },
  },
  agents: {
    list: [
      {
        id: "main",
        groupChat: {
          historyLimit: 50,
          mentionPatterns: ["@?openclaw", "\\+?15555550123"],
        },
      },
    ],
  },
}
```

ملاحظات:

* تكون تعابير regex غير حساسة لحالة الأحرف؛ وهي تغطي إشارة اسم العرض مثل `@openclaw` والرقم الخام مع أو بدون `+`/مسافات.
* ما يزال WhatsApp يرسل الإشارات القياسية عبر `mentionedJids` عندما ينقر شخص على جهة الاتصال، لذا نادرًا ما تكون الحاجة إلى بديل الرقم، لكنها شبكة أمان مفيدة.

### أمر التفعيل (خاص بالمالك فقط)

استخدم أمر الدردشة الجماعية:

* `/activation mention`
* `/activation always`

يمكن فقط لرقم المالك (من `channels.whatsapp.allowFrom`، أو رقم E.164 الخاص بالبوت عند عدم تعيينه) تغيير ذلك. أرسل `/status` كرسالة مستقلة في المجموعة لعرض وضع التفعيل الحالي.

## كيفية الاستخدام

1. أضِف حساب WhatsApp الخاص بك (الذي يشغّل OpenClaw) إلى المجموعة.
2. قُل `@openclaw …` (أو أدرِج الرقم). يمكن فقط للمرسلين ضمن قائمة السماح تشغيله ما لم تُعيِّن `groupPolicy: "open"`.
3. سيتضمن موجه الوكيل سياق المجموعة الأخير بالإضافة إلى وسم `[from: …]` الختامي ليتمكن من مخاطبة الشخص الصحيح.
4. تنطبق توجيهات مستوى الجلسة (`/verbose on`، `/think high`، `/new` أو `/reset`، `/compact`) فقط على جلسة تلك المجموعة؛ أرسلها كرسائل مستقلة كي تُسجَّل. تبقى جلسة الرسائل الخاصة الشخصية مستقلة.

## الاختبار / التحقق

* دخان يدوي:
  * أرسل تنبيه `@openclaw` في المجموعة وتحقق من وجود رد يشير إلى اسم المُرسِل.
  * أرسل تنبيهًا ثانيًا وتحقق من تضمين كتلة السجل ثم مسحها في الدور التالي.
* تحقّق من سجلات Gateway (شغّل مع `--verbose`) لرؤية إدخالات `inbound web message` التي تُظهِر `from: <groupJid>` واللاحقة `[from: …]`.

## اعتبارات معروفة

* يتم تخطي نبضات القلب للمجموعات عمدًا لتجنّب البث المزعج.
* يستخدم كبح الصدى السلسلة المجمّعة الموحّدة؛ إذا أرسلت نصًا متطابقًا مرتين دون إشارات، فسيحصل الأول فقط على رد.
* ستظهر إدخالات مخزن الجلسات على أنها `agent:<agentId>:whatsapp:group:<jid>` في مخزن الجلسات (`~/.openclaw/agents/<agentId>/sessions/sessions.json` افتراضيًا)؛ وعدم وجود إدخال يعني فقط أن المجموعة لم تُشغِّل تنفيذًا بعد.
* تتبع مؤشرات الكتابة في المجموعات `agents.defaults.typingMode` (الافتراضي: `message` عند عدم الإشارة).
