Cara Membuat Bot Slack yang Friendly dengan Python
Table of content:
Menyambut pengguna baru di saluran Anda membuat mereka betah, tetapi melacak setiap pengguna yang bergabung bisa menjadi tugas yang melelahkan. Di situlah bot penyambutan Slack masuk. Bot mengirimkan pesan selamat datang yang dipersonalisasi ke setiap pengguna saluran baru. Itu selalu online sehingga tidak akan ada pesan selamat datang yang terlambat.
Anda akan mempelajari cara menyiapkan kredensial bot Anda, mendengarkan acara di Slack, dan mengirim pesan kembali ke pengguna.
Membuat Bot Slack dan Mendapatkan Token API-nya
Membuat Akun kendur atau masuk ke yang sudah ada. Kemudian buat a ruang kerja Slack baru untuk menguji bot Anda sebelum Anda menginstalnya di ruang kerja aktif Anda.
Masuk ke ruang kerja baru Anda. Slack secara otomatis membuat saluran acak dan umum untuk Anda.
Perhatikan bagian Aplikasi di kiri bawah ruang kerja. Di sinilah bot kami akan muncul saat Anda membuatnya. Arahkan ke Situs web API kendur.
Klik Buat aplikasi. Buat aplikasi Dari awal di jendela yang muncul.
Beri nama aplikasi Anda dan pilih ruang kerja tempat Anda ingin mengembangkannya.
Kemudian klik pada Buat Aplikasi tombol. Mengklik akan mengarahkan Anda ke halaman yang berisi informasi dasar aplikasi Anda. Catat rahasia penandatanganan di bawah kredensial aplikasi. Bot Anda akan menggunakan rahasia penandatanganan untuk memverifikasi bahwa suatu peristiwa berasal dari Slack dan tidak dirusak selama transmisi.
Buka fitur OAuth & Izin.
Di bawah OAuth & Izin, navigasikan ke Cakupan Token Bot. Di sinilah Anda akan menambahkan izin dari apa yang dapat dilakukan bot Anda di ruang kerja Anda. Tambahkan pengguna: baca cakupan. Cakupan ini akan memungkinkan bot Anda untuk melihat orang-orang di ruang kerja Anda. Juga, tambahkan obrolan: tulis ruang lingkup yang memungkinkan bot Anda mengirim pesan ke ruang kerja.
Arahkan kembali ke informasi dasar bot Anda dan klik Instal ke Workspace.
Klik izinkan pada halaman berikutnya yang muncul. Anda sekarang selesai menginstal bot ke ruang kerja Anda. Arahkan ke fitur OAuth & Izin. Catat Token OAuth Pengguna Bot yang dihasilkan Slack setelah penginstalan. Bot akan terlihat di bagian aplikasi ruang kerja Anda.
Sekarang Anda telah menginstal bot ke ruang kerja Anda, Anda dapat menulis kode untuk mengontrolnya.
Mempersiapkan Lingkungan Anda
Anda harus terbiasa dengan dasar-dasar Python untuk mengikuti contoh kode ini.
Buat lingkungan virtual baru dan a .env mengajukan. Anda akan menggunakan file .env untuk menyimpan token dan rahasia penandatanganan, yang perlu Anda jaga kerahasiaannya. Anda tidak boleh mengunggah file .env ke platform publik mana pun.
Jalankan perintah berikut di terminal untuk menginstal pustaka yang diperlukan:
pip install slack-sdk pathlib dotenv flask slackeventsapi
Pustaka slack-sdk akan memberi Anda alat untuk membuat aplikasi dan integrasi Slack, termasuk metode API, klien API Web, dan OAuth. pathlib dan dotenv akan membantu Anda memuat variabel lingkungan. flask akan membantu Anda menangani permintaan dan respons HTTP. slackeventsapi akan memberi Anda pendengar acara yang menerima dan menangani acara dari Slack.
Mengimpor Perpustakaan yang Diperlukan
Buat file Python baru, dan mulai dengan mengimpor pustaka yang sebelumnya Anda instal, sehingga Anda dapat menggunakan fungsionalitasnya dalam kode Anda.
import slack_sdk as slack
import os
from pathlib import Path
from dotenv import load_dotenv
from flask import Flask
from slackeventsapi import SlackEventAdapter
Modul os Python dilengkapi dengan bahasa, jadi Anda tidak perlu menginstalnya. SlackEventAdapter adalah class dari modul slackeventsapi yang menangani event dari Slack API.
Menyiapkan Bot Slack
Buat dua variabel di file .env. Beri nama satu SLACK_BOT_TOKEN dan tetapkan itu Token OAuth Pengguna Bot. Beri nama yang lain SLACK_SIGNING_SECRET dan tetapkan itu sebagai rahasia penandatanganan. Kembali ke file Python dan buat objek Flask. Kemudian muat variabel lingkungan dari file .env menggunakan fungsi load_dotenv dari modul dotenv.
app = Flask(__name__)
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
Buat instance slack_event_adapter. Ini akan menangani peristiwa dari Slack API, menggunakan variabel lingkungan SLACK_SIGNING_SECRET untuk mengautentikasi permintaan.
slack_event_adapter = SlackEventAdapter(os.environ['SLACK_SIGNING_SECRET'],
'/slack/events', app)
/slack/events adalah endpoint yang akan digunakan oleh Slack API untuk mengirim event.
Buat instance WebClient yang akan mengirimkan pesan ke Slack API. Lakukan panggilan API untuk mengambil ID bot.
client = slack.WebClient(token=os.environ['SLACK_BOT_TOKEN'])
BOT_ID = client.api_call("auth.test")['user_id']
Siapkan pesan yang akan Anda kirim ke pengguna baru yang bergabung dengan saluran. Inisialisasi set kosong yang akan melacak pengguna yang disambut.
GREETING_MESSAGE = "Hello {user_name}, welcome to the {channel_name} " \
"channel! We're excited to have you here."
welcomed_users = set()
Anda dapat menyesuaikan salam sesuai keinginan Anda.
Membuat Fungsi untuk Menangani Acara “Member Joined Channel”.
Siapkan pendengar acara. Itu akan mendengarkan acara member_joined_channel.
@slack_event_adapter.on('member_joined_channel')
Tentukan fungsi yang akan Anda panggil saat pengguna bergabung dengan saluran. Gunakan fungsi untuk mengekstrak ID pengguna dan ID saluran dari data peristiwa. Periksa apakah pengguna baru di saluran. Jika tidak, dapatkan informasi pengguna dan saluran menggunakan kelas WebClient. Buat pesan ucapan yang dipersonalisasi. Kirim salam ke saluran
def handle_member_joined_channel(event_data):
user_id = event_data['event']['user']
channel_id = event_data['event']['channel']
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 berisi semua informasi tentang acara di mana pengguna telah bergabung dengan saluran.
Mulai aplikasi Flask dan jalankan skrip. Jika dijalankan sebagai program utama (tidak diimpor sebagai modul), jalankan dalam mode debug dan dengarkan di port 5000.
if __name__ == "__main__":
app.run(debug=True, port=5000)
Mode debug secara otomatis memuat ulang aplikasi saat Anda membuat perubahan pada kode. Jangan gunakan mode debug di lingkungan produksi, karena dapat membuka informasi sensitif dan membuat aplikasi Anda rentan terhadap serangan. Jalankan aplikasi Anda. Ini akan berjalan sebagai server lokal pada port 5000.
Menghubungkan Logika Dengan Bot Anda
Setelah membuat logikanya, Anda sekarang harus terhubung ke bot di ruang kerja Anda. Ini akan memungkinkan untuk menggunakan logika ini untuk melakukan operasi di ruang kerja Anda. Mulailah dengan mengunduh dan menjalankan Ngrok. Ngrok akan membantu Anda mengekspos server web lokal Anda ke internet.
Setelah menjalankannya, gunakan perintah berikut untuk memetakan alamat server lokal Anda ke Ngrok.
ngrok http 500
Salin alamat Ngrok yang dipetakan ke host lokal Anda.
Arahkan ke situs web Slack API. Di bawah Langganan Acara fitur, aktifkan acara. Di bawah Minta URL masukkan alamat Ngrok diikuti dengan /slack/events. Ini akan mengarah ke titik akhir Anda.
Kemudian berlangganan acara member_joined_channel. Ini akan memberi tahu bot Anda setiap kali pengguna bergabung dengan saluran. Klik Simpan perubahan. Slack akan secara otomatis menambahkan cakupan yang Anda perlukan untuk berlangganan acara ini. Setiap kali Anda mengubah ruang lingkup, Anda harus menginstal ulang aplikasi Anda di ruang kerja.
Klik instal ulang aplikasi Anda.
Menguji Bot Anda
Pergi ke ruang kerja Anda. Buka saluran yang ingin Anda gunakan bot. Kirim pesan langsung ke bot. Misalnya @Welcoming Bot. Permintaan untuk menambahkan bot ke saluran akan muncul. Klik tambahkan.
Sekarang, setiap kali pengguna baru bergabung dengan saluran, bot akan mengirimkan pesan selamat datang.
Gambar di atas menunjukkan bot menyambut pengguna baru ke saluran.
Memaksimalkan Ruang Kerja Slack Anda
Bot Slack bukan satu-satunya cara untuk memperluas fungsionalitas platform perpesanan Slack. Metode lainnya adalah mengintegrasikan alat pihak ketiga dengan Slack. Mereka menyediakan fungsionalitas tambahan di dalam platform.
Biasakan diri Anda dengan integrasi ini karena akan meningkatkan produktivitas Anda di Slack.