Slack Bolt SDK:n perusteet
Sovelluksen alustus, bottitokenit, socket mode verrattuna HTTP:hen ja tapahtumatilaukset
Slack Bolt SDK:n perusteet on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.
Miksi Slack Bolt sopii agenttien kehittämiseen?
Slack Bolt on virallinen Python SDK Slack-sovellusten rakentamiseen. Se huolehtii OAuthista, tapahtumien reitityksestä, middleware-käsittelystä ja pyyntöjen ja vastausten elinkaaresta, joten agentti voi keskittyä liiketoimintalogiikkaan HTTP-toteutuksen sijaan. Bolt tukee sekä Socket Modea (WebSocket) että HTTP Modea.
# 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 ja Signing Secret
Slack-sovellus tarvitsee kaksi tunnistetietoa: Bot Tokenin (alkaa merkkijonolla xoxb-) API-kutsujen tekemiseen ja viestien lähettämiseen sekä Signing Secretin sen varmistamiseen, että saapuvat tapahtumat todella tulevat Slackista. Molemmat löytyvät Slack-sovelluksen asetusten hallintapaneelista.
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]}...')Vaaditut Bot Token -scopet
Slack-sovellukset käyttävät OAuth-scopeja määrittämään, mitä botti voi tehdä. Lisätkää scopet Slack App -hallintapaneelissa kohdassa OAuth & Permissions → Scopes → Bot Token Scopes. Yleisiä scopeja tekoälyagenttibotille ovat:
chat:write— viestien lähettämiseenapp_mentions:read— @mainintojen vastaanottamiseenchannels:history— kanavaviestien lukemiseencommands— vinokomentojen vastaanottamiseenim:write— suorien viestien lähettämiseen
# 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 vai HTTP Mode
Socket Mode muodostaa yhteyden Slackiin pysyvän WebSocket-yhteyden kautta. Julkista URL-osoitetta ei tarvita, joten se sopii erinomaisesti kehitykseen ja sisäisiin työkaluihin. HTTP Mode edellyttää julkista HTTPS-päätepistettä, johon Slack lähettää tapahtumat POST-pyynnöillä. Sitä tarvitaan tuotantosovelluksissa ja usean työtilan asennuksissa.
# 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')Sovelluksen alustaminen ja Socket Moden käynnistäminen
Socket Modessa toimiva Slack Bolt -sovellus on vähimmillään tällainen: luokaa App, rekisteröikää vähintään yksi käsittelijä ja käynnistäkää sitten SocketModeHandler. Käsittelijä yhdistää sovelluksen Slackin tapahtumainfrastruktuuriin ja pysyy yhteydessä, kunnes pysäytätte prosessin.
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 killedTestaaminen ngrokilla (HTTP Mode)
Käyttäkää HTTP Mode -kehityksessä ngrokia paikallisen palvelimen julkaisemiseen internetiin. Suorittakaa ngrok http 3000 saadaksenne julkisen HTTPS-URL-osoitteen ja päivittäkää sitten Slack-sovelluksen Event Subscriptions- ja Slash Command URLs -asetukset osoittamaan siihen.
# 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 Socket Modea varten
Socket Mode edellyttää lisäksi App-Level Tokenia (alkaa merkkijonolla xapp-), jolla on scope connections:write. Tämä tunniste on erillinen Bot Tokenista. Luokaa se Slack App -asetuksissa kohdassa 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 tukee middlewarea eli funktioita, jotka suoritetaan ennen jokaista tapahtumankäsittelijää. Käyttäkää middlewarea lokitukseen, todentamiseen, nopeusrajoitukseen tai tapahtumien täydentämiseen käyttäjätiedoilla. Kutsukaa next()-funktiota siirtääksenne ohjauksen seuraavalle middlewaren käsittelijälle tai tapahtumankäsittelijälle.
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')Virheenkäsittely Boltissa
Rekisteröikää yleinen virheenkäsittelijä kohteella @app.error, jotta se ottaa kiinni tapahtumankäsittelijöistä tulevat käsittelemättömät poikkeukset. Näin sovellus ei kaadu, ja voitte kirjata virheet, ilmoittaa valvontakanavalle tai lähettää virheilmoituksen takaisin käyttäjälle.
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')Slack Web API -asiakasohjelman käyttäminen
Ominaisuus app.client tarjoaa suoran pääsyn Slack Web APIin kaikkiin toimintoihin, joita tapahtumankäsittelijät eivät kata. Käyttäkää sitä viestien lähettämiseen, tiedostojen lataamiseen, käyttäjien kutsumiseen kanaville tai kanavahistorian hakemiseen ohjelmallisesti.
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']Käyttöönoton tarkistuslista
Ennen kuin Slack-bottinne otetaan käyttöön, käykää tämä tarkistuslista läpi varmistaaksenne, että kaikki on määritetty oikein:
- Bot Token ja Signing Secret on määritetty ympäristömuuttujiin
- Vaaditut scopet on lisätty Slack App -hallintapaneelissa
- Tapahtumatilaukset on otettu käyttöön (app_mention, message.im jne.)
- Socket Mode on otettu käyttöön (tai HTTP Modea varten on määritetty julkinen URL-osoite)
- Sovellus on asennettu työtilaanne (OAuth-prosessi on suoritettu loppuun)
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()Pikatarkistus: Socket Mode vai HTTP Mode
Testatkaa Slack Bolt -käyttöönottotilojen tuntemustanne.
Slack Bolt -perusteiden yhteenveto
Teillä on nyt perusta Slack-bottien rakentamiseen Boltilla:
- App(token, signing_secret) — alustaa Bolt-sovelluksen ympäristömuuttujista saatavilla tunnistetiedoilla
- Bot Token (
xoxb-) API-kutsuja varten ja App-Level Token (xapp-) Socket Modea varten - Socket Mode — WebSocket-yhteys, ei julkista URL-osoitetta, sopii erinomaisesti kehitykseen ja sisäisiin työkaluihin
- HTTP Mode — julkinen HTTPS-päätepiste, jota tuotanto- ja usean työtilan sovellukset edellyttävät
- Scopet — määritetään Slack App -hallintapaneelissa; lisätkää vain tarvitsemanne
- Middleware ja @app.error — lokitukseen, validointiin ja virheenkäsittelyyn
Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 60
- Oppitunnit
- 239
Usein kysytyt kysymykset
Onko oppitunti ”Slack Bolt SDK:n perusteet” ilmainen?
Kyllä – oppitunnin ”Slack Bolt SDK:n perusteet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Slack Bolt SDK:n perusteet”?
Sovelluksen alustus, bottitokenit, socket mode verrattuna HTTP:hen ja tapahtumatilaukset Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Slack Bolt SDK:n perusteet”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?
Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Slack Bolt SDK:n perusteet
- Tapahtumien ja slash-komentojen kuuntelu
- Viestien ja rich blockien lähettäminen
- Tiimin ilmoitusbotin rakentaminen