0Pricing
AI Agents · Pelajaran

Dasar-Dasar Slack Bolt SDK

Inisialisasi aplikasi, token bot, mode socket dibandingkan HTTP, dan langganan acara.

Dasar-Dasar Slack Bolt SDK adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Mengapa Menggunakan Slack Bolt untuk Pengembangan Agen?

Slack Bolt adalah SDK Python resmi untuk membuat aplikasi Slack. Slack Bolt menangani OAuth, perutean kejadian, perangkat perantara, serta siklus hidup permintaan/respons—sehingga agen Anda dapat berfokus pada logika bisnis, bukan detail teknis HTTP. Bolt mendukung Socket Mode (WebSocket) dan Mode HTTP.

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

Token Bot dan Rahasia Penandatanganan

Aplikasi Slack memerlukan dua kredensial: token bot (diawali xoxb-) untuk melakukan panggilan API dan mengirim pesan, serta rahasia penandatanganan untuk memverifikasi bahwa kejadian yang masuk benar-benar berasal dari Slack. Keduanya dapat ditemukan di dasbor setelan aplikasi 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]}...')

Cakupan Token Bot yang Diperlukan

Aplikasi Slack menggunakan cakupan OAuth untuk menentukan hal-hal yang dapat dilakukan bot. Tambahkan cakupan di dasbor Slack App melalui OAuth & Izin → Cakupan → Cakupan Token Bot. Cakupan umum untuk bot agen AI:

  • chat:write — mengirim pesan
  • app_mentions:read — menerima @mentions
  • channels:history — membaca pesan kanal
  • commands — menerima perintah garis miring
  • im:write — mengirim pesan langsung
# 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')

Mode Socket vs Mode HTTP

Socket Mode terhubung ke Slack melalui WebSocket yang terus aktif—tidak memerlukan URL publik, sehingga sangat cocok untuk pengembangan dan alat internal. HTTP Mode memerlukan titik akhir HTTPS publik yang menerima kiriman kejadian dari Slack—hal ini diperlukan untuk aplikasi produksi dan pemasangan di banyak ruang kerja.

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

Menginisialisasi Aplikasi dan Menjalankan Socket Mode

Aplikasi Slack Bolt minimal dalam Socket Mode: buat App, daftarkan setidaknya satu penangan, lalu jalankan SocketModeHandler. Penangan tersebut terhubung ke infrastruktur kejadian Slack dan tetap terhubung hingga Anda menghentikan prosesnya.

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

Menguji dengan ngrok (Mode HTTP)

Selama pengembangan dengan Mode HTTP, gunakan ngrok untuk mengekspos server lokal Anda ke internet. Jalankan ngrok http 3000 untuk mendapatkan URL HTTPS publik, lalu perbarui URL Langganan Kejadian dan Perintah Garis Miring pada aplikasi Slack agar mengarah ke URL tersebut.

# 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 Tingkat Aplikasi untuk Socket Mode

Socket Mode memerlukan token tingkat aplikasi tambahan (diawali xapp-) dengan cakupan connections:write. Token ini terpisah dari token bot. Buat token tersebut di setelan aplikasi Slack melalui Informasi Dasar → Token Tingkat Aplikasi.

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

Perangkat Perantara Bolt

Bolt mendukung perangkat perantara—fungsi yang berjalan sebelum setiap penangan kejadian. Gunakan perangkat perantara untuk pencatatan, autentikasi, pembatasan laju, atau melengkapi kejadian dengan data pengguna. Panggil next() untuk meneruskan kendali ke perangkat perantara atau penangan berikutnya.

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

Penanganan Kesalahan di Bolt

Daftarkan penangan kesalahan global dengan @app.error untuk menangkap pengecualian yang tidak tertangani dari penangan kejadian Anda. Hal ini mencegah aplikasi mogok dan memungkinkan Anda mencatat kesalahan, memberi tahu kanal pemantauan, atau mengirim pesan kesalahan kembali kepada pengguna.

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

Menggunakan Klien Slack Web API

Properti app.client memberikan akses langsung ke Slack Web API untuk operasi apa pun yang tidak ditangani oleh penangan kejadian. Gunakan properti ini untuk mengirim pesan, mengunggah berkas, mengundang pengguna ke kanal, atau mengambil riwayat kanal secara terprogram.

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

Daftar Periksa Penyiapan Lingkungan

Sebelum bot Slack Anda digunakan, lakukan pemeriksaan berikut untuk memastikan konfigurasinya benar:

  • Token bot dan rahasia penandatanganan tersedia dalam variabel lingkungan
  • Cakupan yang diperlukan telah ditambahkan di dasbor Slack App
  • Langganan kejadian diaktifkan (app_mention, message.im, dan sebagainya)
  • Socket Mode diaktifkan (atau URL publik ditetapkan untuk Mode HTTP)
  • Aplikasi telah dipasang di ruang kerja Anda (alur OAuth selesai)
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()

Cek Singkat: Mode Socket vs Mode HTTP

Uji pemahaman Anda tentang mode penerapan Slack Bolt.

Rangkuman Dasar-Dasar Slack Bolt

Anda telah memiliki dasar untuk membuat bot Slack dengan Bolt:

  • App(token, signing_secret) — menginisialisasi aplikasi Bolt dengan kredensial dari variabel lingkungan
  • Token Bot (xoxb-) untuk panggilan API; Token Tingkat Aplikasi (xapp-) untuk Socket Mode
  • Socket Mode — WebSocket, tanpa URL publik, sangat cocok untuk pengembangan dan alat internal
  • Mode HTTP — titik akhir HTTPS publik, diperlukan untuk aplikasi produksi atau banyak ruang kerja
  • Cakupan — dikonfigurasi di dasbor Slack App; tambahkan hanya yang diperlukan
  • Perangkat Perantara dan @app.error — untuk pencatatan, validasi, dan penanganan kesalahan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar-Dasar Slack Bolt SDK” gratis?

Ya — teks lengkap “Dasar-Dasar Slack Bolt SDK” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Dasar-Dasar Slack Bolt SDK”?

Inisialisasi aplikasi, token bot, mode socket dibandingkan HTTP, dan langganan acara. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Agents?

Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Dasar-Dasar Slack Bolt SDK” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?

Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar Slack Bolt SDK
  2. Menyimak Acara dan Perintah Slash
  3. Mengirim Pesan dan Blok Kaya
  4. Membangun Bot Notifikasi Tim
← Kembali ke AI Agents