این ربات شل را ایجاد کنید و حال و هوای دوستانه تری به کانال خود بدهید.
استقبال از کاربران جدید در کانال خود باعث می شود آنها احساس کنند که در خانه خود هستند، اما پیگیری هر کاربری که به کانال خود می پیوندد می تواند کار خسته کننده ای باشد. اینجاست که یک ربات خوش آمد گویی Slack وارد می شود. ربات یک پیام خوشامدگویی شخصی به هر کاربر کانال جدید ارسال می کند. همیشه آنلاین است، بنابراین هیچ پیام خوش آمدگویی دیرهنگام وجود نخواهد داشت.
شما یاد خواهید گرفت که چگونه اعتبار ربات خود را تنظیم کنید، به رویدادها در Slack گوش دهید و برای کاربران پیام ارسال کنید.
ایجاد یک ربات Slack و دریافت توکن API آن
یک حساب Slack ایجاد کنید یا به حساب موجود خود وارد شوید. سپس یک فضای کاری Slack جدید ایجاد کنید تا ربات خود را قبل از نصب در فضای کاری فعال خود آزمایش کنید.
وارد فضای کاری جدید خود شوید. Slack به طور خودکار یک کانال تصادفی و کلی برای شما ایجاد می کند.
به بخش App در پایین سمت چپ فضای کاری توجه کنید. این جایی است که ربات ما هنگام ایجاد آن ظاهر می شود. به وب سایت Slack API بروید.
روی Create an app کلیک کنید. در پنجره ظاهر شده برنامه را از ابتدا ایجاد کنید.
نام برنامه خود را بگذارید و فضای کاری را که می خواهید آن را در آن توسعه دهید انتخاب کنید.
سپس بر روی دکمه Create App کلیک کنید. کلیک کردن، شما را به صفحه ای هدایت می کند که حاوی اطلاعات اولیه برنامه شما است. به راز امضای زیر اعتبار برنامه توجه داشته باشید. ربات شما از رمز امضا استفاده می کند تا تأیید کند که رویدادی از Slack آمده است و در حین انتقال دستکاری نشده است.
به ویژگی OAuth & Permissions بروید.
در بخش OAuth & Permissions، به Bot Token Scopes بروید. اینجا جایی است که مجوزهای کارهایی که ربات شما می تواند در فضای کاری خود انجام دهد را اضافه می کنید. کاربران را اضافه کنید: محدوده خواندن. این محدوده به ربات شما اجازه می دهد تا افراد موجود در فضای کاری شما را مشاهده کند. همچنین، محدوده chat:write را اضافه کنید که به ربات شما امکان می دهد پیام هایی را به فضای کاری ارسال کند.
به اطلاعات اولیه ربات خود برگردید و روی Install to Workspace کلیک کنید.
در صفحه بعدی که ظاهر می شود، روی اجازه کلیک کنید. اکنون نصب ربات در فضای کاری خود تمام شده است. به ویژگی OAuth & Permissions بروید. به Token OAuth کاربر ربات که Slack پس از نصب ایجاد می کند توجه داشته باشید. ربات در بخش برنامه فضای کاری شما قابل مشاهده خواهد بود.
اکنون که ربات را در فضای کاری خود نصب کرده اید، می توانید کدی را برای کنترل آن بنویسید.
آماده کردن محیط
برای دنبال کردن این نمونه کدها باید با اصول پایتون آشنا باشید.
یک محیط مجازی جدید و یک فایل env ایجاد کنید. شما از فایل .env برای ذخیره رمز و رمز امضای خود استفاده خواهید کرد که باید خصوصی نگه دارید. شما نباید فایل .env را در هیچ پلتفرم عمومی آپلود کنید.
برای نصب کتابخانه های مورد نیاز دستور زیر را در ترمینال اجرا کنید:
pip install slack-sdk pathlib dotenv flask slackeventsapi
کتابخانه slack-sdk ابزارهایی را برای ساختن برنامه ها و ادغام های Slack، از جمله روش های API، کلاینت های Web API و OAuth در اختیار شما قرار می دهد. pathlib و dotenv به شما کمک می کنند تا متغیرهای محیط را بارگیری کنید. flask به شما در رسیدگی به درخواست ها و پاسخ های HTTP کمک می کند. slackeventsapi شنونده رویدادی را در اختیار شما قرار می دهد که رویدادها را از Slack دریافت و مدیریت می کند.
کد منبع کامل در یک مخزن GitHub موجود است.
واردات کتابخانه های مورد نیاز
یک فایل پایتون جدید ایجاد کنید و با وارد کردن کتابخانههایی که قبلاً نصب کردهاید شروع کنید تا بتوانید از عملکرد آنها در کد خود استفاده کنید.
import slack_sdk as slack
import os
from pathlib import Path
from dotenv import load_dotenv
from flask import Flask
from slackeventsapi import SlackEventAdapter
ماژول سیستم عامل پایتون با این زبان همراه است، بنابراین نیازی به نصب آن ندارید. SlackEventAdapter یک کلاس از ماژول slackeventsapi است که رویدادها را از Slack API مدیریت می کند.
راه اندازی Slack Bot
دو متغیر در فایل .env ایجاد کنید. یک SLACK_BOT_TOKEN را نام ببرید و به آن Token OAuth کاربر ربات اختصاص دهید. نام دیگری را SLACK_SIGNING_SECRET بگذارید و راز امضا را به آن اختصاص دهید. به فایل پایتون برگردید و یک شی Flask ایجاد کنید. سپس با استفاده از تابع load_dotenv از ماژول dotenv، متغیرهای محیط را از فایل .env بارگذاری کنید.
app = Flask(__name__)
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
یک نمونه slack_event_adapter ایجاد کنید. رویدادهای Slack API را با استفاده از متغیر محیطی SLACK_SIGNING_SECRET برای احراز هویت درخواستها مدیریت میکند.
slack_event_adapter = SlackEventAdapter(os.environ['SLACK_SIGNING_SECRET'],
'/slack/events', app)
/slack/events نقطه پایانی است که Slack API از آن برای ارسال رویدادها استفاده می کند.
یک نمونه WebClient ایجاد کنید که پیام هایی را به Slack API ارسال کند. برای بازیابی شناسه ربات، یک تماس API برقرار کنید.
client = slack.WebClient(token=os.environ['SLACK_BOT_TOKEN'])
BOT_ID = client.api_call("auth.test")['user_id']
پیامی را که برای کاربران جدیدی که به یک کانال می پیوندند ارسال می کنید تنظیم کنید. یک مجموعه خالی را راه اندازی کنید که کاربران مورد استقبال را ردیابی کند.
GREETING_MESSAGE = "Hello {user_name}, welcome to the {channel_name} " \
"channel! We're excited to have you here."
welcomed_users = set()
شما می توانید تبریک را به دلخواه شخصی سازی کنید.
ایجاد یک تابع برای مدیریت رویداد “عضو کانال”.
یک شنونده رویداد راه اندازی کنید. به رویداد Member_joined_channel گوش خواهد داد.
@slack_event_adapter.on('member_joined_channel')
تابعی را تعریف کنید که وقتی کاربر به یک کانال میپیوندد، با آن تماس میگیرید. از تابع برای استخراج شناسه کاربر و شناسه کانال از داده های رویداد استفاده کنید. بررسی کنید که آیا کاربر تازه وارد کانال شده است یا خیر. اگر نه، اطلاعات کاربر و کانال را با استفاده از کلاس WebClient دریافت کنید. یک پیام تبریک شخصی ایجاد کنید. پیام تبریک را به کانال ارسال کنید
def handle_member_joined_channel(event_data):
user_id = event_data['event']['user']
channel_id = event_data['event']['channel']
# Only send a welcome message if the user is new
if user_id not in welcomed_users:
welcomed_users.add(user_id)
user_info = client.users_info(user=user_id)
user_name = user_info['user']['name']
channel_info = client.conversations_info(channel=channel_id)
channel_name = channel_info['channel']['name']
greeting = GREETING_MESSAGE.format(user_name=user_name,
channel_name=channel_name)
client.chat_postMessage(channel=channel_id, text=greeting)
Event_data شامل تمام اطلاعات رویدادی است که در آن کاربر به یک کانال پیوسته است.
برنامه Flask را راه اندازی کنید و اسکریپت را اجرا کنید. اگر به عنوان برنامه اصلی اجرا می شود (به عنوان ماژول وارد نشده است)، در حالت اشکال زدایی اجرا شده و در پورت 5000 گوش دهید.
if __name__ == "__main__":
app.run(debug=True, port=5000)
وقتی تغییراتی در کد ایجاد می کنید، حالت اشکال زدایی به طور خودکار برنامه را بارگیری مجدد می کند. از حالت اشکال زدایی در محیط تولید استفاده نکنید، می تواند اطلاعات حساس را در معرض دید قرار دهد و برنامه شما را در برابر حملات آسیب پذیر کند. برنامه خود را اجرا کنید به عنوان یک سرور محلی در پورت 5000 اجرا می شود.
اتصال منطق با ربات شما
پس از ایجاد منطق، اکنون باید به ربات موجود در فضای کاری خود متصل شوید. این به آن اجازه می دهد تا از این منطق برای انجام عملیات در فضای کاری شما استفاده کند. با دانلود و اجرای Ngrok شروع کنید. Ngrok به شما کمک می کند وب سرور محلی خود را در معرض اینترنت قرار دهید.
پس از اجرای آن، از دستور زیر برای نگاشت آدرس سرور محلی خود به Ngrok استفاده کنید.
ngrok http 500
آدرس Ngrok را که به هاست محلی خود نقشه میدهد کپی کنید.
به وب سایت Slack API بروید. در زیر ویژگی اشتراک رویداد، رویدادها را فعال کنید. در زیر درخواست URL آدرس Ngrok و سپس /slack/events را وارد کنید. این به نقطه پایانی شما اشاره می کند.
سپس در رویداد Member_joined_channel مشترک شوید. هر بار که کاربر به کانالی بپیوندد، این ربات شما را مطلع می کند. روی Save Changes کلیک کنید. Slack به طور خودکار محدوده هایی را که برای اشتراک در این رویداد نیاز دارید اضافه می کند. هر بار که محدوده ای را تغییر می دهید، باید برنامه خود را مجدداً در فضای کاری نصب کنید.
روی نصب مجدد برنامه خود کلیک کنید.
تست ربات شما
به محل کار خود بروید. به کانالی که می خواهید از ربات استفاده کنید بروید. برای ربات پیام مستقیم ارسال کنید. برای مثال @Welcoming Bot. یک پیام برای اضافه کردن ربات به کانال ظاهر می شود. روی افزودن کلیک کنید.
اکنون، هر بار که یک کاربر جدید به کانال میپیوندد، ربات پیام خوشآمدگویی ارسال میکند.
تصویر بالا ربات را نشان می دهد که از یک کاربر جدید در کانال استقبال می کند.
بهترین استفاده را از فضای کاری شل خود ببرید
ربات های Slack تنها راه برای گسترش عملکرد پلت فرم پیام رسانی Slack نیستند. روش دیگر ادغام ابزارهای شخص ثالث با Slack است. آنها عملکرد اضافی را در پلتفرم ارائه می دهند.
با این ادغام ها آشنا شوید زیرا بهره وری شما را در Slack افزایش می دهند.