---
read_when:
    - تغيير توجيه القنوات أو سلوك صندوق الوارد
summary: قواعد التوجيه لكل قناة (WhatsApp وTelegram وDiscord وSlack) والسياق المشترك
title: توجيه القنوات
x-i18n:
    generated_at: "2026-05-02T07:17:40Z"
    model: gpt-5.5
    provider: openai
    source_hash: 9a752696e70d2c13d3ab1c9cedd41442e0d8aee6d78b3a069b53dd2b262174da
    source_path: channels/channel-routing.md
    workflow: 16
---

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

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

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

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

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

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

- المجموعات: `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` في الجلسة الرئيسية.

## تسجيل الوارد المحمي

يمكن لــ Plugins القنوات وسم سجل جلسة واردة بأنه `createIfMissing: false`
عندما يجب ألا ينشئ مسار محمي جلسة OpenClaw جديدة. في هذا الوضع،
قد يحدّث 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)
