मुख्य सामग्री पर जाएं

समूह

OpenClaw सभी प्लेटफ़ॉर्म्स पर समूह चैट को एक समान तरीके से संभालता है: WhatsApp, Telegram, Discord, Slack, Signal, iMessage, Microsoft Teams।

शुरुआती परिचय (2 मिनट)

OpenClaw आपके अपने मैसेजिंग अकाउंट्स पर ही “रहता” है। कोई अलग WhatsApp बॉट यूज़र नहीं है। यदि आप किसी समूह में हैं, तो OpenClaw उस समूह को देख सकता है और वहीं उत्तर दे सकता है। डिफ़ॉल्ट व्यवहार:
  • समूह प्रतिबंधित होते हैं (groupPolicy: "allowlist")।
  • उत्तर देने के लिए मेंशन आवश्यक है, जब तक कि आप मेंशन गेटिंग को स्पष्ट रूप से अक्षम न करें।
अनुवाद: allowlist किए गए प्रेषक OpenClaw को मेंशन करके सक्रिय कर सकते हैं।
TL;DR
  • DM पहुँच *.allowFrom द्वारा नियंत्रित होती है।
  • समूह पहुँच *.groupPolicy + allowlists (*.groups, *.groupAllowFrom) द्वारा नियंत्रित होती है।
  • उत्तर ट्रिगर करना मेंशन गेटिंग (requireMention, /activation) द्वारा नियंत्रित होता है।
त्वरित प्रवाह (किसी समूह संदेश के साथ क्या होता है):
groupPolicy? disabled -> drop
groupPolicy? allowlist -> group allowed? no -> drop
requireMention? yes -> mentioned? no -> store for context only
otherwise -> reply
Group message flow यदि आप चाहते हैं…
लक्ष्यक्या सेट करें
सभी समूहों को अनुमति दें, लेकिन केवल @mentions पर उत्तर देंgroups: { "*": { requireMention: true } }
सभी समूह उत्तर अक्षम करेंgroupPolicy: "disabled"
केवल विशिष्ट समूहgroups: { "<group-id>": { ... } } (कोई "*" कुंजी नहीं)
समूहों में केवल आप ही ट्रिगर कर सकेंgroupPolicy: "allowlist", groupAllowFrom: ["+1555..."]

सत्र कुंजियाँ

  • समूह सत्र agent:<agentId>:<channel>:group:<id> सत्र कुंजियों का उपयोग करते हैं (rooms/channels agent:<agentId>:<channel>:channel:<id> का उपयोग करते हैं)।
  • Telegram फ़ोरम विषय समूह आईडी में :topic:<threadId> जोड़ते हैं ताकि प्रत्येक विषय का अपना सत्र हो।
  • डायरेक्ट चैट मुख्य सत्र का उपयोग करती हैं (या यदि कॉन्फ़िगर किया गया हो तो प्रति-प्रेषक)।
  • समूह सत्रों के लिए हार्टबीट्स छोड़े जाते हैं।

पैटर्न: व्यक्तिगत DMs + सार्वजनिक समूह (एकल एजेंट)

हाँ — यदि आपका “व्यक्तिगत” ट्रैफ़िक DMs है और आपका “सार्वजनिक” ट्रैफ़िक समूह है, तो यह अच्छी तरह काम करता है। क्यों: सिंगल-एजेंट मोड में, DMs आम तौर पर main सेशन की (agent:main:main) में जाते हैं, जबकि समूह हमेशा non-main सेशन कीज़ (agent:main:<channel>:group:<id>) का उपयोग करते हैं। यदि आप mode: "non-main" के साथ सैंडबॉक्सिंग सक्षम करते हैं, तो वे समूह सेशन Docker में चलते हैं जबकि आपका मुख्य DM सेशन होस्ट पर ही रहता है। इससे आपको एक एजेंट “मस्तिष्क” (साझा कार्यक्षेत्र + मेमोरी) मिलता है, लेकिन दो निष्पादन स्थितियाँ:
  • DMs: पूर्ण टूल्स (होस्ट)
  • समूह: sandbox + प्रतिबंधित टूल्स (Docker)
यदि आपको वास्तव में अलग वर्कस्पेस/पर्सोना चाहिए (“personal” और “public” कभी मिश्रित नहीं होने चाहिए), तो दूसरा एजेंट + बाइंडिंग्स उपयोग करें। Multi-Agent Routing देखें।
उदाहरण (DMs होस्ट पर, समूह sandboxed + केवल मैसेजिंग टूल्स):
{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main", // groups/channels are non-main -> sandboxed
        scope: "session", // strongest isolation (one container per group/channel)
        workspaceAccess: "none",
      },
    },
  },
  tools: {
    sandbox: {
      tools: {
        // If allow is non-empty, everything else is blocked (deny still wins).
        allow: ["group:messaging", "group:sessions"],
        deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"],
      },
    },
  },
}
“समूह केवल फ़ोल्डर X देख सकते हैं” चाहते हैं, बजाय “कोई होस्ट एक्सेस नहीं”? workspaceAccess: "none" रखें और केवल allowlist किए गए पाथ्स को सैंडबॉक्स में माउंट करें:
{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main",
        scope: "session",
        workspaceAccess: "none",
        docker: {
          binds: [
            // hostPath:containerPath:mode
            "~/FriendsShared:/data:ro",
          ],
        },
      },
    },
  },
}
संबंधित:

डिस्प्ले लेबल

  • UI लेबल उपलब्ध होने पर displayName का उपयोग करते हैं, और <channel>:<token> के रूप में फ़ॉर्मैट होते हैं।
  • #room rooms/channels के लिए आरक्षित है; समूह चैट g-<slug> का उपयोग करती हैं (लोअरकेस, स्पेस -> -, #@+._- बनाए रखें)।

समूह नीति

प्रति चैनल यह नियंत्रित करें कि समूह/रूम संदेश कैसे संभाले जाएँ:
{
  channels: {
    whatsapp: {
      groupPolicy: "disabled", // "open" | "disabled" | "allowlist"
      groupAllowFrom: ["+15551234567"],
    },
    telegram: {
      groupPolicy: "disabled",
      groupAllowFrom: ["123456789", "@username"],
    },
    signal: {
      groupPolicy: "disabled",
      groupAllowFrom: ["+15551234567"],
    },
    imessage: {
      groupPolicy: "disabled",
      groupAllowFrom: ["chat_id:123"],
    },
    msteams: {
      groupPolicy: "disabled",
      groupAllowFrom: ["[email protected]"],
    },
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        GUILD_ID: { channels: { help: { allow: true } } },
      },
    },
    slack: {
      groupPolicy: "allowlist",
      channels: { "#general": { allow: true } },
    },
    matrix: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["@owner:example.org"],
      groups: {
        "!roomId:example.org": { allow: true },
        "#alias:example.org": { allow: true },
      },
    },
  },
}
नीतिव्यवहार
"open"समूह allowlists को बायपास करते हैं; मेंशन गेटिंग फिर भी लागू रहती है।
"disabled"सभी समूह संदेश पूरी तरह ब्लॉक करें।
"allowlist"केवल वे समूह/रूम अनुमति दें जो कॉन्फ़िगर की गई allowlist से मेल खाते हों।
नोट्स:
  • groupPolicy मेंशन-गेटिंग से अलग है (जिसके लिए @mentions आवश्यक हैं)।
  • WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: groupAllowFrom का उपयोग करें (फ़ॉलबैक: स्पष्ट allowFrom)।
  • Discord: allowlist channels.discord.guilds.<id> का उपयोग करती है.channels`.
  • Slack: allowlist channels.slack.channels का उपयोग करती है।
  • Matrix: allowlist channels.matrix.groups का उपयोग करती है (रूम IDs, एलियासेस, या नाम)। प्रेषकों को सीमित करने के लिए channels.matrix.groupAllowFrom का उपयोग करें; प्रति-रूम users allowlists भी समर्थित हैं।
  • Group DMs अलग से नियंत्रित होते हैं (channels.discord.dm.*, channels.slack.dm.*)।
  • Telegram allowlist उपयोगकर्ता IDs ("123456789", "telegram:123456789", "tg:123456789") या उपयोगकर्ता नाम ("@alice" या "alice") से मेल खा सकती है; प्रीफ़िक्स केस-इनसेंसिटिव होते हैं।
  • डिफ़ॉल्ट groupPolicy: "allowlist" है; यदि आपकी समूह allowlist खाली है, तो समूह संदेश ब्लॉक हो जाते हैं।
त्वरित मानसिक मॉडल (समूह संदेशों के लिए मूल्यांकन क्रम):
  1. groupPolicy (open/disabled/allowlist)
  2. समूह allowlists (*.groups, *.groupAllowFrom, चैनल-विशिष्ट allowlist)
  3. मेंशन गेटिंग (requireMention, /activation)

मेंशन गेटिंग (डिफ़ॉल्ट)

समूह संदेशों के लिए एक mention आवश्यक है जब तक कि प्रति समूह ओवरराइड न किया जाए। डिफ़ॉल्ट्स प्रत्येक सबसिस्टम के अंतर्गत *.groups."*" में रहते हैं। बॉट संदेश का उत्तर देना एक अप्रत्यक्ष mention माना जाता है (जब चैनल reply मेटाडेटा का समर्थन करता है)। यह Telegram, WhatsApp, Slack, Discord, और Microsoft Teams पर लागू होता है।
{
  channels: {
    whatsapp: {
      groups: {
        "*": { requireMention: true },
        "[email protected]": { requireMention: false },
      },
    },
    telegram: {
      groups: {
        "*": { requireMention: true },
        "123456789": { requireMention: false },
      },
    },
    imessage: {
      groups: {
        "*": { requireMention: true },
        "123": { requireMention: false },
      },
    },
  },
  agents: {
    list: [
      {
        id: "main",
        groupChat: {
          mentionPatterns: ["@openclaw", "openclaw", "\\+15555550123"],
          historyLimit: 50,
        },
      },
    ],
  },
}
नोट्स:
  • mentionPatterns केस-इनसेंसिटिव regexes हैं।
  • जिन प्लेटफ़ॉर्म्स पर स्पष्ट mentions उपलब्ध हैं, वे हमेशा पास होते हैं; पैटर्न केवल फ़ॉलबैक हैं।
  • प्रति-एजेंट ओवरराइड: agents.list[].groupChat.mentionPatterns (जब कई एजेंट एक समूह साझा करते हों, तब उपयोगी)।
  • मेंशन गेटिंग केवल तब लागू होती है जब मेंशन डिटेक्शन संभव हो (नेटिव mentions या mentionPatterns कॉन्फ़िगर हों)।
  • Discord के डिफ़ॉल्ट्स channels.discord.guilds."*" में रहते हैं (प्रति guild/channel ओवरराइड योग्य)।
  • समूह इतिहास कॉन्टेक्स्ट सभी चैनलों में समान रूप से रैप किया जाता है और pending-only होता है (mention gating के कारण छोड़े गए संदेश); ग्लोबल डिफ़ॉल्ट के लिए messages.groupChat.historyLimit और ओवरराइड्स के लिए channels.<channel> .historyLimit (या channels.<channel> .accounts.*.historyLimit) का उपयोग करें।0 सेट करने पर अक्षम हो जाता है।toolsBySender: समूह के भीतर प्रति-प्रेषक ओवरराइड्स (कुंजियाँ चैनल के अनुसार sender IDs/usernames/emails/phone numbers होती हैं)। वाइल्डकार्ड के रूप में "*" का उपयोग करें।

समूह/चैनल टूल प्रतिबंध (वैकल्पिक)

कुछ चैनल कॉन्फ़िग्स किसी विशिष्ट समूह/रूम/चैनल के अंदर कौन से टूल उपलब्ध हों, यह सीमित करने का समर्थन करते हैं।
  • tools: पूरे समूह के लिए टूल्स को allow/deny करें।
  • जब channels.whatsapp.groups, channels.telegram.groups, या channels.imessage.groups कॉन्फ़िगर किया जाता है, तो कुंजियाँ एक समूह allowlist के रूप में कार्य करती हैं। Use "*" as a wildcard.
समाधान क्रम (सबसे विशिष्ट को प्राथमिकता):
  1. समूह/चैनल toolsBySender मैच
  2. समूह/चैनल tools
  3. डिफ़ॉल्ट ("*") toolsBySender मैच
  4. डिफ़ॉल्ट ("*") tools
उदाहरण (Telegram):
{
  channels: {
    telegram: {
      groups: {
        "*": { tools: { deny: ["exec"] } },
        "-1001234567890": {
          tools: { deny: ["exec", "read", "write"] },
          toolsBySender: {
            "123456789": { alsoAllow: ["exec"] },
          },
        },
      },
    },
  },
}
नोट्स:
  • समूह/चैनल टूल प्रतिबंध वैश्विक/एजेंट टूल नीति के अतिरिक्त लागू होते हैं (deny को प्राथमिकता मिलती है)।
  • कुछ चैनल rooms/channels के लिए अलग नेस्टिंग का उपयोग करते हैं (जैसे, Discord guilds.*.channels.*, Slack channels.*, MS Teams teams.*.channels.*)।

समूह allowlists

When channels.whatsapp.groups, channels.telegram.groups, or channels.imessage.groups is configured, the keys act as a group allowlist. 1. डिफ़ॉल्ट मेंशन व्यवहार सेट करते हुए सभी समूहों को अनुमति देने के लिए "*" का उपयोग करें। सामान्य इरादे (कॉपी/पेस्ट):
  1. सभी समूह उत्तर अक्षम करें
{
  channels: { whatsapp: { groupPolicy: "disabled" } },
}
  1. केवल विशिष्ट समूहों को अनुमति दें (WhatsApp)
{
  channels: {
    whatsapp: {
      groups: {
        "[email protected]": { requireMention: true },
        "[email protected]": { requireMention: false },
      },
    },
  },
}
  1. सभी समूहों को अनुमति दें लेकिन मेंशन आवश्यक करें (स्पष्ट)
{
  channels: {
    whatsapp: {
      groups: { "*": { requireMention: true } },
    },
  },
}
  1. समूहों में केवल मालिक ही ट्रिगर कर सके (WhatsApp)
{
  channels: {
    whatsapp: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["+15551234567"],
      groups: { "*": { requireMention: true } },
    },
  },
}

सक्रियण (केवल मालिक)

समूह मालिक प्रति-समूह सक्रियण टॉगल कर सकते हैं:
  • /activation mention
  • /activation always
  1. Owner का निर्धारण channels.whatsapp.allowFrom द्वारा किया जाता है (या यदि unset हो तो बॉट का स्वयं का E.164)। 3. कमांड को एक standalone संदेश के रूप में भेजें। 4. अन्य surfaces वर्तमान में /activation को अनदेखा करते हैं।

संदर्भ फ़ील्ड्स

समूह इनबाउंड पेलोड्स सेट करते हैं:
  • ChatType=group
  • GroupSubject (यदि ज्ञात हो)
  • GroupMembers (यदि ज्ञात हो)
  • WasMentioned (मेंशन गेटिंग परिणाम)
  • Telegram फ़ोरम विषयों में अतिरिक्त रूप से MessageThreadId और IsForum शामिल होते हैं।
  1. एजेंट सिस्टम प्रॉम्प्ट में नए समूह सत्र के पहले टर्न पर एक समूह परिचय शामिल होता है। 6. यह मॉडल को इंसान की तरह जवाब देने, Markdown तालिकाओं से बचने, और literal \n अनुक्रम टाइप करने से बचने की याद दिलाता है।

iMessage विशेषताएँ

  • रूटिंग या allowlisting करते समय chat_id:<id> को प्राथमिकता दें।
  • चैट्स सूचीबद्ध करें: imsg chats --limit 20
  • समूह उत्तर हमेशा उसी chat_id पर वापस जाते हैं।

WhatsApp विशेषताएँ

WhatsApp-विशिष्ट व्यवहार (इतिहास इंजेक्शन, मेंशन हैंडलिंग विवरण) के लिए Group messages देखें।