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)]حتى يعرف OpenClaw من يتحدث. - الرسائل المؤقتة/ذات العرض الواحد: نفك تغليفها قبل استخراج النص/الإشارات، لذلك تظل الإشارات داخلها قادرة على التشغيل.
- موجّه نظام المجموعة: في أول دور من جلسة مجموعة (وكلما غيّر
/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 كرسالة مستقلة في المجموعة لمعرفة وضع التفعيل الحالي.
كيفية الاستخدام
- أضف حساب WhatsApp الخاص بك (الحساب الذي يشغّل OpenClaw) إلى المجموعة.
- قل
@openclaw …(أو أدرج الرقم). يمكن فقط للمرسلين المدرجين في قائمة السماح تشغيله ما لم تضبطgroupPolicy: "open". - سيتضمن موجّه الوكيل سياق المجموعة الحديث بالإضافة إلى علامة
[from: …]اللاحقة حتى يستطيع مخاطبة الشخص الصحيح. - تنطبق التوجيهات على مستوى الجلسة (
/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. عندما يتم الاشتراك في الردود المرئية ضمن وضع أداة الرسائل فقط، تبدأ الكتابة فوراً افتراضياً حتى يستطيع أعضاء المجموعة رؤية أن الوكيل يعمل حتى إذا لم يُنشر رد نهائي تلقائي. يظل تكوين وضع الكتابة الصريح هو صاحب الأولوية.