Nozioni di base di Slack Bolt SDK
Inizializzazione dell’app, token del bot, socket mode rispetto a HTTP e sottoscrizione agli eventi
Nozioni di base di Slack Bolt SDK è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Perché utilizzare Slack Bolt per sviluppare agenti?
Slack Bolt è l'SDK Python ufficiale per creare app Slack. Gestisce OAuth, il routing degli eventi, il middleware e il ciclo di vita delle richieste e delle risposte, permettendo all'agente di concentrarsi sulla logica di business anziché sulla gestione HTTP. Bolt supporta sia Socket Mode (WebSocket) sia 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 e Signing Secret
Un'app Slack richiede due credenziali: un Bot Token (che inizia con xoxb-) per effettuare chiamate API e pubblicare messaggi, e un Signing Secret per verificare che gli eventi in arrivo provengano realmente da Slack. Entrambi si trovano nel pannello delle impostazioni dell'app Slack.
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]}...')Ambiti obbligatori del Bot Token
Le app Slack utilizzano gli ambiti OAuth per definire ciò che il bot può fare. Aggiunga gli ambiti nel pannello Slack App, alla voce OAuth & Permissions → Scopes → Bot Token Scopes. Alcuni ambiti comuni per un bot agente di IA:
chat:write— pubblicare messaggiapp_mentions:read— ricevere menzioni con @channels:history— leggere i messaggi dei canalicommands— ricevere comandi slashim:write— inviare messaggi diretti
# 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 e HTTP Mode
Socket Mode si connette a Slack tramite un WebSocket persistente: non richiede un URL pubblico ed è perfetta per lo sviluppo e gli strumenti interni. HTTP Mode richiede un endpoint HTTPS pubblico a cui Slack invia gli eventi tramite POST; è necessario per le app di produzione e le installazioni in più workspace.
# 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')Inizializzare l'app e avviare Socket Mode
Per creare un'app Slack Bolt minima in Socket Mode, crei App, registri almeno un gestore, quindi avvii SocketModeHandler. Il gestore si connette all'infrastruttura degli eventi di Slack e rimane connesso finché non arresta il processo.
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 killedEseguire test con ngrok (HTTP Mode)
Durante lo sviluppo con HTTP Mode, utilizzi ngrok per esporre il server locale a Internet. Esegua ngrok http 3000 per ottenere un URL HTTPS pubblico, quindi aggiorni gli URL di Event Subscriptions e Slash Commands dell'app Slack in modo che puntino a tale URL.
# 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 per Socket Mode
Socket Mode richiede un App-Level Token aggiuntivo (che inizia con xapp-) con l'ambito connections:write. È separato dal Bot Token. Lo generi nelle impostazioni dell'app Slack, alla voce 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')Middleware di Bolt
Bolt supporta il middleware: funzioni eseguite prima di ogni gestore di eventi. Utilizzi il middleware per la registrazione, l'autenticazione, la limitazione della frequenza o l'arricchimento degli eventi con i dati dell'utente. Chiami next() per passare il controllo al middleware o al gestore successivo.
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')Gestione degli errori in Bolt
Registri un gestore globale degli errori con @app.error per intercettare le eccezioni non gestite dai gestori degli eventi. In questo modo evita che l'app si arresti e può registrare gli errori, avvisare un canale di monitoraggio o inviare un messaggio di errore all'utente.
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')Utilizzare il client Slack Web API
La proprietà app.client consente di accedere direttamente alla Slack Web API per qualsiasi operazione non gestita dagli handler degli eventi. La utilizzi per pubblicare messaggi, caricare file, invitare utenti nei canali o recuperare la cronologia dei canali a livello programmatico.
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']Checklist di configurazione dell'ambiente
Prima di rendere operativo il bot Slack, segua questa checklist di configurazione per verificare che sia configurato correttamente:
- Bot Token e Signing Secret nelle variabili d'ambiente
- Ambiti obbligatori aggiunti nel pannello Slack App
- Sottoscrizioni agli eventi abilitate (app_mention, message.im ecc.)
- Socket Mode abilitata (oppure URL pubblico configurato per HTTP mode)
- App installata nel workspace (flusso OAuth completato)
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()Verifica rapida: Socket Mode e HTTP Mode
Verifichi la Sua comprensione delle modalità di distribuzione di Slack Bolt.
Riepilogo delle basi di Slack Bolt
Ora dispone delle basi per creare bot Slack con Bolt:
- App(token, signing_secret) — inizializza l'app Bolt con le credenziali provenienti dalle variabili d'ambiente
- Bot Token (
xoxb-) per le chiamate API; App-Level Token (xapp-) per Socket Mode - Socket Mode — WebSocket, nessun URL pubblico, ideale per lo sviluppo e gli strumenti interni
- HTTP Mode — endpoint HTTPS pubblico, obbligatorio per le app di produzione o in più workspace
- Ambiti — configurati nel pannello Slack App; aggiunga solo quelli necessari
- Middleware e @app.error — per la registrazione, la convalida e la gestione degli errori
Domande Frequenti
La lezione «Nozioni di base di Slack Bolt SDK» è gratuita?
Sì — il testo completo di «Nozioni di base di Slack Bolt SDK» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Nozioni di base di Slack Bolt SDK»?
Inizializzazione dell’app, token del bot, socket mode rispetto a HTTP e sottoscrizione agli eventi Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Nozioni di base di Slack Bolt SDK»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Nozioni di base di Slack Bolt SDK
- Ascolto degli eventi e dei comandi slash
- Invio di messaggi e blocchi avanzati
- Creazione di un bot per le notifiche del team