Slack
عامل Triggerfish خود را به Slack متصل کنید تا عامل شما بتواند در مکالمات فضای کاری شرکت کند. آداپتور از فریمورک Bolt با Socket Mode استفاده میکند که به معنای عدم نیاز به URL عمومی یا نقطه پایانی webhook است.
طبقهبندی پیشفرض
Slack بهصورت پیشفرض طبقهبندی PUBLIC دارد. این واقعیت را منعکس میکند که فضاهای کاری Slack اغلب شامل مهمانان خارجی، کاربران Slack Connect و کانالهای مشترک هستند. اگر فضای کاری شما کاملاً داخلی است، میتوانید این را به INTERNAL یا بالاتر افزایش دهید.
راهاندازی
مرحله ۱: ایجاد برنامه Slack
۱. به api.slack.com/apps بروید ۲. روی Create New App کلیک کنید ۳. From scratch را انتخاب کنید ۴. برنامه را نامگذاری کنید (مثلاً «Triggerfish») و فضای کاری خود را انتخاب کنید ۵. روی Create App کلیک کنید
مرحله ۲: پیکربندی دامنههای توکن ربات
به OAuth & Permissions در نوار کناری بروید و Bot Token Scopes زیر را اضافه کنید:
| دامنه | هدف |
|---|---|
chat:write | ارسال پیام |
channels:history | خواندن پیامها در کانالهای عمومی |
groups:history | خواندن پیامها در کانالهای خصوصی |
im:history | خواندن پیامهای مستقیم |
mpim:history | خواندن پیامهای مستقیم گروهی |
channels:read | لیست کانالهای عمومی |
groups:read | لیست کانالهای خصوصی |
im:read | لیست مکالمات پیام مستقیم |
users:read | جستجوی اطلاعات کاربر |
مرحله ۳: فعالسازی Socket Mode
۱. به Socket Mode در نوار کناری بروید ۲. Enable Socket Mode را فعال کنید ۳. از شما خواسته میشود یک App-Level Token ایجاد کنید — نامگذاری کنید (مثلاً «triggerfish-socket») و دامنه connections:write را اضافه کنید ۴. App Token تولیدشده را کپی کنید (با xapp- شروع میشود)
مرحله ۴: فعالسازی رویدادها
۱. به Event Subscriptions در نوار کناری بروید ۲. Enable Events را فعال کنید ۳. زیر Subscribe to bot events، اضافه کنید:
message.channelsmessage.groupsmessage.immessage.mpim
مرحله ۵: دریافت بیانات اعتبار
به سه مقدار نیاز دارید:
- Bot Token — به OAuth & Permissions بروید، روی Install to Workspace کلیک کنید، سپس Bot User OAuth Token را کپی کنید (با
xoxb-شروع میشود) - App Token — توکنی که در مرحله ۳ ایجاد کردید (با
xapp-شروع میشود) - Signing Secret — به Basic Information بروید، به App Credentials بروید و Signing Secret را کپی کنید
مرحله ۶: دریافت شناسه کاربر Slack
برای پیکربندی هویت مالک:
۱. Slack را باز کنید ۲. روی تصویر پروفایل خود در گوشه بالا-راست کلیک کنید ۳. روی Profile کلیک کنید ۴. روی منوی سه نقطه کلیک کنید و Copy member ID را انتخاب کنید
مرحله ۷: پیکربندی Triggerfish
کانال Slack را به triggerfish.yaml اضافه کنید:
yaml
channels:
slack:
# botToken، appToken، signingSecret در کلیدزنجیر سیستمعامل ذخیره شده
ownerId: "U01234ABC"رمزها (توکن ربات، توکن برنامه، رمز امضا) در حین triggerfish config add-channel slack وارد شده و در کلیدزنجیر سیستمعامل ذخیره میشوند.
| گزینه | نوع | الزامی | توضیحات |
|---|---|---|---|
ownerId | string | توصیهشده | شناسه عضو Slack شما برای تأیید مالک |
classification | string | خیر | سطح طبقهبندی (پیشفرض: PUBLIC) |
رمزها را ایمن ذخیره کنید هرگز توکنها یا رمزها را در کنترل منبع ثبت نکنید. از متغیرهای محیطی یا کلیدزنجیر سیستمعامل استفاده کنید. مدیریت رمزها را برای جزئیات ببینید. :::
مرحله ۸: دعوت ربات
قبل از اینکه ربات بتواند در کانالی پیام بخواند یا بفرستد، باید آن را دعوت کنید:
۱. کانال Slack مورد نظر را باز کنید ۲. /invite @Triggerfish تایپ کنید (یا هر نامی که برای برنامه انتخاب کردید)
ربات همچنین میتواند بدون دعوت به کانال، پیامهای مستقیم دریافت کند.
مرحله ۹: شروع Triggerfish
bash
triggerfish stop && triggerfish startدر کانالی که ربات حاضر است پیامی بفرستید یا مستقیماً به آن DM بدهید تا اتصال را تأیید کنید.
هویت مالک
Triggerfish از جریان OAuth Slack برای تأیید مالک استفاده میکند. وقتی پیامی میرسد، آداپتور شناسه کاربر Slack فرستنده را با ownerId پیکربندیشده مقایسه میکند:
- مطابقت — دستور مالک
- عدم مطابقت — ورودی خارجی با Taint
PUBLIC
عضویت فضای کاری
برای طبقهبندی گیرنده، عضویت فضای کاری Slack تعیین میکند که آیا کاربر INTERNAL یا EXTERNAL است:
- اعضای عادی فضای کاری
INTERNALهستند - کاربران خارجی Slack Connect
EXTERNALهستند - کاربران مهمان
EXTERNALهستند
محدودیتهای پیام
Slack از پیامهای تا ۴۰٬۰۰۰ کاراکتر پشتیبانی میکند. پیامهایی که از این محدودیت فراتر روند قطع میشوند. برای اکثر پاسخهای عامل، هرگز به این محدودیت نمیرسیم.
نشانگرهای تایپ
Triggerfish وقتی عامل در حال پردازش درخواست است، نشانگرهای تایپ به Slack میفرستد. Slack رویدادهای تایپ ورودی را به رباتها افشا نمیکند، بنابراین این فقط ارسال است.
چت گروهی
ربات میتواند در کانالهای گروهی شرکت کند. رفتار گروه را در triggerfish.yaml پیکربندی کنید:
yaml
groups:
default_behavior: "mentioned-only"
overrides:
- channel: slack
channel_name: "#ai-assistant"
behavior: "always"| رفتار | توضیحات |
|---|---|
mentioned-only | فقط وقتی ربات @mention شود پاسخ میدهد |
always | به تمام پیامها در کانال پاسخ میدهد |
تغییر طبقهبندی
yaml
channels:
slack:
classification: INTERNALسطوح معتبر: PUBLIC، INTERNAL، CONFIDENTIAL، RESTRICTED.
