نمای کلی چندکاناله
Triggerfish به پلتفرمهای پیامرسانی موجود شما متصل میشود. با عامل خود هر جا که قبلاً ارتباط برقرار میکنید صحبت کنید — ترمینال، Telegram، Slack، Discord، واتساپ، ابزارک وب یا ایمیل. هر کانال سطح طبقهبندی، بررسیهای هویت مالک و اجرای سیاست مخصوص خود را دارد.
نحوه عملکرد کانالها
هر آداپتور کانال یک رابط مشترک پیادهسازی میکند: connect، disconnect، send، onMessage و status. مسیریاب کانال بالای تمام آداپتورها قرار دارد و ارسال پیام، بررسیهای طبقهبندی و منطق تلاش مجدد را مدیریت میکند.
وقتی پیامی از هر کانالی میرسد، مسیریاب:
۱. فرستنده را (مالک یا خارجی) با استفاده از بررسیهای هویت در سطح کد شناسایی میکند — نه تفسیر LLM ۲. پیام را با سطح طبقهبندی کانال علامتگذاری میکند ۳. آن را برای اجرا به موتور سیاست ارسال میکند ۴. پاسخ عامل را از همان کانال بازمیگرداند
طبقهبندی کانال
هر کانال یک سطح طبقهبندی پیشفرض دارد که تعیین میکند چه دادههایی میتوانند از آن عبور کنند. موتور سیاست قانون عدم نوشتن به پایین را اجرا میکند: داده در یک سطح طبقهبندی مشخص هرگز نمیتواند به کانالی با طبقهبندی پایینتر جریان یابد.
| کانال | طبقهبندی پیشفرض | تشخیص مالک |
|---|---|---|
| CLI | INTERNAL | همیشه مالک (کاربر ترمینال) |
| Telegram | INTERNAL | تطابق شناسه کاربر Telegram |
| Signal | PUBLIC | هرگز مالک نیست (آداپتور شماره تلفن شماست) |
| Slack | PUBLIC | شناسه کاربر Slack از طریق OAuth |
| Discord | PUBLIC | تطابق شناسه کاربر Discord |
PUBLIC | تطابق شماره تلفن | |
| WebChat | PUBLIC | هرگز مالک نیست (بازدیدکنندگان) |
CONFIDENTIAL | تطابق آدرس ایمیل |
کاملاً قابل پیکربندی تمام طبقهبندیها در triggerfish.yaml قابل پیکربندی هستند. میتوانید هر کانال را بر اساس نیازهای امنیتی خود به هر سطح طبقهبندی تنظیم کنید.
yaml
channels:
telegram:
classification: CONFIDENTIAL
slack:
classification: INTERNALطبقهبندی مؤثر
طبقهبندی مؤثر برای هر پیام حداقل طبقهبندی کانال و طبقهبندی گیرنده است:
| سطح کانال | سطح گیرنده | سطح مؤثر |
|---|---|---|
| INTERNAL | INTERNAL | INTERNAL |
| INTERNAL | EXTERNAL | PUBLIC |
| CONFIDENTIAL | INTERNAL | INTERNAL |
| CONFIDENTIAL | EXTERNAL | PUBLIC |
این بدان معناست که حتی اگر کانالی CONFIDENTIAL طبقهبندی شده باشد، پیامها به گیرندگان خارجی در آن کانال بهعنوان PUBLIC برخورد میشوند.
وضعیتهای کانال
کانالها از وضعیتهای تعریفشده عبور میکنند:
- UNTRUSTED — کانالهای جدید یا ناشناخته اینجا شروع میکنند. هیچ دادهای وارد یا خارج نمیشود. کانال تا زمان طبقهبندی کاملاً جداسازی شده است.
- CLASSIFIED — کانال سطح طبقهبندی تعیینشده دارد و فعال است. پیامها طبق قوانین سیاست جریان مییابند.
- BLOCKED — کانال صراحتاً غیرفعال شده. هیچ پیامی پردازش نمیشود.
کانالهای UNTRUSTED کانال UNTRUSTED نمیتواند هیچ دادهای از عامل دریافت کند و نمیتواند دادهای به زمینه عامل بفرستد. این یک مرز امنیتی سخت است، نه یک پیشنهاد. :::
مسیریاب کانال
مسیریاب کانال تمام آداپتورهای ثبتشده را مدیریت و ارائه میدهد:
- ثبت آداپتور — ثبت و لغو ثبت آداپتورهای کانال با شناسه کانال
- ارسال پیام — مسیریابی پیامهای خروجی به آداپتور صحیح
- تلاش مجدد با تأخیر نمایی — ارسالهای ناموفق تا ۳ بار با تأخیرهای افزایشی (۱ ثانیه، ۲ ثانیه، ۴ ثانیه) مجدداً تلاش میشوند
- عملیات دستهای —
connectAll()وdisconnectAll()برای مدیریت چرخه عمر
yaml
# رفتار تلاش مجدد مسیریاب قابل پیکربندی است
router:
maxRetries: 3
baseDelay: 1000 # میلیثانیهRipple: تایپ و حضور
Triggerfish نشانگرهای تایپ و وضعیت حضور را بین کانالهایی که پشتیبانی میکنند رله میکند. این Ripple نامیده میشود.
| کانال | نشانگرهای تایپ | رسید خواندهشده |
|---|---|---|
| Telegram | ارسال و دریافت | بله |
| Signal | ارسال و دریافت | — |
| Slack | فقط ارسال | — |
| Discord | فقط ارسال | — |
| ارسال و دریافت | بله | |
| WebChat | ارسال و دریافت | بله |
وضعیتهای حضور عامل: idle، online، away، busy، processing، speaking، error.
تقسیمبندی پیام
پلتفرمها محدودیت طول پیام دارند. Triggerfish بهصورت خودکار پاسخهای بلند را برای جا شدن در محدودیتهای هر پلتفرم تقسیم میکند و برای خوانایی روی خطوط جدید یا فاصلهها میشکند:
| کانال | حداکثر طول پیام |
|---|---|
| Telegram | ۴٬۰۹۶ کاراکتر |
| Signal | ۴٬۰۰۰ کاراکتر |
| Discord | ۲٬۰۰۰ کاراکتر |
| Slack | ۴۰٬۰۰۰ کاراکتر |
| ۴٬۰۹۶ کاراکتر | |
| WebChat | نامحدود |
گامهای بعدی
کانالهایی که استفاده میکنید را راهاندازی کنید:
- CLI — همیشه در دسترس، نیازی به راهاندازی ندارد
- Telegram — ایجاد ربات از طریق @BotFather
- Signal — اتصال از طریق daemon signal-cli
- Slack — ایجاد برنامه Slack با Socket Mode
- Discord — ایجاد برنامه ربات Discord
- WhatsApp — اتصال از طریق WhatsApp Business Cloud API
- WebChat — جاسازی ابزارک چت در سایت شما
- Email — اتصال از طریق IMAP و رله SMTP
