Platform Slack menawarkan beberapa API untuk membangun aplikasi. Setiap API Slack memberikan bagian dari kemampuan dari platform, sehingga Anda dapat memilih hanya mereka yang sesuai dengan kebutuhan Anda. SDK ini menawarkan paket yang sesuai untuk masing -masing API Slack. Mereka kecil dan kuat ketika digunakan secara mandiri, dan bekerja dengan mulus saat digunakan bersama.
Dokumentasi komprehensif tentang penggunaan slack python dapat ditemukan di https://tools.slack.dev/python-slack-sdk/
Apakah Anda sedang membangun aplikasi khusus untuk tim Anda, atau mengintegrasikan layanan pihak ketiga ke dalam alur kerja Slack Anda, Slack Developer Kit untuk Python memungkinkan Anda memanfaatkan fleksibilitas Python untuk menjalankan proyek dan berjalan secepat mungkin.
Python Slack SDK memungkinkan interaksi dengan:
slack_sdk.web
: untuk memanggil metode API webslack_sdk.webhook
: Untuk memanfaatkan webhook dan response_url
s yang masuk dalam muatanslack_sdk.signature
: Untuk memverifikasi permintaan yang masuk dari server API slackslack_sdk.socket_mode
: untuk menerima dan mengirim pesan melalui koneksi mode soketslack_sdk.audit_logs
: Untuk menggunakan log audit APIslack_sdk.scim
: untuk memanfaatkan API scimslack_sdk.oauth
: Untuk mengimplementasikan aliran oauth slackslack_sdk.models
: untuk membangun komponen blok kit UI menggunakan pembangun yang mudah digunakanslack_sdk.rtm
: untuk memanfaatkan RTM APIJika Anda ingin menggunakan API acara kami dan fitur interaktivitas, silakan periksa Bolt for Python Library. Detail tentang token dan otentikasi dapat ditemukan di panduan auth kami.
Apakah Anda mencari SlackClient? Situs webnya tinggal di sini seperti sebelumnya. Namun, proyek SlackClient dalam mode pemeliharaan sekarang dan slack_sdk
ini adalah penerus. Jika Anda punya waktu untuk membuat migrasi ke Slack_sdk v3, silakan ikuti panduan migrasi kami untuk memastikan aplikasi Anda terus berfungsi setelah memperbarui.
Perpustakaan ini membutuhkan Python 3.6 ke atas. Jika Anda memerlukan Python 2, silakan gunakan SlackClient kami - V1.X. Jika Anda tidak yakin bagaimana memeriksa versi Python yang Anda hadapi, Anda dapat memeriksanya menggunakan yang berikut:
Catatan: Anda mungkin perlu menggunakan
python3
sebelum perintah Anda untuk memastikan Anda menggunakan jalur Python yang benar. misalnyapython3 --version
python --version
-- or --
python3 --version
Kami merekomendasikan menggunakan PYPI untuk menginstal kit pengembang slack untuk python.
$ pip install slack_sdk
Kami telah membuat tutorial ini untuk membangun aplikasi Slack dasar dalam waktu kurang dari 10 menit. Dibutuhkan beberapa pengetahuan pemrograman umum, dan dasar -dasar Python. Ini berfokus pada interaksi dengan Slack Web API dan RTM API. Gunakan untuk memberi Anda gambaran tentang cara menggunakan SDK ini.
Baca tutorial untuk memulai!
Slack menyediakan API Web yang memberi Anda kemampuan untuk membangun aplikasi yang berinteraksi dengan Slack dalam berbagai cara. Kit pengembangan ini adalah pembungkus berbasis modul yang membuat interaksi dengan API itu lebih mudah. Kami memiliki contoh dasar di sini dengan beberapa kegunaan yang lebih umum tetapi daftar lengkap metode yang tersedia tersedia di sini. Contoh yang lebih rinci dapat ditemukan di panduan kami.
Salah satu kasus penggunaan yang paling umum adalah mengirim pesan ke Slack. Jika Anda ingin mengirim pesan sebagai aplikasi Anda, atau sebagai pengguna, metode ini dapat melakukan keduanya. Dalam contoh kami, kami menentukan nama saluran, namun disarankan untuk menggunakan channel_id
jika memungkinkan. Juga, jika pengguna bot aplikasi Anda belum ada di saluran, undang pengguna bot sebelum menjalankan cuplikan kode (atau tambahkan chat:write.public
ke Bot Token Scopes untuk posting di saluran publik mana pun).
import os
from slack_sdk import WebClient
from slack_sdk . errors import SlackApiError
client = WebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
try :
response = client . chat_postMessage ( channel = '#random' , text = "Hello world!" )
assert response [ "message" ][ "text" ] == "Hello world!"
except SlackApiError as e :
# You will get a SlackApiError if "ok" is False
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
# Also receive a corresponding status_code
assert isinstance ( e . response . status_code , int )
print ( f"Received a response status_code: { e . response . status_code } " )
Di sini kami juga memastikan bahwa respons kembali dari Slack adalah yang sukses dan pesannya adalah yang kami kirim dengan menggunakan pernyataan assert
.
Kami telah mengubah proses untuk mengunggah file menjadi malas menjadi lebih mudah dan lurus ke depan. Anda sekarang hanya dapat menyertakan jalur ke file secara langsung dalam panggilan API dan mengunggahnya dengan cara itu.
import os
from slack_sdk import WebClient
from slack_sdk . errors import SlackApiError
client = WebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
try :
filepath = "./tmp.txt"
response = client . files_upload_v2 ( channel = 'C0123456789' , file = filepath )
assert response [ "file" ] # the uploaded file
except SlackApiError as e :
# You will get a SlackApiError if "ok" is False
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
Rincian lebih lanjut tentang metode files_upload_v2
dapat ditemukan di sini.
AsyncWebClient
di SDK ini membutuhkan aioHTTP di bawah kap untuk permintaan asinkron.
import asyncio
import os
from slack_sdk . web . async_client import AsyncWebClient
from slack_sdk . errors import SlackApiError
client = AsyncWebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
async def post_message ():
try :
response = await client . chat_postMessage ( channel = '#random' , text = "Hello world!" )
assert response [ "message" ][ "text" ] == "Hello world!"
except SlackApiError as e :
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
asyncio . run ( post_message ())
Jika Anda menggunakan kerangka kerja yang memohon Loop Acara Asyncio seperti: Sanic/Jupyter Notebook/dll.
import os
from slack_sdk . web . async_client import AsyncWebClient
from slack_sdk . errors import SlackApiError
client = AsyncWebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
# Define this as an async function
async def send_to_slack ( channel , text ):
try :
# Don't forget to have await as the client returns asyncio.Future
response = await client . chat_postMessage ( channel = channel , text = text )
assert response [ "message" ][ "text" ] == text
except SlackApiError as e :
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
raise e
from aiohttp import web
async def handle_requests ( request : web . Request ) -> web . Response :
text = 'Hello World!'
if 'text' in request . query :
text = " t " . join ( request . query . getall ( "text" ))
try :
await send_to_slack ( channel = "#random" , text = text )
return web . json_response ( data = { 'message' : 'Done!' })
except SlackApiError as e :
return web . json_response ( data = { 'message' : f"Failed due to { e . response [ 'error' ] } " })
if __name__ == "__main__" :
app = web . Application ()
app . add_routes ([ web . get ( "/" , handle_requests )])
# e.g., http://localhost:3000/?text=foo&text=bar
web . run_app ( app , host = "0.0.0.0" , port = 3000 )
Anda dapat memberikan konteks SSL khusus atau menonaktifkan verifikasi dengan melewati opsi ssl
, didukung oleh RTM dan klien web.
Untuk permintaan async, lihat dokumentasi AIOHTTP SSL.
Untuk permintaan sinkronisasi, lihat dokumentasi Urllib SSL.
Proxy didukung saat membuat permintaan async, lulus opsi proxy
, didukung oleh RTM dan klien web.
Untuk permintaan async, lihat dokumentasi proxy AIOHTTP.
Untuk permintaan sinkronisasi, pengaturan variabel HTTPS_PROXY
env atau opsi proxy
berfungsi.
Menggunakan klien Async dan mencari peningkatan kinerja? Menginstal dependensi opsional (AIODNS) dapat membantu mempercepat penyelesaian DNS oleh klien. Kami telah memasukkannya sebagai tambahan yang disebut "opsional":
$ pip install slack_sdk[optional]
import os
from slack_sdk import WebClient
from ssl import SSLContext
sslcert = SSLContext ()
# pip3 install proxy.py
# proxy --port 9000 --log-level d
proxyinfo = "http://localhost:9000"
client = WebClient (
token = os . environ [ 'SLACK_BOT_TOKEN' ],
ssl = sslcert ,
proxy = proxyinfo
)
response = client . chat_postMessage ( channel = "#random" , text = "Hello World!" )
print ( response )
Jika Anda bermigrasi dari SlackClient V2.X dari Slack_sdk ke V3.x, silakan ikuti panduan migrasi kami untuk memastikan aplikasi Anda terus berfungsi setelah memperbarui.
Lihatlah panduan migrasi di sini!
Jika Anda bermigrasi dari v1.x Slackclient ke V2.X, ikuti panduan migrasi kami untuk memastikan aplikasi Anda terus berfungsi setelah memperbarui.
Lihatlah panduan migrasi di sini!
Jika Anda macet, kami di sini untuk membantu. Berikut ini adalah cara terbaik untuk mendapatkan bantuan bekerja melalui masalah Anda:
Gunakan pelacak GitHub Issue kami untuk melaporkan bug atau fitur yang meminta. Kunjungi komunitas Slack untuk mendapatkan bantuan menggunakan Slack Developer Kit untuk Python atau hanya secara umum terikat dengan sesama pengembang Slack Anda.
Kami menyambut kontribusi dari semua orang! Silakan periksa panduan kontributor kami untuk cara berkontribusi dengan cara yang membantu dan kolaboratif.