Grundlagen des Slack Bolt SDK
App-Initialisierung, Bot-Tokens, Socket Mode gegenüber HTTP und Ereignisabonnements.
Grundlagen des Slack Bolt SDK ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Warum Slack Bolt für die Agentenentwicklung?
Slack Bolt ist das offizielle Python-SDK zum Erstellen von Slack-Apps. Es übernimmt OAuth, Ereignisweiterleitung, Middleware und den Anfrage-/Antwortlebenszyklus – Ihr Agent kann sich dadurch auf die Geschäftslogik statt auf HTTP-Infrastruktur konzentrieren. Bolt unterstützt sowohl Socket Mode (WebSocket) als auch HTTP Mode.
# Install Slack Bolt
# pip install slack-bolt
# Slack Bolt handles:
# - Event subscriptions (messages, mentions, reactions)
# - Slash commands (/summarize, /ask)
# - Interactive components (buttons, modals, select menus)
# - Shortcuts (global and message shortcuts)
# - OAuth 2.0 for multi-workspace apps
# - Request signature verification (security)
print('Slack Bolt is the official Python SDK for Slack apps')Bot Token und Signing Secret
Eine Slack-App benötigt zwei Zugangsdaten: ein Bot Token (beginnt mit xoxb-) zum Ausführen von API-Aufrufen und Posten von Nachrichten sowie ein Signing Secret, um zu überprüfen, dass eingehende Ereignisse tatsächlich von Slack stammen. Beide finden Sie im Einstellungsdashboard der Slack-App.
import os
from slack_bolt import App
# Load credentials from environment variables
# Never hardcode tokens!
BOT_TOKEN = os.environ['SLACK_BOT_TOKEN'] # xoxb-...
SIGNING_SECRET = os.environ['SLACK_SIGNING_SECRET'] # hex string
# Initialize the Bolt app
app = App(
token=BOT_TOKEN,
signing_secret=SIGNING_SECRET
)
print('Slack Bolt app initialized')
print(f'Bot token prefix: {BOT_TOKEN[:10]}...')Erforderliche Bot-Token-Berechtigungen
Slack-Apps verwenden OAuth-Bereiche, um festzulegen, was der Bot tun darf. Fügen Sie die Bereiche im Slack-App-Dashboard unter OAuth & Permissions → Scopes → Bot Token Scopes hinzu. Häufig verwendete Bereiche für einen KI-Agenten-Bot:
chat:write— Nachrichten postenapp_mentions:read— @Mentions empfangenchannels:history— Nachrichten in Channels lesencommands— Slash-Befehle empfangenim:write— Direktnachrichten senden
# Required scopes for a typical AI agent bot:
# - chat:write → post messages to channels
# - app_mentions:read → receive @bot mentions
# - channels:history → read message history
# - channels:read → list channels
# - commands → handle slash commands
# - im:write → send DMs
# - im:read → receive DMs
# - users:read → get user info (name, email)
# Add these in Slack App settings:
# https://api.slack.com/apps -> Your App -> OAuth & Permissions
print('Configure scopes in Slack App dashboard before installing')Socket Mode im Vergleich zu HTTP Mode
Socket Mode verbindet sich über ein dauerhaftes WebSocket mit Slack – dafür ist keine öffentliche URL erforderlich, was ihn ideal für die Entwicklung und interne Tools macht. HTTP Mode erfordert einen öffentlichen HTTPS-Endpunkt, an den Slack Ereignisse per POST sendet – erforderlich für Produktions-Apps und Installationen in mehreren Workspaces.
# SOCKET MODE (development / internal tools):
# - No public URL needed
# - Uses an App-Level Token (xapp-...)
# - Great for local development
from slack_bolt.adapter.socket_mode import SocketModeHandler
APP_TOKEN = os.environ['SLACK_APP_TOKEN'] # xapp-...
handler = SocketModeHandler(app, APP_TOKEN)
# handler.start() # blocks and handles events
# HTTP MODE (production):
# - Requires public HTTPS URL configured in Slack app settings
# - Works with Flask, FastAPI, etc.
from slack_bolt.adapter.flask import SlackRequestHandler
from flask import Flask, request
flask_app = Flask(__name__)
slack_handler = SlackRequestHandler(app)
print('Socket Mode: dev/internal; HTTP Mode: production')App initialisieren und Socket Mode starten
Die minimale Slack-Bolt-App im Socket Mode: Erstellen Sie die App, registrieren Sie mindestens einen Handler und starten Sie anschließend den SocketModeHandler. Der Handler verbindet sich mit der Ereignisinfrastruktur von Slack und bleibt verbunden, bis Sie den Prozess stoppen.
import os
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
app = App(
token=os.environ['SLACK_BOT_TOKEN'],
signing_secret=os.environ['SLACK_SIGNING_SECRET']
)
@app.event('app_mention')
def handle_mention(event, say):
user = event['user']
text = event['text']
say(f'Hi <@{user}>! You said: {text}')
# Start the app
if __name__ == '__main__':
handler = SocketModeHandler(
app,
os.environ['SLACK_APP_TOKEN']
)
handler.start() # blocks until process is killedMit ngrok testen (HTTP Mode)
Verwenden Sie während der Entwicklung mit HTTP Mode ngrok, um Ihren lokalen Server im Internet bereitzustellen. Führen Sie ngrok http 3000 aus, um eine öffentliche HTTPS-URL zu erhalten, und aktualisieren Sie dann die URLs für Event Subscriptions und Slash Commands Ihrer Slack-App so, dass sie auf diese URL verweisen.
# HTTP mode setup with Flask:
from flask import Flask, request
from slack_bolt import App
from slack_bolt.adapter.flask import SlackRequestHandler
import os
app = App(
token=os.environ['SLACK_BOT_TOKEN'],
signing_secret=os.environ['SLACK_SIGNING_SECRET']
)
@app.event('app_mention')
def handle_mention(event, say):
say('Hello from HTTP mode!')
flask_app = Flask(__name__)
handler = SlackRequestHandler(app)
@flask_app.route('/slack/events', methods=['POST'])
def slack_events():
return handler.handle(request)
# Run: python app.py
# In another terminal: ngrok http 3000
# Set https://abc123.ngrok.io/slack/events as your Request URL in SlackApp-Level Token für Socket Mode
Socket Mode erfordert ein zusätzliches App-Level Token (beginnt mit xapp-) mit dem Bereich connections:write. Dieses Token ist vom Bot Token getrennt. Generieren Sie es in den Slack-App-Einstellungen unter Basic Information → App-Level Tokens.
# App-Level Token setup:
# 1. Go to https://api.slack.com/apps -> Your App
# 2. Click 'Basic Information'
# 3. Scroll to 'App-Level Tokens'
# 4. Click 'Generate Token and Scopes'
# 5. Name it 'socket-mode-token'
# 6. Add scope: connections:write
# 7. Click 'Generate'
# 8. Copy the xapp-... token
# In your .env file:
# SLACK_BOT_TOKEN=xoxb-...
# SLACK_SIGNING_SECRET=abc123...
# SLACK_APP_TOKEN=xapp-...
from slack_bolt.adapter.socket_mode import SocketModeHandler
import os
handler = SocketModeHandler(
app=app,
app_token=os.environ['SLACK_APP_TOKEN'] # xapp-...
)
print('App-Level Token required for Socket Mode')Bolt-Middleware
Bolt unterstützt Middleware – Funktionen, die vor jedem Ereignishandler ausgeführt werden. Verwenden Sie Middleware für Protokollierung, Authentifizierung, Ratenbegrenzung oder zum Anreichern von Ereignissen mit Benutzerdaten. Rufen Sie next() auf, um die Steuerung an die nächste Middleware oder den nächsten Handler zu übergeben.
from slack_bolt import App
import time
import logging
app = App(
token=os.environ['SLACK_BOT_TOKEN'],
signing_secret=os.environ['SLACK_SIGNING_SECRET']
)
logger = logging.getLogger(__name__)
# Request logging middleware
@app.middleware
def log_request(logger, body, next):
event_type = body.get('event', {}).get('type', 'unknown')
start = time.time()
logger.info(f'Incoming event: {event_type}')
next() # must call next() to continue
elapsed = time.time() - start
logger.info(f'Handled {event_type} in {elapsed:.2f}s')
print('Middleware runs before every event handler')Fehlerbehandlung in Bolt
Registrieren Sie mit @app.error einen globalen Fehlerhandler, um nicht behandelte Ausnahmen aus Ihren Ereignishandlern abzufangen. Dadurch wird verhindert, dass die App abstürzt, und Sie können Fehler protokollieren, einen Monitoring-Channel benachrichtigen oder dem Benutzer eine Fehlermeldung senden.
from slack_bolt import App
import traceback
app = App(
token=os.environ['SLACK_BOT_TOKEN'],
signing_secret=os.environ['SLACK_SIGNING_SECRET']
)
@app.error
def custom_error_handler(error, body, logger):
logger.error(f'Error handling event: {error}')
logger.error(traceback.format_exc())
# Try to notify the user who triggered the error
event = body.get('event', {})
channel = event.get('channel')
if channel:
app.client.chat_postMessage(
channel=channel,
text='Sorry, I encountered an error. The team has been notified.'
)
print('Global error handler prevents unhandled crashes')Den Slack-Web-API-Client verwenden
Die Eigenschaft app.client ermöglicht den direkten Zugriff auf die Slack Web API für alle Vorgänge, die nicht von Ereignishandlern abgedeckt werden. Verwenden Sie sie, um Nachrichten zu posten, Dateien hochzuladen, Benutzer in Channels einzuladen oder den Channelverlauf programmgesteuert abzurufen.
from slack_bolt import App
app = App(
token=os.environ['SLACK_BOT_TOKEN'],
signing_secret=os.environ['SLACK_SIGNING_SECRET']
)
# Use app.client for direct API calls
def post_to_channel(channel_id, text):
result = app.client.chat_postMessage(
channel=channel_id,
text=text
)
print(f'Message posted: ts={result["ts"]}')
return result
# Get channel list
def list_channels():
result = app.client.conversations_list(
types='public_channel',
limit=100
)
channels = result['channels']
print(f'Found {len(channels)} public channels')
return channels
# Look up user info
def get_user(user_id):
result = app.client.users_info(user=user_id)
return result['user']Checkliste für die Umgebungseinrichtung
Bevor Ihr Slack-Bot live geht, gehen Sie diese Checkliste durch, um sicherzustellen, dass er korrekt konfiguriert ist:
- Bot Token und Signing Secret in Umgebungsvariablen
- Erforderliche Bereiche im Slack-App-Dashboard hinzugefügt
- Ereignisabonnements aktiviert (app_mention, message.im usw.)
- Socket Mode aktiviert (oder öffentliche URL für HTTP Mode festgelegt)
- App in Ihrem Workspace installiert (OAuth-Ablauf abgeschlossen)
import os
from slack_bolt import App
def verify_slack_setup():
required_env = [
'SLACK_BOT_TOKEN',
'SLACK_SIGNING_SECRET',
'SLACK_APP_TOKEN'
]
missing = [var for var in required_env if not os.environ.get(var)]
if missing:
raise EnvironmentError(f'Missing env vars: {missing}')
token = os.environ['SLACK_BOT_TOKEN']
if not token.startswith('xoxb-'):
raise ValueError('SLACK_BOT_TOKEN must start with xoxb-')
app_token = os.environ['SLACK_APP_TOKEN']
if not app_token.startswith('xapp-'):
raise ValueError('SLACK_APP_TOKEN must start with xapp-')
print('Slack environment setup looks correct!')
verify_slack_setup()Kurzer Test: Socket Mode im Vergleich zu HTTP Mode
Testen Sie Ihr Verständnis der Bereitstellungsmodi von Slack Bolt.
Zusammenfassung der Slack-Bolt-Grundlagen
Sie verfügen nun über die Grundlagen zum Erstellen von Slack-Bots mit Bolt:
- App(token, signing_secret) — initialisiert die Bolt-App mit Zugangsdaten aus Umgebungsvariablen
- Bot Token (
xoxb-) für API-Aufrufe; App-Level Token (xapp-) für Socket Mode - Socket Mode — WebSocket, keine öffentliche URL, ideal für Entwicklung und interne Tools
- HTTP Mode — öffentlicher HTTPS-Endpunkt, erforderlich für Produktions-Apps und Apps in mehreren Workspaces
- Scopes — im Slack-App-Dashboard konfigurieren; nur die benötigten hinzufügen
- Middleware und @app.error — für Protokollierung, Validierung und Fehlerbehandlung
Häufig gestellte Fragen
Ist die Lektion „Grundlagen des Slack Bolt SDK“ kostenlos?
Ja — der vollständige Text von „Grundlagen des Slack Bolt SDK“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Grundlagen des Slack Bolt SDK“?
App-Initialisierung, Bot-Tokens, Socket Mode gegenüber HTTP und Ereignisabonnements. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Grundlagen des Slack Bolt SDK“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Grundlagen des Slack Bolt SDK
- Auf Ereignisse und Slash Commands reagieren
- Nachrichten und Rich Blocks senden
- Einen Benachrichtigungs-Bot für Teams erstellen