---
read_when:
    - إعداد التحكم في الوصول إلى الرسائل المباشرة
    - اقتران Node جديد على iOS/Android
    - مراجعة الوضع الأمني لـ OpenClaw
summary: 'نظرة عامة على الاقتران: وافق على من يمكنه مراسلتك مباشرة + أي Node يمكنه الانضمام'
title: الاقتران
x-i18n:
    generated_at: "2026-04-26T11:24:03Z"
    model: gpt-5.4
    provider: openai
    source_hash: f9d28547baacce638347ce0062e3bc4f194704eb369b4ca45f7158d5e16cee93
    source_path: channels/pairing.md
    workflow: 15
---

يشير "الاقتران" في OpenClaw إلى خطوة **موافقة المالك** الصريحة.
ويُستخدم في موضعين:

1. **اقتران الرسائل المباشرة** (من يُسمح له بالتحدث إلى الروبوت)
2. **اقتران Node** (الأجهزة/العُقد المسموح لها بالانضمام إلى شبكة Gateway)

السياق الأمني: [الأمان](/ar/gateway/security)

## 1) اقتران الرسائل المباشرة (الوصول إلى الدردشة الواردة)

عند تهيئة قناة باستخدام سياسة الرسائل المباشرة `pairing`، يحصل المرسلون غير المعروفين على رمز قصير ولا **تُعالَج** رسالتهم حتى توافق عليها.

سياسات الرسائل المباشرة الافتراضية موثقة في: [الأمان](/ar/gateway/security)

رموز الاقتران:

- 8 أحرف، بأحرف كبيرة، بدون أحرف ملتبسة (`0O1I`).
- **تنتهي صلاحيتها بعد ساعة واحدة**. لا يرسل الروبوت رسالة الاقتران إلا عند إنشاء طلب جديد (تقريبًا مرة كل ساعة لكل مُرسِل).
- تُحدَّد طلبات اقتران الرسائل المباشرة المعلقة بحد أقصى **3 لكل قناة** افتراضيًا؛ وتُتجاهل الطلبات الإضافية حتى تنتهي صلاحية أحدها أو تتم الموافقة عليه.

### الموافقة على مُرسِل

```bash
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
```

القنوات المدعومة: `bluebubbles` و`discord` و`feishu` و`googlechat` و`imessage` و`irc` و`line` و`matrix` و`mattermost` و`msteams` و`nextcloud-talk` و`nostr` و`openclaw-weixin` و`signal` و`slack` و`synology-chat` و`telegram` و`twitch` و`whatsapp` و`zalo` و`zalouser`.

### مكان تخزين الحالة

تُخزَّن ضمن `~/.openclaw/credentials/`:

- الطلبات المعلقة: `<channel>-pairing.json`
- مخزن قائمة السماح الموافق عليها:
  - الحساب الافتراضي: `<channel>-allowFrom.json`
  - الحساب غير الافتراضي: `<channel>-<accountId>-allowFrom.json`

سلوك نطاق الحساب:

- تقرأ الحسابات غير الافتراضية ملف قائمة السماح المخصص لنطاقها وتكتب إليه فقط.
- يستخدم الحساب الافتراضي ملف قائمة السماح غير المخصص لنطاق حساب والمقترن بالقناة.

تعامل مع هذه الملفات على أنها حساسة (فهي تتحكم في الوصول إلى مساعدك).

مهم: هذا المخزن مخصص لوصول الرسائل المباشرة. يختلف تفويض المجموعات عنه.
فالموافقة على رمز اقتران رسالة مباشرة لا تسمح تلقائيًا لذلك المُرسِل بتشغيل أوامر المجموعات أو التحكم في الروبوت داخل المجموعات. وللوصول إلى المجموعات، اضبط قوائم السماح الصريحة للمجموعات الخاصة بالقناة (مثل `groupAllowFrom` أو `groups` أو التجاوزات لكل مجموعة/لكل موضوع بحسب القناة).

## 2) اقتران أجهزة Node (عُقد iOS/Android/macOS/عديمة الواجهة)

تتصل العُقد بـ Gateway باعتبارها **أجهزة** ذات `role: node`. وينشئ Gateway
طلب اقتران جهاز يجب الموافقة عليه.

### الاقتران عبر Telegram (موصى به لنظام iOS)

إذا كنت تستخدم Plugin `device-pair`، فيمكنك إجراء اقتران الجهاز لأول مرة بالكامل من خلال Telegram:

1. في Telegram، أرسل إلى الروبوت: `/pair`
2. يرد الروبوت برسالتين: رسالة تعليمات ورسالة **رمز إعداد** منفصلة (لسهولة النسخ/اللصق في Telegram).
3. على هاتفك، افتح تطبيق OpenClaw على iOS ← الإعدادات ← Gateway.
4. الصق رمز الإعداد واتصل.
5. بالعودة إلى Telegram: `/pair pending` (راجع معرّفات الطلبات والدور والنطاقات)، ثم وافق.

رمز الإعداد هو حمولة JSON مرمّزة بصيغة base64 تحتوي على:

- `url`: عنوان WebSocket الخاص بـ Gateway (`ws://...` أو `wss://...`)
- `bootstrapToken`: رمز تمهيدي قصير العمر لجهاز واحد يُستخدم في مصافحة الاقتران الأولية

يحمل هذا الرمز التمهيدي ملف تعريف التمهيد المضمّن للاقتران:

- يظل رمز `node` الأساسي المُسلَّم بـ `scopes: []`
- يظل أي رمز `operator` مُسلَّم مقيّدًا بقائمة السماح التمهيدية:
  `operator.approvals` و`operator.read` و`operator.talk.secrets` و`operator.write`
- تكون عمليات التحقق من النطاقات التمهيدية مسبوقة بالدور، وليست من مجموعة نطاقات مسطحة واحدة:
  فإدخالات نطاق operator تلبّي طلبات operator فقط، ويجب على الأدوار غير operator
  أن تطلب النطاقات تحت بادئة دورها الخاص
- تظل عمليات تدوير الرموز/إبطالها لاحقًا مقيّدة بكلٍّ من عقد الدور الموافق عليه للجهاز ونطاقات operator الخاصة بجلسة المستدعي

تعامل مع رمز الإعداد كأنه كلمة مرور ما دام صالحًا.

### الموافقة على جهاز Node

```bash
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
```

إذا أعاد الجهاز نفسه المحاولة باستخدام تفاصيل مصادقة مختلفة (مثل
دور/نطاقات/مفتاح عام مختلف)، فسيُستبدل الطلب المعلق السابق ويُنشأ
`requestId` جديد.

مهم: لا يحصل الجهاز المقترن بالفعل على وصول أوسع بصمت. فإذا
أعاد الاتصال طالبًا نطاقات إضافية أو دورًا أوسع، يحتفظ OpenClaw
بالموافقة الحالية كما هي وينشئ طلب ترقية معلقًا جديدًا. استخدم
`openclaw devices list` لمقارنة الوصول الموافق عليه حاليًا مع الوصول
المطلوب حديثًا قبل الموافقة.

### الموافقة التلقائية الاختيارية لعُقد CIDR الموثوقة

يظل اقتران الأجهزة يدويًا افتراضيًا. وبالنسبة إلى شبكات Node الخاضعة للتحكم بإحكام،
يمكنك تفعيل الموافقة التلقائية لأول مرة على Node باستخدام CIDRات صريحة أو عناوين IP مطابقة تمامًا:

```json5
{
  gateway: {
    nodes: {
      pairing: {
        autoApproveCidrs: ["192.168.1.0/24"],
      },
    },
  },
}
```

ينطبق هذا فقط على طلبات اقتران `role: node` الجديدة التي لا تحتوي على
نطاقات مطلوبة. ولا يزال عملاء operator والمتصفح وControl UI وWebChat
يتطلبون موافقة يدوية. كما أن تغييرات الدور والنطاق والبيانات الوصفية
والمفتاح العام لا تزال تتطلب موافقة يدوية.

### تخزين حالة اقتران Node

تُخزَّن ضمن `~/.openclaw/devices/`:

- `pending.json` (قصير العمر؛ تنتهي صلاحية الطلبات المعلقة)
- `paired.json` (الأجهزة المقترنة + الرموز)

### ملاحظات

- تُعد واجهة API القديمة `node.pair.*` ‏(CLI: ‏`openclaw nodes pending|approve|reject|rename`) مخزن اقتران منفصلًا يملكه Gateway.
  ولا تزال عُقد WS تتطلب اقتران الجهاز.
- يُعد سجل الاقتران مصدر الحقيقة الدائم للأدوار الموافق عليها. وتظل
  رموز الأجهزة النشطة مقيّدة بمجموعة الأدوار الموافق عليها؛ ولا يؤدي إدخال رمز شارد
  خارج الأدوار الموافق عليها إلى إنشاء وصول جديد.

## مستندات ذات صلة

- نموذج الأمان + حقن المطالبات: [الأمان](/ar/gateway/security)
- التحديث بأمان (شغّل doctor): [التحديث](/ar/install/updating)
- إعدادات القنوات:
  - Telegram: [Telegram](/ar/channels/telegram)
  - WhatsApp: [WhatsApp](/ar/channels/whatsapp)
  - Signal: [Signal](/ar/channels/signal)
  - BlueBubbles ‏(iMessage): [BlueBubbles](/ar/channels/bluebubbles)
  - iMessage ‏(قديم): [iMessage](/ar/channels/imessage)
  - Discord: [Discord](/ar/channels/discord)
  - Slack: [Slack](/ar/channels/slack)
