---
read_when:
    - चैनल रूटिंग या इनबॉक्स व्यवहार बदलना
summary: प्रति चैनल रूटिंग नियम (WhatsApp, Telegram, Discord, Slack) और साझा संदर्भ
title: चैनल रूटिंग
x-i18n:
    generated_at: "2026-06-28T22:34:20Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 92b14cf02b00312121bec2f0f8ec784f36364babd6085d684e71f425dd82715e
    source_path: channels/channel-routing.md
    workflow: 16
---

# चैनल और रूटिंग

OpenClaw जवाबों को **उसी चैनल पर वापस भेजता है जहाँ से संदेश आया था**। मॉडल चैनल नहीं चुनता; रूटिंग निर्धारक होती है और होस्ट कॉन्फ़िगरेशन से नियंत्रित होती है।

## मुख्य शब्द

- **चैनल**: `telegram`, `whatsapp`, `discord`, `irc`, `googlechat`, `slack`, `signal`, `imessage`, `line`, और Plugin चैनल। `webchat` आंतरिक WebChat UI चैनल है और कॉन्फ़िगर करने योग्य आउटबाउंड चैनल नहीं है।
- **AccountId**: प्रति-चैनल खाता इंस्टेंस (जहाँ समर्थित हो)।
- वैकल्पिक चैनल डिफ़ॉल्ट खाता: `channels.<channel>.defaultAccount` चुनता है
  कि आउटबाउंड पथ में `accountId` निर्दिष्ट न होने पर कौन-सा खाता उपयोग होगा।
  - मल्टी-अकाउंट सेटअप में, जब दो या अधिक खाते कॉन्फ़िगर हों तो स्पष्ट डिफ़ॉल्ट (`defaultAccount` या `accounts.default`) सेट करें। इसके बिना, फ़ॉलबैक रूटिंग पहला सामान्यीकृत खाता ID चुन सकती है।
- **AgentId**: एक अलग-थलग वर्कस्पेस + सत्र स्टोर ("ब्रेन")।
- **SessionKey**: संदर्भ संग्रहीत करने और समवर्तीता नियंत्रित करने के लिए उपयोग की जाने वाली बकेट कुंजी।

## आउटबाउंड लक्ष्य प्रीफ़िक्स

स्पष्ट आउटबाउंड लक्ष्यों में प्रदाता प्रीफ़िक्स शामिल हो सकता है, जैसे `telegram:123` या `tg:123`। कोर उस प्रीफ़िक्स को चैनल-चयन संकेत के रूप में केवल तब मानता है जब चयनित चैनल `last` हो या अन्यथा अनसुलझा हो, और केवल तब जब लोड किया गया Plugin उस प्रीफ़िक्स का विज्ञापन करता हो। यदि कॉलर ने पहले से स्पष्ट चैनल चुना है, तो प्रदाता प्रीफ़िक्स को उसी चैनल से मेल खाना चाहिए; WhatsApp डिलीवरी को `telegram:123` जैसे क्रॉस-चैनल संयोजन Plugin-विशिष्ट लक्ष्य सामान्यीकरण से पहले विफल हो जाते हैं।

लक्ष्य-प्रकार और सेवा प्रीफ़िक्स जैसे `channel:<id>`, `user:<id>`, `room:<id>`, `thread:<id>`, `imessage:<handle>`, और `sms:<number>` चयनित चैनल के व्याकरण के भीतर ही रहते हैं। वे स्वयं प्रदाता का चयन नहीं करते।

## सत्र कुंजी आकार (उदाहरण)

प्रत्यक्ष संदेश डिफ़ॉल्ट रूप से एजेंट के **मुख्य** सत्र में सिमट जाते हैं:

- `agent:<agentId>:<mainKey>` (डिफ़ॉल्ट: `agent:main:main`)

भले ही प्रत्यक्ष-संदेश वार्तालाप इतिहास मुख्य सत्र के साथ साझा हो, सैंडबॉक्स और
टूल नीति बाहरी DM के लिए व्युत्पन्न प्रति-खाता प्रत्यक्ष-चैट रनटाइम कुंजी का उपयोग करती है
ताकि चैनल से आए संदेशों को स्थानीय मुख्य-सत्र रन जैसा न माना जाए।

समूह और चैनल प्रति चैनल अलग-थलग रहते हैं:

- समूह: `agent:<agentId>:<channel>:group:<id>`
- चैनल/रूम: `agent:<agentId>:<channel>:channel:<id>`

थ्रेड:

- Slack/Discord थ्रेड आधार कुंजी में `:thread:<threadId>` जोड़ते हैं।
- Telegram फ़ोरम टॉपिक समूह कुंजी में `:topic:<topicId>` एम्बेड करते हैं।

उदाहरण:

- `agent:main:telegram:group:-1001234567890:topic:42`
- `agent:main:discord:channel:123456:thread:987654`

## मुख्य DM रूट पिनिंग

जब `session.dmScope` `main` हो, तो प्रत्यक्ष संदेश एक मुख्य सत्र साझा कर सकते हैं।
सत्र के `lastRoute` को गैर-मालिक DM द्वारा अधिलेखित होने से रोकने के लिए,
OpenClaw `allowFrom` से पिन किए गए मालिक का अनुमान लगाता है जब ये सभी सत्य हों:

- `allowFrom` में ठीक एक गैर-वाइल्डकार्ड प्रविष्टि हो।
- प्रविष्टि को उस चैनल के लिए ठोस प्रेषक ID में सामान्यीकृत किया जा सके।
- इनबाउंड DM प्रेषक उस पिन किए गए मालिक से मेल न खाए।

उस असंगति स्थिति में, OpenClaw फिर भी इनबाउंड सत्र मेटाडेटा रिकॉर्ड करता है, लेकिन
मुख्य सत्र `lastRoute` को अपडेट करना छोड़ देता है।

## संरक्षित इनबाउंड रिकॉर्डिंग

जब किसी संरक्षित पथ को नया OpenClaw सत्र नहीं बनाना चाहिए, तो चैनल Plugin इनबाउंड सत्र रिकॉर्ड को `createIfMissing: false` के रूप में चिह्नित कर सकते हैं। उस मोड में,
OpenClaw मौजूदा सत्र के लिए मेटाडेटा और `lastRoute` अपडेट कर सकता है, लेकिन
सिर्फ़ संदेश देखे जाने के कारण रूट-ओनली सत्र प्रविष्टि नहीं बनाता।

## रूटिंग नियम (एजेंट कैसे चुना जाता है)

रूटिंग प्रत्येक इनबाउंड संदेश के लिए **एक एजेंट** चुनती है:

1. **सटीक पीयर मिलान** (`bindings` जिसमें `peer.kind` + `peer.id` हो)।
2. **पैरेंट पीयर मिलान** (थ्रेड इनहेरिटेंस)।
3. **गिल्ड + भूमिकाएँ मिलान** (Discord) `guildId` + `roles` के ज़रिए।
4. **गिल्ड मिलान** (Discord) `guildId` के ज़रिए।
5. **टीम मिलान** (Slack) `teamId` के ज़रिए।
6. **खाता मिलान** (चैनल पर `accountId`)।
7. **चैनल मिलान** (उस चैनल पर कोई भी खाता, `accountId: "*"`)।
8. **डिफ़ॉल्ट एजेंट** (`agents.list[].default`, अन्यथा सूची की पहली प्रविष्टि, फ़ॉलबैक `main`)।

जब किसी बाइंडिंग में कई मिलान फ़ील्ड (`peer`, `guildId`, `teamId`, `roles`) शामिल हों, तो उस बाइंडिंग के लागू होने के लिए **सभी दिए गए फ़ील्ड मेल खाने चाहिए**।

मेल खाया एजेंट तय करता है कि कौन-सा वर्कस्पेस और सत्र स्टोर उपयोग होगा।

## ब्रॉडकास्ट समूह (कई एजेंट चलाएँ)

ब्रॉडकास्ट समूह आपको उसी पीयर के लिए **कई एजेंट** चलाने देते हैं **जब OpenClaw सामान्यतः जवाब देता** (उदाहरण के लिए: WhatsApp समूहों में, मेंशन/एक्टिवेशन गेटिंग के बाद)।

कॉन्फ़िगरेशन:

```json5
{
  broadcast: {
    strategy: "parallel",
    "120363403215116621@g.us": ["alfred", "baerbel"],
    "+15555550123": ["support", "logger"],
  },
}
```

देखें: [ब्रॉडकास्ट समूह](/hi/channels/broadcast-groups)।

## कॉन्फ़िगरेशन अवलोकन

- `agents.list`: नामित एजेंट परिभाषाएँ (वर्कस्पेस, मॉडल, आदि)।
- `bindings`: इनबाउंड चैनलों/खातों/पीयर को एजेंटों से मैप करें।

उदाहरण:

```json5
{
  agents: {
    list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }],
  },
  bindings: [
    { match: { channel: "slack", teamId: "T123" }, agentId: "support" },
    { match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" },
  ],
}
```

## सत्र संग्रहण

सत्र स्टोर स्टेट डायरेक्टरी के अंतर्गत रहते हैं (डिफ़ॉल्ट `~/.openclaw`):

- `~/.openclaw/agents/<agentId>/sessions/sessions.json`
- JSONL ट्रांसक्रिप्ट स्टोर के साथ रहते हैं

आप `session.store` और `{agentId}` टेम्पलेटिंग के ज़रिए स्टोर पथ ओवरराइड कर सकते हैं।

Gateway और ACP सत्र खोज डिफ़ॉल्ट `agents/` रूट के अंतर्गत और टेम्पलेटेड `session.store` रूट के अंतर्गत डिस्क-समर्थित एजेंट स्टोर भी स्कैन करती है। खोजे गए स्टोर उस हल किए गए एजेंट रूट के भीतर ही रहने चाहिए और नियमित `sessions.json` फ़ाइल का उपयोग करना चाहिए। सिमलिंक और रूट से बाहर के पथ अनदेखे किए जाते हैं।

## WebChat व्यवहार

WebChat **चयनित एजेंट** से जुड़ता है और एजेंट के मुख्य सत्र पर डिफ़ॉल्ट होता है। इसके कारण, WebChat आपको उस एजेंट के लिए क्रॉस-चैनल संदर्भ एक ही जगह देखने देता है।

## जवाब संदर्भ

इनबाउंड जवाबों में शामिल हैं:

- उपलब्ध होने पर `ReplyToId`, `ReplyToBody`, और `ReplyToSender`।
- उद्धृत संदर्भ `Body` में `[Replying to ...]` ब्लॉक के रूप में जोड़ा जाता है।

यह सभी चैनलों में एक जैसा है।

## संबंधित

- [समूह](/hi/channels/groups)
- [ब्रॉडकास्ट समूह](/hi/channels/broadcast-groups)
- [पेयरिंग](/hi/channels/pairing)
