AI-agenter · leksjon

Grunnleggende om Slack Bolt SDK

Initialisering av apper, bot-tokener, socket-modus kontra HTTP og hendelsesabonnementer.

Leksjon 1 av 413 trinn

Grunnleggende om Slack Bolt SDK er en gratis leksjon i AI-agenter på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter inneholder totalt 4 leksjoner.

Hvorfor Slack Bolt for agentutvikling?

Slack Bolt er det offisielle Python-SDK-et for å bygge Slack-apper. Det håndterer OAuth, hendelsesruting, mellomvare og livssyklusen for forespørsler og svar – slik at agenten kan fokusere på forretningslogikken i stedet for HTTP-infrastruktur. Bolt støtter både Socket Mode (WebSocket) og 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 og signeringshemmelighet

En Slack-app trenger to legitimasjonsopplysninger: et Bot Token (starter med xoxb-) for API-kall og publisering av meldinger, og en Signing Secret for å kontrollere at innkommende hendelser faktisk kommer fra Slack. Begge finnes i innstillingspanelet for Slack-appen.

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]}...')

Nødvendige omfang for bot-tokenet

Slack-apper bruker OAuth-omfang til å definere hva boten kan gjøre. Legg til omfang i Slack App-kontrollpanelet under OAuth & Permissions → Scopes → Bot Token Scopes. Vanlige omfang for en AI-agentbot:

  • chat:write — publisere meldinger
  • app_mentions:read — motta @mentions
  • channels:history — lese kanal­meldinger
  • commands — motta skråstrekkommandoer
  • im:write — sende direktemeldinger
# 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 kontra HTTP Mode

Socket Mode kobler til Slack via en vedvarende WebSocket – ingen offentlig URL er nødvendig, noe som gjør modusen velegnet for utvikling og interne verktøy. HTTP Mode krever et offentlig HTTPS-endepunkt som Slack sender hendelser til med POST – nødvendig for produksjonsapper og installasjoner i flere arbeidsområder.

# 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')

Initialisere appen og starte Socket Mode

Den minimale Slack Bolt-appen i Socket Mode gjør følgende: oppretter App, registrerer minst én behandler og starter deretter SocketModeHandler. Behandleren kobler til Slacks hendelsesinfrastruktur og forblir tilkoblet til du stopper prosessen.

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 killed

Teste med ngrok (HTTP Mode)

Under utvikling med HTTP Mode kan du bruke ngrok til å gjøre den lokale serveren din tilgjengelig på internett. Kjør ngrok http 3000 for å få en offentlig HTTPS-URL, og oppdater deretter URL-ene for Event Subscriptions og Slash Commands i Slack-appen slik at de peker til den.

# 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 Slack

Token på appnivå for Socket Mode

Socket Mode krever et ekstra App-Level Token (starter med xapp-) med omfanget connections:write. Dette er separat fra Bot Token. Generer det i innstillingene for Slack-appen under 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-mellomvare

Bolt støtter mellomvare – funksjoner som kjøres før hver hendelsesbehandler. Bruk mellomvare til logging, autentisering, hastighetsbegrensning eller for å berike hendelser med brukerdata. Kall next() for å overføre kontrollen til neste mellomvare eller behandler.

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')

Feilhåndtering i Bolt

Registrer en global feilhåndterer med @app.error for å fange opp ubehandlede unntak fra hendelsesbehandlerne dine. Dette hindrer appen i å krasje og gjør det mulig å logge feil, varsle en overvåkingskanal eller sende en feilmelding tilbake til brukeren.

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')

Bruke Slack Web API-klienten

Med egenskapen app.client får du direkte tilgang til Slack Web API for operasjoner som ikke dekkes av hendelsesbehandlerne. Bruk den til å publisere meldinger, laste opp filer, invitere brukere til kanaler eller hente kanalhistorikk programmatisk.

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']

Sjekkliste for oppsett

Før Slack-boten din tas i bruk, bør du gå gjennom denne sjekklisten for å kontrollere at den er riktig konfigurert:

  • Bot Token og Signing Secret i miljøvariabler
  • Nødvendige omfang lagt til i Slack App-kontrollpanelet
  • Hendelsesabonnement aktivert (app_mention, message.im osv.)
  • Socket Mode aktivert (eller offentlig URL angitt for HTTP Mode)
  • Appen installert i arbeidsområdet ditt (OAuth-flyten er fullført)
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()

Hurtigsjekk: Socket Mode kontra HTTP Mode

Test forståelsen din av distribusjonsmodusene i Slack Bolt.

Oppsummering av grunnleggende Slack Bolt

Du har grunnlaget for å bygge Slack-boter med Bolt:

  • App(token, signing_secret) – initialiserer Bolt-appen med legitimasjon fra miljøvariabler
  • Bot Token (xoxb-) for API-kall; App-Level Token (xapp-) for Socket Mode
  • Socket Mode – WebSocket, ingen offentlig URL, godt egnet for utvikling og interne verktøy
  • HTTP Mode – offentlig HTTPS-endepunkt, nødvendig for produksjonsapper og apper i flere arbeidsområder
  • Omfang – konfigureres i Slack App-kontrollpanelet; legg bare til det du trenger
  • Mellomvare og @app.error – for logging, validering og feilhåndtering
Gratis å komme i gang

Lær deg AI-agenter med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
60
Leksjoner
239

Ofte stilte spørsmål

Er leksjonen «Grunnleggende om Slack Bolt SDK» gratis?

Ja – hele teksten i «Grunnleggende om Slack Bolt SDK» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Grunnleggende om Slack Bolt SDK»?

Initialisering av apper, bot-tokener, socket-modus kontra HTTP og hendelsesabonnementer. Du øver på AI-agenter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AI-agenter?

Ingen tidligere erfaring er nødvendig. AI-agenter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Grunnleggende om Slack Bolt SDK»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AI-agenter-leksjonen?

Ja. Alle AI-agenter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om Slack Bolt SDK
  2. Lytte etter hendelser og skråstrekkommandoer
  3. Sende meldinger og innholdsrike blokker
  4. Bygge en bot for teamvarsler
← Tilbake til AI-agenter