Configuration

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

بالنسبة إلى نموذج المجموعات عبر القنوات (Discord، iMessage، Matrix، Microsoft Teams، Signal، Slack، Telegram، WhatsApp، Zalo)، راجع المجموعات. تغطي هذه الصفحة السلوك الخاص بـ WhatsApp فوق ذلك النموذج: التفعيل، قوائم السماح للمجموعات، مفاتيح الجلسات لكل مجموعة، وحقن سياق الرسائل المعلّقة.

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

السلوك

  • أوضاع التفعيل: 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 أو /trace on أو /think high (المرسلة كرسائل مستقلة) مقيّدة بتلك المجموعة؛ لا تتأثر حالة الرسائل المباشرة الشخصية. يتم تخطي Heartbeats لخيوط المجموعات.
  • حقن السياق: تُسبَق رسائل المجموعة المعلّقة فقط (الافتراضي 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 علامة @ المرئية من متن النص:

{
  channels: {
    whatsapp: {
      groups: {
        "*": { requireMention: true },
      },
    },
  },
  agents: {
    list: [
      {
        id: "main",
        groupChat: {
          historyLimit: 50,
          mentionPatterns: ["@?openclaw", "\\+?15555550123"],
        },
      },
    ],
  },
}

ملاحظات:

  • أنماط regex غير حساسة لحالة الأحرف وتستخدم ضوابط regex الآمنة نفسها المستخدمة في أسطح regex الأخرى في الإعدادات؛ يتم تجاهل الأنماط غير الصالحة والتكرار المتداخل غير الآمن.
  • لا يزال WhatsApp يرسل الإشارات القياسية عبر mentionedJids عندما ينقر شخص على جهة الاتصال، لذلك نادراً ما تكون الحاجة إلى خيار الرقم الاحتياطي قائمة، لكنه يشكّل شبكة أمان مفيدة.

أمر التفعيل (للمالك فقط)

استخدم أمر محادثة المجموعة:

  • /activation mention
  • /activation always

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

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

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

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

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

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

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

ذو صلة