القنوات
القنوات هي تكاملات منصات المراسلة التي تربط PRX بالعالم الخارجي. كل قناة تطبّق واجهة موحدة لإرسال واستقبال الرسائل ومعالجة الوسائط وإدارة مؤشرات الكتابة وإجراء فحوصات السلامة. يمكن لـ PRX تشغيل قنوات متعددة في آن واحد من عملية خادم واحدة.
القنوات المدعومة
يدعم PRX 19 قناة مراسلة تشمل المنصات الاستهلاكية وأدوات المؤسسات والبروتوكولات مفتوحة المصدر وواجهات المطورين.
مصفوفة مقارنة القنوات
| القناة | رسالة مباشرة | مجموعة | وسائط | صوت | E2EE | المنصة | الحالة |
|---|---|---|---|---|---|---|---|
| Telegram | نعم | نعم | نعم | لا | لا | متعددة المنصات | مستقر |
| Discord | نعم | نعم | نعم | لا | لا | متعددة المنصات | مستقر |
| Slack | نعم | نعم | نعم | لا | لا | متعددة المنصات | مستقر |
| نعم | نعم | نعم | لا | نعم | Cloud API | مستقر | |
| WhatsApp Web | نعم | نعم | نعم | لا | نعم | متعدد الأجهزة | تجريبي |
| Signal | نعم | نعم | نعم | لا | نعم | متعددة المنصات | مستقر |
| iMessage | نعم | نعم | نعم | لا | نعم | macOS فقط | تجريبي |
| Matrix | نعم | نعم | نعم | لا | نعم | موزّع | مستقر |
| نعم | لا | نعم | لا | لا | IMAP/SMTP | مستقر | |
| Lark / Feishu | نعم | نعم | نعم | لا | لا | متعددة المنصات | مستقر |
| DingTalk | نعم | نعم | نعم | لا | لا | متعددة المنصات | مستقر |
| نعم | نعم | نعم | لا | لا | متعددة المنصات | تجريبي | |
| Mattermost | نعم | نعم | نعم | لا | لا | مستضاف ذاتيًا | مستقر |
| Nextcloud Talk | نعم | نعم | نعم | لا | لا | مستضاف ذاتيًا | تجريبي |
| IRC | نعم | نعم | لا | لا | لا | موزّع | مستقر |
| LINQ | نعم | نعم | نعم | لا | لا | Partner API | ألفا |
| CLI | نعم | لا | لا | لا | غ/م | الطرفية | مستقر |
| Terminal | نعم | لا | لا | لا | غ/م | الطرفية | مستقر |
| Wacli | نعم | نعم | نعم | لا | نعم | JSON-RPC | تجريبي |
التوضيح:
- مستقر -- جاهز للإنتاج، مختبر بالكامل
- تجريبي -- يعمل مع قيود معروفة
- ألفا -- تجريبي، قد تتغير الواجهة البرمجية
نمط الإعدادات المشترك
جميع القنوات تُضبط تحت قسم [channels] من ~/.config/openprx/openprx.toml. لكل قناة قسم فرعي خاص بإعدادات المنصة.
الهيكل الأساسي
[channels]
# تفعيل قناة سطر الأوامر المدمجة (الافتراضي: true)
cli = true
# مهلة معالجة الرسالة بالثواني (الافتراضي: 300)
message_timeout_secs = 300
# ── Telegram ──────────────────────────────────────────────
[channels.telegram]
bot_token = "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
allowed_users = ["alice", "bob"]
stream_mode = "edit" # "edit" | "append" | "none"
mention_only = false
# ── Discord ───────────────────────────────────────────────
[channels.discord]
bot_token = "MTIzNDU2Nzg5.XXXXXX.XXXXXXXXXX"
guild_id = "1234567890" # اختياري: تقييد لخادم واحد
allowed_users = [] # فارغ = السماح للكل
listen_to_bots = false
mention_only = false
# ── Slack ─────────────────────────────────────────────────
[channels.slack]
bot_token = "xoxb-..."
app_token = "xapp-..."
allowed_users = []
mention_only = trueأمثلة خاصة بالقنوات
Lark / Feishu:
[channels.lark]
app_id = "cli_xxxxxxxxxxxx"
app_secret = "xxxxxxxxxxxxxxxxxxxxxxxx"
allowed_users = []
use_feishu = false # true لـ Feishu (الصين)، false لـ Lark (الدولية)
receive_mode = "websocket" # "websocket" | "webhook"
mention_only = falseSignal:
[channels.signal]
phone_number = "+1234567890"
signal_cli_path = "/usr/local/bin/signal-cli"
allowed_users = ["+1987654321"]Matrix (مع التشفير من طرف لطرف):
[channels.matrix]
homeserver_url = "https://matrix.org"
username = "@prx-bot:matrix.org"
password = "secure-password"
allowed_users = ["@alice:matrix.org"]البريد الإلكتروني (IMAP/SMTP):
[channels.email]
imap_host = "imap.gmail.com"
imap_port = 993
smtp_host = "smtp.gmail.com"
smtp_port = 587
username = "[email protected]"
password = "app-specific-password"
allowed_from = ["[email protected]"]DingTalk:
[channels.dingtalk]
app_key = "dingxxxxxxxxxxxxxxxx"
app_secret = "xxxxxxxxxxxxxxxxxxxxxxxx"
robot_code = "dingxxxxxxxxx"
allowed_users = []سياسات الرسائل المباشرة
يوفر PRX تحكمًا دقيقًا في من يمكنه إرسال رسائل مباشرة إلى وكيلك. تُضبط سياسة الرسائل المباشرة لكل قناة وتحدد كيفية معالجة الرسائل المباشرة الواردة.
أنواع السياسات
| السياسة | السلوك |
|---|---|
pairing | يتطلب مصافحة اقتران قبل قبول المرسل. يجب على المستخدم إكمال تدفق تحدي-استجابة للمصادقة. ميزة مستقبلية -- حاليًا يعود إلى allowlist. |
allowlist | (الافتراضي) فقط المرسلون المدرجون في مصفوفة allowed_users الخاصة بالقناة يمكنهم التفاعل مع الوكيل. تُتجاهل رسائل المرسلين غير المدرجين بصمت. |
open | أي مستخدم يمكنه إرسال رسائل مباشرة للوكيل. استخدم بحذر في الإنتاج. |
disabled | تُتجاهل جميع الرسائل المباشرة. مفيد عندما يجب أن يرد PRX فقط في المجموعات. |
الإعدادات
تُعيَّن سياسات الرسائل المباشرة على المستوى الأعلى لإعدادات القنوات:
[channels]
dm_policy = "allowlist" # "pairing" | "allowlist" | "open" | "disabled"مصفوفة allowed_users لكل قناة هي قائمة السماح لتلك القناة:
[channels.telegram]
bot_token = "..."
allowed_users = ["alice", "bob"] # فقط هؤلاء المستخدمون يمكنهم المراسلةعندما تكون dm_policy = "open"، يُتجاهل حقل allowed_users ويُقبل جميع المرسلين.
سياسات المجموعات
مشابهة لسياسات الرسائل المباشرة، يتحكم PRX في محادثات المجموعات التي يشارك فيها الوكيل:
| السياسة | السلوك |
|---|---|
allowlist | (الافتراضي) فقط المجموعات المدرجة في قائمة سماح المجموعات الخاصة بالقناة تُراقب. |
open | يرد الوكيل في أي مجموعة يُضاف إليها. |
disabled | تُتجاهل جميع رسائل المجموعات. |
[channels]
group_policy = "allowlist"
[channels.telegram]
bot_token = "..."
# قائمة سماح المجموعات تُضبط لكل قناةوضع الإشارة فقط
معظم القنوات تدعم خيار mention_only. عند تفعيله، يرد الوكيل فقط على الرسائل التي تشير إليه صراحة (عبر @إشارة أو رد أو محفز خاص بالمنصة). هذا مفيد في دردشات المجموعات لتجنب رد الوكيل على كل رسالة.
[channels.discord]
bot_token = "..."
mention_only = true # الرد فقط عند الإشارة بـ @وضع البث
بعض القنوات تدعم بث استجابات النماذج اللغوية في الوقت الفعلي. يتحكم إعداد stream_mode في كيفية عرض مخرج البث:
| الوضع | السلوك |
|---|---|
edit | يحرر نفس الرسالة مع وصول الرموز (Telegram، Discord) |
append | يلحق نصًا جديدًا بالرسالة |
none | ينتظر الاستجابة الكاملة قبل الإرسال |
[channels.telegram]
bot_token = "..."
stream_mode = "edit"
draft_update_interval_ms = 1000 # مدى تكرار تحديث المسودة (مللي ثانية)إضافة قناة جديدة
قنوات PRX مبنية على سمة Channel. لربط قناة جديدة:
- أضف إعدادات القناة إلى ملف
openprx.toml - أعد تشغيل الخادم:
prx daemon
بدلاً من ذلك، استخدم معالج القنوات التفاعلي:
prx channel add telegramلعرض القنوات النشطة:
prx channel listلتشخيص مشاكل اتصال القنوات:
prx channel doctorبنية القنوات
تقوم كل قناة داخليًا بـ:
- الاستماع للرسائل الواردة من المنصة (عبر الاستطلاع أو webhook أو WebSocket)
- تصفية الرسائل بناءً على سياسات الرسائل المباشرة/المجموعات وقوائم السماح
- توجيه الرسائل المقبولة إلى حلقة الوكيل للمعالجة
- إرسال استجابة الوكيل عبر واجهة API الخاصة بالمنصة
- الإبلاغ عن حالة السلامة وإعادة الاتصال تلقائيًا بتراجع أسي
تعمل جميع القنوات بشكل متزامن داخل عملية الخادم، مشاركةً بيئة تشغيل الوكيل والذاكرة وأنظمة الأدوات الفرعية.
الخطوات التالية
اختر قناة للتعرف على إعدادها الخاص: