Skip to content

نظرة عامة على القنوات المتعددة

يتصل Triggerfish بمنصات المراسلة التي تستخدمها بالفعل. يمكنك التحدث مع وكيلك أينما تتواصل -- الطرفية، Telegram، Slack، Discord، WhatsApp، أداة الويب، أو البريد الإلكتروني. كل قناة لها مستوى تصنيفها الخاص، وفحوصات هوية المالك، و تطبيق السياسات.

كيف تعمل القنوات

كل محوّل قناة يُنفّذ نفس الواجهة: connect، disconnect، send، onMessage، وstatus. يقع موجّه القنوات فوق جميع المحوّلات ويتولى إرسال الرسائل وفحوصات التصنيف ومنطق إعادة المحاولة.

موجّه القنوات: جميع محوّلات القنوات تمر عبر بوابة تصنيف مركزية إلى خادم Gateway

عندما تصل رسالة على أي قناة، يقوم الموجّه بـ:

  1. تحديد هوية المرسل (مالك أو خارجي) باستخدام فحوصات هوية على مستوى الكود -- وليس تفسير LLM
  2. وسم الرسالة بمستوى تصنيف القناة
  3. تحويلها إلى محرك السياسات للتطبيق
  4. توجيه رد الوكيل عبر نفس القناة

تصنيف القنوات

كل قناة لها مستوى تصنيف افتراضي يحدد البيانات التي يمكن أن تمر عبرها. يفرض محرك السياسات قاعدة عدم الكتابة لأسفل: البيانات على مستوى تصنيف معين لا يمكنها أبداً أن تنتقل إلى قناة ذات تصنيف أقل.

القناةالتصنيف الافتراضيكشف المالك
CLIINTERNALدائماً المالك (مستخدم الطرفية)
TelegramINTERNALمطابقة معرّف مستخدم Telegram
SignalPUBLICليس المالك أبداً (المحوّل هو هاتفك)
SlackPUBLICمعرّف مستخدم Slack عبر OAuth
DiscordPUBLICمطابقة معرّف مستخدم Discord
WhatsAppPUBLICمطابقة رقم الهاتف
WebChatPUBLICليس المالك أبداً (زوار)
EmailCONFIDENTIALمطابقة عنوان البريد الإلكتروني

قابل للتخصيص بالكامل جميع التصنيفات قابلة للتكوين في

triggerfish.yaml. يمكنك تعيين أي قناة إلى أي مستوى تصنيف بناءً على متطلباتك الأمنية.

yaml
channels:
  telegram:
    classification: CONFIDENTIAL
  slack:
    classification: INTERNAL

التصنيف الفعّال

التصنيف الفعّال لأي رسالة هو الحد الأدنى من تصنيف القناة وتصنيف المستلم:

مستوى القناةمستوى المستلمالمستوى الفعّال
INTERNALINTERNALINTERNAL
INTERNALEXTERNALPUBLIC
CONFIDENTIALINTERNALINTERNAL
CONFIDENTIALEXTERNALPUBLIC

هذا يعني أنه حتى إذا كانت القناة مصنّفة كـ CONFIDENTIAL، فإن الرسائل إلى المستلمين الخارجيين على تلك القناة تُعامل كـ PUBLIC.

حالات القنوات

تتحرك القنوات عبر حالات محددة:

  • UNTRUSTED -- القنوات الجديدة أو غير المعروفة تبدأ هنا. لا تتدفق بيانات للداخل أو الخارج. القناة معزولة تماماً حتى تقوم بتصنيفها.
  • CLASSIFIED -- القناة لها مستوى تصنيف مُعيّن وهي نشطة. تتدفق الرسائل وفقاً لقواعد السياسة.
  • BLOCKED -- القناة تم تعطيلها صراحةً. لا تتم معالجة أي رسائل.

قنوات UNTRUSTED لا يمكن لقناة UNTRUSTED استقبال أي بيانات

من الوكيل ولا يمكنها إرسال بيانات إلى سياق الوكيل. هذا حد أمني صارم، وليس اقتراحاً. :::

موجّه القنوات

يدير موجّه القنوات جميع المحوّلات المسجلة ويوفر:

  • تسجيل المحوّلات -- تسجيل وإلغاء تسجيل محوّلات القنوات حسب معرّف القناة
  • إرسال الرسائل -- توجيه الرسائل الصادرة إلى المحوّل الصحيح
  • إعادة المحاولة مع تراجع أسي -- تتم إعادة محاولة الإرسالات الفاشلة حتى 3 مرات مع تأخيرات متزايدة (1 ثانية، 2 ثانية، 4 ثوانٍ)
  • عمليات جماعية -- connectAll() وdisconnectAll() لإدارة دورة الحياة
yaml
# سلوك إعادة المحاولة للموجّه قابل للتكوين
router:
  maxRetries: 3
  baseDelay: 1000 # بالمللي ثانية

Ripple: الكتابة والحضور

يُرحّل Triggerfish مؤشرات الكتابة وحالة الحضور عبر القنوات التي تدعمها. يُسمى هذا Ripple.

القناةمؤشرات الكتابةإشعارات القراءة
Telegramإرسال واستقبالنعم
Signalإرسال واستقبال--
Slackإرسال فقط--
Discordإرسال فقط--
WhatsAppإرسال واستقبالنعم
WebChatإرسال واستقبالنعم

حالات حضور الوكيل: idle، online، away، busy، processing، speaking، error.

تقسيم الرسائل

تفرض المنصات حدوداً على طول الرسائل. يقوم Triggerfish تلقائياً بتقسيم الردود الطويلة لتتناسب مع قيود كل منصة، مع الفصل عند أسطر جديدة أو مسافات لسهولة القراءة:

القناةالحد الأقصى لطول الرسالة
Telegram4,096 حرف
Signal4,000 حرف
Discord2,000 حرف
Slack40,000 حرف
WhatsApp4,096 حرف
WebChatغير محدود

الخطوات التالية

قم بإعداد القنوات التي تستخدمها:

  • CLI -- متاح دائماً، لا يحتاج إعداد
  • Telegram -- إنشاء بوت عبر @BotFather
  • Signal -- الربط عبر signal-cli daemon
  • Slack -- إنشاء تطبيق Slack مع Socket Mode
  • Discord -- إنشاء تطبيق بوت Discord
  • WhatsApp -- الاتصال عبر WhatsApp Business Cloud API
  • WebChat -- تضمين أداة دردشة في موقعك
  • Email -- الاتصال عبر IMAP و SMTP relay