---
read_when:
    - تغيير توجيه القنوات أو سلوك البريد الوارد
summary: قواعد التوجيه لكل قناة (WhatsApp وTelegram وDiscord وSlack) والسياق المشترك
title: توجيه القنوات
x-i18n:
    generated_at: "2026-04-24T07:29:46Z"
    model: gpt-5.4
    provider: openai
    source_hash: cb87a774bb094af15524702c2c4fd17cf0b41fe27ac0943d1008523a43d5553b
    source_path: channels/channel-routing.md
    workflow: 15
---

# القنوات والتوجيه

يوجّه OpenClaw الردود **مرة أخرى إلى القناة التي جاءت منها الرسالة**. لا يختار
النموذج قناة؛ فالتوجيه حتمي وتتحكم فيه إعدادات المضيف.

## المصطلحات الأساسية

- **القناة**: `telegram` و`whatsapp` و`discord` و`irc` و`googlechat` و`slack` و`signal` و`imessage` و`line`، بالإضافة إلى قنوات Plugin. تُعد `webchat` قناة واجهة WebChat الداخلية وليست قناة صادرة قابلة للإعداد.
- **AccountId**: مثيل حساب خاص بكل قناة (عند الدعم).
- الحساب الافتراضي الاختياري للقناة: يحدد `channels.<channel>.defaultAccount`
  أي حساب يُستخدم عندما لا يحدد مسار صادر `accountId`.
  - في إعدادات الحسابات المتعددة، اضبط قيمة افتراضية صريحة (`defaultAccount` أو `accounts.default`) عند إعداد حسابين أو أكثر. من دون ذلك، قد يختار التوجيه الاحتياطي أول معرّف حساب مُطبَّع.
- **AgentId**: مساحة عمل + مخزن جلسات معزولان ("العقل").
- **SessionKey**: مفتاح الحاوية المستخدم لتخزين السياق والتحكم في التزامن.

## أشكال مفاتيح الجلسات (أمثلة)

تُدمج الرسائل المباشرة في جلسة الوكيل **الرئيسية** افتراضيًا:

- `agent:<agentId>:<mainKey>` (الافتراضي: `agent:main:main`)

حتى عندما يكون سجل محادثة الرسائل المباشرة مشتركًا مع الجلسة الرئيسية، فإن
سياسة sandbox والأدوات تستخدم مفتاح وقت تشغيل مشتقًا لكل حساب ودردشة مباشرة
للرسائل المباشرة الخارجية حتى لا تُعامل الرسائل الواردة من القنوات مثل تشغيلات
الجلسة الرئيسية المحلية.

تظل المجموعات والقنوات معزولة لكل قناة:

- المجموعات: `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`

## تثبيت مسار الرسائل المباشرة الرئيسي

عندما تكون `session.dmScope` مساوية لـ `main`، قد تشارك الرسائل المباشرة جلسة
رئيسية واحدة. ولمنع استبدال `lastRoute` الخاص بالجلسة بواسطة رسائل مباشرة من
غير المالك، يستنتج OpenClaw مالكًا مثبّتًا من `allowFrom` عندما تكون جميع الشروط
التالية صحيحة:

- يحتوي `allowFrom` على إدخال واحد فقط ليس بدلًا عامًا.
- يمكن تطبيع الإدخال إلى معرّف مُرسِل فعلي لتلك القناة.
- لا يطابق مرسل الرسالة المباشرة الواردة ذلك المالك المثبّت.

في حالة عدم التطابق هذه، يظل 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"],
  },
}
```

راجع: [مجموعات البث](/ar/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 ...]`.

هذا متسق عبر القنوات.

## ذو صلة

- [المجموعات](/ar/channels/groups)
- [مجموعات البث](/ar/channels/broadcast-groups)
- [الاقتران](/ar/channels/pairing)
