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 كرسالة مستقلة في المجموعة لرؤية وضع التفعيل الحالي.
كيفية الاستخدام
- أضف حساب 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. عندما تستخدم الردود المرئية وضع أداة الرسائل فقط الافتراضي، تبدأ الكتابة فوراً افتراضياً حتى يتمكن أعضاء المجموعة من رؤية أن الوكيل يعمل حتى إذا لم يُنشر رد نهائي تلقائي. تظل إعدادات وضع الكتابة الصريحة هي صاحبة الأولوية.