Farih.co.id
Home Programming Cara Membuat Bot Slack yang Friendly dengan Python

Cara Membuat Bot Slack yang Friendly dengan Python

slack moderation bot featured image

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.

Halaman masuk ruang kerja kendur

Masuk ke ruang kerja baru Anda. Slack secara otomatis membuat saluran acak dan umum untuk Anda.

Ruang kerja kendur disebut ruang Pengujian

Perhatikan bagian Aplikasi di kiri bawah ruang kerja. Di sinilah bot kami akan muncul saat Anda membuatnya. Arahkan ke Situs web API kendur.

Beranda Slack API

Klik Buat aplikasi. Buat aplikasi Dari awal di jendela yang muncul.

Jendela munculan untuk membuat aplikasi di Slack API

Beri nama aplikasi Anda dan pilih ruang kerja tempat Anda ingin mengembangkannya.

Masukkan nama aplikasi dan ruang kerja di situs web slack API

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.

Halaman informasi dasar aplikasi Slack

Buka fitur OAuth & Izin.

Halaman fitur OAuth & Izin aplikasi kendur

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.

Halaman Slack API yang menampilkan cakupan token bot

Arahkan kembali ke informasi dasar bot Anda dan klik Instal ke Workspace.

Halaman informasi dasar bot kendur menampilkan penginstalan ke ruang kerja

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.

Ruang kerja Slack dengan bot ditampilkan di bawah bagian aplikasi

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.

Ngrok menjalankan output

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.

Halaman langganan acara Slack API

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.

Halaman Slack API menampilkan penginstalan ulang bot Slack

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.

Slack bot mengirim pesan selamat datang di saluran

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.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad