الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

مجموعات الوصول هي قوائم مرسلين مسماة تعرّفها مرة واحدة وتُحيل إليها من قوائم السماح الخاصة بالقنوات باستخدام accessGroup:<name>. استخدمها عندما ينبغي السماح للأشخاص أنفسهم عبر عدة قنوات رسائل، أو عندما ينبغي تطبيق مجموعة موثوقة واحدة على كل من الرسائل المباشرة وتفويض مرسلي المجموعات. لا تمنح مجموعات الوصول صلاحية الوصول بمفردها. لا تكون المجموعة مؤثرة إلا عندما يُحيل إليها حقل قائمة سماح.

مجموعات مرسلي الرسائل الثابتة

تستخدم مجموعات المرسلين الثابتة type: "message.senders".
{
  accessGroups: {
    operators: {
      type: "message.senders",
      members: {
        "*": ["global-owner-id"],
        discord: ["discord:123456789012345678"],
        telegram: ["987654321"],
        whatsapp: ["+15551234567"],
      },
    },
  },
}
تُفهرس قوائم الأعضاء بحسب معرّف قناة الرسائل:
المفتاحالمعنى
"*"إدخالات مشتركة تُفحص لكل قناة رسائل تُحيل إلى المجموعة.
discordإدخالات تُفحص فقط لمطابقة قائمة السماح في Discord.
telegramإدخالات تُفحص فقط لمطابقة قائمة السماح في Telegram.
whatsappإدخالات تُفحص فقط لمطابقة قائمة السماح في WhatsApp.
تُطابق الإدخالات باستخدام قواعد allowFrom العادية لقناة الوجهة. لا يترجم OpenClaw معرّفات المرسلين بين القنوات. إذا كان لدى Alice معرّف Telegram ومعرّف Discord، فأدرج كلا المعرّفين تحت المفاتيح المناسبة.

الإحالة إلى المجموعات من قوائم السماح

أحِل إلى مجموعة باستخدام accessGroup:<name> في أي موضع يدعم فيه مسار قناة الرسائل قوائم سماح المرسلين. مثال على قائمة سماح الرسائل المباشرة:
{
  accessGroups: {
    operators: {
      type: "message.senders",
      members: {
        discord: ["discord:123456789012345678"],
        telegram: ["987654321"],
      },
    },
  },
  channels: {
    discord: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:operators"],
    },
    telegram: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:operators"],
    },
  },
}
مثال على قائمة سماح مرسلي المجموعات:
{
  accessGroups: {
    oncall: {
      type: "message.senders",
      members: {
        whatsapp: ["+15551234567"],
        googlechat: ["users/1234567890"],
      },
    },
  },
  channels: {
    whatsapp: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["accessGroup:oncall"],
    },
    googlechat: {
      spaces: {
        "spaces/AAA": {
          users: ["accessGroup:oncall"],
        },
      },
    },
  },
}
يمكنك مزج المجموعات والإدخالات المباشرة:
{
  channels: {
    discord: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:operators", "discord:123456789012345678"],
    },
  },
}

مسارات قنوات الرسائل المدعومة

تتوفر مجموعات الوصول في مسارات تفويض قنوات الرسائل المشتركة، بما في ذلك:
  • قوائم سماح مرسلي الرسائل المباشرة مثل channels.<channel>.allowFrom
  • قوائم سماح مرسلي المجموعات مثل channels.<channel>.groupAllowFrom
  • قوائم سماح المرسلين لكل غرفة والخاصة بالقناة التي تستخدم قواعد مطابقة المرسلين نفسها
  • مسارات تفويض الأوامر التي تعيد استخدام قوائم سماح مرسلي قنوات الرسائل
يعتمد دعم القناة على ما إذا كانت تلك القناة موصولة بمساعدات تفويض المرسلين المشتركة في OpenClaw. يشمل الدعم المضمّن الحالي Discord وGoogle Chat وNostr وWhatsApp وZalo وZalo Personal. صُممت مجموعات message.senders الثابتة لتكون مستقلة عن القناة، لذا ينبغي أن تدعمها قنوات الرسائل الجديدة باستخدام مساعدات Plugin SDK المشتركة بدلاً من توسيع قوائم السماح المخصص.

جماهير قنوات Discord

يدعم Discord أيضًا نوعًا ديناميكيًا من مجموعات الوصول:
{
  accessGroups: {
    maintainers: {
      type: "discord.channelAudience",
      guildId: "1456350064065904867",
      channelId: "1456744319972282449",
      membership: "canViewChannel",
    },
  },
  channels: {
    discord: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:maintainers"],
    },
  },
}
يعني discord.channelAudience “السماح لمرسلي رسائل Discord المباشرة الذين يمكنهم حاليًا رؤية قناة النقابة هذه.” يحل OpenClaw المرسل عبر Discord وقت التفويض ويطبق قواعد إذن ViewChannel في Discord. استخدم هذا عندما تكون قناة Discord هي مصدر الحقيقة بالفعل لفريق، مثل #maintainers أو #on-call. المتطلبات وسلوك الفشل:
  • يحتاج البوت إلى الوصول إلى النقابة والقناة.
  • يحتاج البوت إلى Server Members Intent في Discord Developer Portal.
  • تفشل مجموعة الوصول بإغلاق الصلاحية عندما يعيد Discord القيمة Missing Access، أو لا يمكن حل المرسل كعضو في النقابة، أو تنتمي القناة إلى نقابة أخرى.
أمثلة إضافية خاصة بـ Discord: التحكم في وصول Discord

ملاحظات الأمان

  • مجموعات الوصول هي أسماء بديلة لقوائم السماح، وليست أدوارًا. فهي لا تنشئ مالكين، ولا توافق على طلبات الاقتران، ولا تمنح أذونات الأدوات بمفردها.
  • لا تزال dmPolicy: "open" تتطلب "*" في قائمة سماح الرسائل المباشرة الفعالة. الإحالة إلى مجموعة وصول ليست مثل الوصول العام.
  • تفشل أسماء المجموعات المفقودة بإغلاق الصلاحية. إذا كان allowFrom يحتوي على accessGroup:operators وكان accessGroups.operators غائبًا، فلن يفوّض ذلك الإدخال أي شخص.
  • حافظ على ثبات معرّفات القنوات. فضّل المعرّفات الرقمية/معرّفات المستخدمين على أسماء العرض عندما تدعم القناة كليهما.

استكشاف الأخطاء وإصلاحها

إذا كان ينبغي أن يطابق مرسل لكنه محظور:
  1. تأكد من أن حقل قائمة السماح يحتوي على مرجع accessGroup:<name> الدقيق.
  2. تأكد من أن accessGroups.<name>.type صحيح.
  3. تأكد من أن معرّف المرسل مدرج تحت مفتاح القناة المطابق، أو تحت "*".
  4. تأكد من أن الإدخال يستخدم صيغة قائمة السماح العادية لتلك القناة.
  5. بالنسبة إلى جماهير قنوات Discord، تأكد من أن البوت يستطيع رؤية قناة النقابة وأن Server Members Intent مفعّل.
شغّل openclaw doctor بعد تعديل إعدادات التحكم في الوصول. فهو يلتقط العديد من تركيبات قوائم السماح والسياسات غير الصالحة قبل وقت التشغيل.