Kerangka kerja Python untuk membangun aplikasi Slack dalam sekejap dengan fitur platform terbaru. Baca panduan memulai dan lihat contoh kode kami untuk mempelajari cara membuat aplikasi menggunakan Bolt. Dokumen modul Python tersedia di sini.
# Python 3.6+ required
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install slack_bolt
Buat aplikasi Bolt untuk Python dengan memanggil konstruktor, yang merupakan ekspor tingkat atas. Jika mau, Anda dapat membuat aplikasi asinkron.
import logging
logging . basicConfig ( level = logging . DEBUG )
from slack_bolt import App
# export SLACK_SIGNING_SECRET=***
# export SLACK_BOT_TOKEN=xoxb-***
app = App ()
# Add functionality here
if __name__ == "__main__" :
app . start ( 3000 ) # POST http://localhost:3000/slack/events
export SLACK_SIGNING_SECRET= ***
export SLACK_BOT_TOKEN=xoxb- ***
python app.py
# in another terminal
ngrok http 3000
Jika Anda menggunakan Mode Socket untuk menjalankan aplikasi Anda, SocketModeHandler
tersedia untuk itu.
import os
from slack_bolt import App
from slack_bolt . adapter . socket_mode import SocketModeHandler
# Install the Slack app and get xoxb- token in advance
app = App ( token = os . environ [ "SLACK_BOT_TOKEN" ])
# Add functionality here
if __name__ == "__main__" :
# Create an app-level token with connections:write scope
handler = SocketModeHandler ( app , os . environ [ "SLACK_APP_TOKEN" ])
handler . start ()
Jalankan aplikasi dengan cara ini:
export SLACK_APP_TOKEN=xapp- ***
export SLACK_BOT_TOKEN=xoxb- ***
python app.py
# SLACK_SIGNING_SECRET is not required
# Running ngrok is not required
Aplikasi biasanya bereaksi terhadap kumpulan peristiwa masuk, yang dapat berhubungan dengan peristiwa API Peristiwa, tindakan, pintasan, perintah garis miring, atau permintaan opsi. Untuk setiap jenis permintaan, terdapat metode untuk membangun fungsi pendengar.
# Listen for an action from a Block Kit element (buttons, select menus, date pickers, etc)
app . action ( action_id )( fn )
# Listen for dialog submissions
app . action ({ "callback_id" : callbackId })( fn )
# Listen for slash commands
app . command ( command_name )( fn )
# Listen for an event from the Events API
app . event ( event_type )( fn )
# Listen for a custom step execution from a workflow
app . function ( callback_id )( fn )
# Convenience method to listen to only `message` events using a string or re.Pattern
app . message ([ pattern ,])( fn )
# Listen for options requests (from select menus with an external data source)
app . options ( action_id )( fn )
# Listen for a global or message shortcuts
app . shortcut ( callback_id )( fn )
# Listen for view_submission modal events
app . view ( callback_id )( fn )
Cara yang disarankan untuk menggunakan metode ini adalah dekorator:
@ app . event ( event_type )
def handle_event ( event ):
pass
Sebagian besar fungsi aplikasi akan berada di dalam fungsi pendengar (parameter fn
di atas). Fungsi-fungsi ini dipanggil dengan sekumpulan argumen, yang masing-masing argumen dapat digunakan dalam urutan apa pun. Jika Anda ingin mengakses argumen dari satu objek, Anda dapat menggunakan args
, sebuah instance slack_bolt.kwargs_injection.Args
yang berisi semua argumen yang tersedia untuk kejadian tersebut.
Argumen | Keterangan |
---|---|
body | Kamus yang berisi seluruh isi permintaan (superset payload ). Beberapa data aksesori hanya tersedia di luar payload (seperti trigger_id dan authorizations ). |
payload | Isi acara yang masuk. Struktur payload bergantung pada pendengar. Misalnya, untuk acara Events API, payload akan menjadi struktur jenis acara. Untuk tindakan blokir, itu akan menjadi tindakan dari dalam daftar actions . Kamus payload juga dapat diakses melalui alias yang sesuai dengan pendengar ( message , event , action , shortcut , view , command , atau options ). Misalnya, jika Anda membuat pendengar message() , Anda dapat menggunakan argumen payload dan message secara bergantian. Cara mudah untuk memahami isi payload adalah dengan mencatatnya . |
context | Konteks acara. Kamus ini berisi data tentang acara dan aplikasi, seperti botId . Middleware dapat menambahkan konteks tambahan sebelum acara diteruskan ke pendengar. |
ack | Fungsi yang harus dipanggil untuk mengetahui bahwa aplikasi Anda menerima peristiwa masuk. ack ada untuk semua tindakan, pintasan, pengiriman tampilan, perintah garis miring, dan permintaan opsi. ack mengembalikan janji yang terselesaikan ketika selesai. Baca selengkapnya di Mengakui peristiwa. |
respond | Fungsi utilitas yang merespons peristiwa masuk jika berisi response_url (perintah pintasan, tindakan, dan garis miring). |
say | Utilitas berfungsi untuk mengirim pesan ke saluran yang terkait dengan acara masuk. Argumen ini hanya tersedia ketika pendengar dipicu oleh peristiwa yang berisi channel_id (peristiwa message yang paling umum). say menerima string sederhana (untuk pesan teks biasa) dan kamus (untuk pesan yang mengandung blok). |
client | Klien API Web yang menggunakan token yang terkait dengan acara tersebut. Untuk instalasi ruang kerja tunggal, token diberikan kepada konstruktor. Untuk instalasi multi-ruang kerja, token dikembalikan menggunakan perpustakaan OAuth, atau secara manual menggunakan fungsi authorize . |
logger | Contoh logging.Logger bawaan yang dapat Anda gunakan di middleware/pendengar. |
complete | Fungsi utilitas yang digunakan untuk memberi sinyal keberhasilan penyelesaian eksekusi langkah kustom. Ini memberitahu Slack untuk melanjutkan ke langkah selanjutnya dalam alur kerja. Argumen ini hanya tersedia dengan pendengar .function dan .action saat menangani eksekusi langkah alur kerja kustom. |
fail | Fungsi utilitas yang digunakan untuk memberi sinyal bahwa langkah kustom gagal diselesaikan. Ini memberitahu Slack untuk menghentikan eksekusi alur kerja. Argumen ini hanya tersedia dengan pendengar .function dan .action saat menangani eksekusi langkah alur kerja kustom. |
Jika Anda lebih memilih untuk membangun aplikasi dengan asyncio, Anda dapat mengimpor perpustakaan AIOHTTP dan memanggil konstruktor AsyncApp
. Dalam aplikasi async, Anda dapat menggunakan pola async/menunggu.
# Python 3.6+ required
python -m venv .venv
source .venv/bin/activate
pip install -U pip
# aiohttp is required
pip install slack_bolt aiohttp
Dalam aplikasi async, semua middleware/listener harus memiliki fungsi async. Saat memanggil metode utilitas (seperti ack
dan say
) dalam fungsi ini, diperlukan untuk menggunakan kata kunci await
.
# Import the async app instead of the regular one
from slack_bolt . async_app import AsyncApp
app = AsyncApp ()
@ app . event ( "app_mention" )
async def event_test ( body , say , logger ):
logger . info ( body )
await say ( "What's up?" )
@ app . command ( "/hello-bolt-python" )
async def command ( ack , body , respond ):
await ack ()
await respond ( f"Hi <@ { body [ 'user_id' ] } >!" )
if __name__ == "__main__" :
app . start ( 3000 )
Jika Anda ingin menggunakan kerangka Web asinkron lainnya (misalnya, Sanic, FastAPI, Starlette), lihat adaptor bawaan dan contohnya.
Dokumentasi memiliki lebih banyak informasi tentang konsep dasar dan lanjutan Bolt untuk Python. Selain itu, semua dokumen modul Python dari perpustakaan ini tersedia di sini.
Jika Anda mengalami kebuntuan, kami siap membantu. Berikut ini adalah cara terbaik untuk mendapatkan bantuan mengatasi masalah Anda:
[email protected]