Die Slack -Plattform bietet mehrere APIs, um Apps zu erstellen. Jede Slack -API liefert einen Teil der Funktionen der Plattform, damit Sie nur diejenigen auswählen können, die zu Ihren Anforderungen passen. Dieser SDK bietet ein entsprechendes Paket für jede APIs von Slack. Sie sind klein und mächtig, wenn sie unabhängig verwendet werden, und arbeiten auch nahtlos, wenn sie zusammen verwendet werden.
Umfassende Dokumentation zur Verwendung des Slack Python finden Sie unter https://tools.slack.dev/python-lack-sdk/
Unabhängig davon, ob Sie eine benutzerdefinierte App für Ihr Team erstellen oder einen Drittanbieter -Service in Ihre Slack -Workflows integrieren, können Sie die Flexibilität von Python für Python für Python nutzen, um Ihr Projekt so schnell wie möglich zum Laufen zu bringen.
Der Python Slack SDK ermöglicht die Interaktion mit:
slack_sdk.web
: zum Aufrufen der Web -API -Methodenslack_sdk.webhook
: Zur Verwendung der eingehenden Webhooks und response_url
S in Nutzlastenslack_sdk.signature
: Zur Überprüfung eingehender Anforderungen vom Slack -API -Serverslack_sdk.socket_mode
: zum Empfang und Senden von Nachrichten über Socket -Modus -Verbindungenslack_sdk.audit_logs
: zur Verwendung von APIs mit Audit -Protokollenslack_sdk.scim
: zur Verwendung von SCIM -APIsslack_sdk.oauth
: Für die Implementierung des Slack OAuth Flowsslack_sdk.models
: Zum Bau von Block-Kit-UI-Komponenten mit benutzerfreundlichen Bauherrenslack_sdk.rtm
: zur Verwendung der RTM -APIWenn Sie unsere Ereignis -API- und Interaktivitätsfunktionen verwenden möchten, überprüfen Sie bitte den Bolzen für die Python -Bibliothek. Details zu Token und Authentifizierung finden Sie in unserem Auth -Handbuch.
Suchen Sie Slackclient? Die Website ist hier wie zuvor hier live. Das Slackclient -Projekt befindet sich jetzt im Wartungsmodus und dieser slack_sdk
ist der Nachfolger. Wenn Sie Zeit haben, eine Migration zu Slack_SDK V3 zu machen, folgen Sie unserem Migrationshandbuch, um sicherzustellen, dass Ihre App nach der Aktualisierung weiter funktioniert.
Diese Bibliothek erfordert Python 3.6 und höher. Wenn Sie Python 2 benötigen, verwenden Sie bitte unseren SlackClient - v1.x. Wenn Sie sich nicht sicher sind, wie Sie überprüfen, auf welcher Version von Python Sie sich befinden, können Sie es mit Folgendes überprüfen:
Hinweis: Möglicherweise müssen Sie
python3
vor Ihren Befehlen verwenden, um sicherzustellen, dass Sie den richtigen Python -Pfad verwenden. zBpython3 --version
python --version
-- or --
python3 --version
Wir empfehlen, PYPI zu verwenden, um das Slack Developer Kit für Python zu installieren.
$ pip install slack_sdk
Wir haben dieses Tutorial erstellt, um in weniger als 10 Minuten eine einfache Slack -App zu erstellen. Es erfordert einige allgemeine Programmierkenntnisse und Python -Grundlagen. Es konzentriert sich auf die Interaktion mit der Slack Web API und der RTM -API. Verwenden Sie es, um Ihnen eine Vorstellung davon zu geben, wie Sie dieses SDK verwenden.
Lesen Sie das Tutorial, um loszulegen!
Slack bietet eine Web -API, mit der Sie Anwendungen erstellen können, die auf verschiedene Weise mit Slack interagieren. Dieses Entwicklungskit ist eine modulbasierte Wrapper, die die Interaktion mit dieser API erleichtert. Wir haben hier ein grundlegendes Beispiel mit einigen der häufigsten Verwendungszwecke, aber hier sind eine vollständige Liste der verfügbaren Methoden verfügbar. Detailliertere Beispiele finden Sie in unserem Leitfaden.
Eine der häufigsten Anwendungsfälle ist das Senden einer Nachricht an Slack. Wenn Sie eine Nachricht als App oder als Benutzer senden möchten, kann diese Methode beides tun. In unseren Beispielen geben wir den Kanalnamen an, es wird jedoch empfohlen, den channel_id
nach Möglichkeit zu verwenden. Wenn sich der BOT -Benutzer Ihrer App noch nicht in einem Kanal befindet, laden Sie den Bot -Benutzer vor, bevor Sie den Code -Snippet ausführen (oder chat:write.public
in Bot -Token -Scopes für das Posten in öffentlichen Kanälen).
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 } " )
Hier stellen wir auch sicher, dass die Reaktion von Slack erfolgreich ist und dass die Nachricht die von uns gesendete Verwendung mit der assert
-Anweisung ist.
Wir haben den Vorgang zum Hochladen von Dateien auf Slack geändert, um viel einfacher und einfach zu sein. Sie können jetzt einfach einen Pfad in die Datei direkt in den API -Anruf einfügen und diese auf diese Weise hochladen.
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' ] } " )
Weitere Details zur Methode files_upload_v2
finden Sie hier.
AsyncWebClient
in diesem SDK benötigt AIOHTTP unter der Haube für asynchrone Anfragen.
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 ())
Wenn Sie ein Framework verwenden, in dem die Asyncio -Ereignisschleife wie: Sanic/Jupyter Notebook/etc.
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 )
Sie können einen benutzerdefinierten SSL -Kontext bereitstellen oder die Bestätigung deaktivieren, indem Sie die ssl
-Option übergeben, die sowohl vom RTM als auch vom Web -Client unterstützt wird.
Bei asynchronen Anfragen finden Sie in der AIOHTTP SSL -Dokumentation.
Für Synchronisierungsanforderungen finden Sie in der Urllib SSL -Dokumentation.
Ein Proxy wird unterstützt, wenn asynchronisierte Anfragen erstellt werden, die proxy
-Option übergeben, die sowohl vom RTM als auch vom Web -Client unterstützt wird.
Für asynchronisierende Anfragen siehe AIOHTTP -Proxy -Dokumentation.
Für Synchronisierungsanforderungen funktioniert die Einstellung entweder HTTPS_PROXY
env -Variable oder der proxy
-Option.
Verwenden Sie den asynchronen Client und suchen Sie nach einem Leistungsschub? Die Installation der optionalen Abhängigkeiten (AIDNs) kann dazu beitragen, die DNS -Auflösung des Clients zu beschleunigen. Wir haben es als extra "optional" aufgenommen:
$ 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 )
Wenn Sie von SlackClient V2.x von Slack_SDK nach v3.x migrieren, befolgen Sie bitte unserem Migrationshandbuch, um sicherzustellen, dass Ihre App nach der Aktualisierung weiter arbeitet.
Schauen Sie sich den Migrationsführer hier an!
Wenn Sie von v1.x von SlackClient nach v2.x migrieren, befolgen Sie bitte unserem Migrationshandbuch, um sicherzustellen, dass Ihre App nach der Aktualisierung weiter funktioniert.
Schauen Sie sich den Migrationsführer hier an!
Wenn Sie stecken bleiben, sind wir hier, um zu helfen. Im Folgenden sind die besten Möglichkeiten, um Hilfe bei Ihrem Problem zu erhalten:
Verwenden Sie unseren GitHub -Problemträger, um Fehler zu melden oder Funktionen anzufordern. Besuchen Sie die Slack -Community, um Hilfe mit dem Slack Developer Kit für Python zu erhalten, oder verbinden Sie sich im Allgemeinen nur mit Ihren Mit -Slack -Entwicklern.
Wir begrüßen Beiträge von allen! Bitte besuchen Sie den Leitfaden für den Mitwirkenden, wie Sie hilfreich und kollaborativ beitragen können.