Slack Bolt SDK Temelleri
Uygulama başlatma, bot belirteçleri, yuva modu ve HTTP karşılaştırması ve etkinlik abonelikleri.
Slack Bolt SDK Temelleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Ajan Geliştirme için Neden Slack Bolt?
Slack Bolt, Slack uygulamaları oluşturmak için kullanılan resmi Python SDK'sıdır. OAuth'u, olay yönlendirmesini, ara katman yazılımını ve istek/yanıt yaşam döngüsünü yönetir; böylece ajanınız HTTP altyapısı yerine iş mantığına odaklanır. Bolt hem Soket Modu'nu (WebSocket) hem de HTTP Modu'nu destekler.
# 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 Belirteci ve İmzalama Gizli Anahtarı
Bir Slack uygulamasının iki kimlik bilgisine ihtiyacı vardır: API çağrıları yapmak ve mesaj göndermek için kullanılan, xoxb- ile başlayan bir Bot Belirteci ve gelen olayların gerçekten Slack'ten geldiğini doğrulamak için kullanılan bir İmzalama Gizli Anahtarı. Her ikisini de Slack uygulaması ayarları panosunda bulabilirsiniz.
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]}...')Gerekli Bot Belirteci Kapsamları
Slack uygulamaları, botun neler yapabileceğini belirlemek için OAuth kapsamlarını kullanır. Kapsamları Slack Uygulaması panosunda OAuth ve İzinler → Kapsamlar → Bot Belirteci Kapsamları bölümünden ekleyin. Yapay zekâ ajanı botu için yaygın kapsamlar şunlardır:
chat:write— mesaj göndermeapp_mentions:read— @mentions almachannels:history— kanal mesajlarını okumacommands— eğik çizgi komutlarını almaim:write— doğrudan mesaj gönderme
# 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')Soket Modu ve HTTP Modu Karşılaştırması
Soket Modu, kalıcı bir WebSocket bağlantısı üzerinden Slack'e bağlanır; herkese açık bir URL gerektirmez ve geliştirme ile dahili araçlar için idealdir. HTTP Modu, Slack'in olayları POST ettiği herkese açık bir HTTPS uç noktası gerektirir; üretim uygulamaları ve birden çok çalışma alanına yapılan kurulumlar için gereklidir.
# 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')Uygulamayı Başlatma ve Soket Modunu Çalıştırma
Soket Modundaki en temel Slack Bolt uygulaması: App'i oluşturun, en az bir işleyici kaydedin, ardından SocketModeHandler'ı başlatın. İşleyici, Slack'in olay altyapısına bağlanır ve işlemi siz durdurana kadar bağlantıda kalır.
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 killedngrok ile Sınama (HTTP Modu)
HTTP Modu ile geliştirme yaparken yerel sunucunuzu internete açmak için ngrok kullanın. Herkese açık bir HTTPS URL'si almak için ngrok http 3000 komutunu çalıştırın, ardından Slack uygulamanızın Olay Abonelikleri ve Eğik Çizgi Komutu URL'lerini bu URL'yi gösterecek şekilde güncelleyin.
# 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 SlackSoket Modu için Uygulama Düzeyi Belirteci
Soket Modu, connections:write kapsamına sahip ve xapp- ile başlayan ek bir Uygulama Düzeyi Belirteci gerektirir. Bu belirteç, Bot Belirteci'nden ayrıdır. Belirteci Slack Uygulaması ayarlarında Temel Bilgiler → Uygulama Düzeyi Belirteçleri bölümünden oluşturun.
# 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 Ara Katman Yazılımı
Bolt, her olay işleyicisinden önce çalışan işlevler olan ara katman yazılımını destekler. Ara katman yazılımını günlük kaydı, kimlik doğrulama, hız sınırlama veya olayları kullanıcı verileriyle zenginleştirme için kullanın. Denetimi sonraki ara katman yazılımına ya da işleyiciye aktarmak için next() çağrısını yapın.
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')Bolt'ta Hata Yönetimi
Olay işleyicilerinizdeki işlenmemiş istisnaları yakalamak için @app.error ile genel bir hata işleyicisi kaydedin. Bu, uygulamanın çökmesini önler ve hataları günlüğe kaydetmenize, bir izleme kanalını bilgilendirmenize veya kullanıcıya bir hata mesajı göndermenize olanak tanır.
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 İstemcisini Kullanma
app.client özelliği, olay işleyicilerinin kapsamadığı işlemler için Slack Web API'ye doğrudan erişim sağlar. Bu özelliği program aracılığıyla mesaj göndermek, dosya yüklemek, kullanıcıları kanallara davet etmek veya kanal geçmişini almak için kullanın.
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']Ortam Kurulumu Kontrol Listesi
Slack botunuz yayına alınmadan önce doğru yapılandırıldığından emin olmak için şu kurulum listesini gözden geçirin:
- Ortam değişkenlerinde Bot Belirteci ve İmzalama Gizli Anahtarı
- Slack Uygulaması panosuna eklenmiş gerekli kapsamlar
- Etkinleştirilmiş olay abonelikleri (app_mention, message.im vb.)
- Etkinleştirilmiş Soket Modu (veya HTTP Modu için ayarlanmış herkese açık URL)
- Çalışma alanınıza yüklenmiş uygulama (OAuth akışı tamamlandı)
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()Hızlı Kontrol: Soket Modu ve HTTP Modu
Slack Bolt'un dağıtım modları hakkındaki anlayışınızı sınayın.
Slack Bolt Temelleri Özeti
Bolt ile Slack botları oluşturmak için gereken temele sahipsiniz:
- App(token, signing_secret) — ortam değişkenlerindeki kimlik bilgileriyle Bolt uygulamasını başlatır
- API çağrıları için Bot Belirteci (
xoxb-); Soket Modu için Uygulama Düzeyi Belirteci (xapp-) - Soket Modu — WebSocket, herkese açık URL yok; geliştirme ve dahili araçlar için idealdir
- HTTP Modu — herkese açık HTTPS uç noktası; üretim ve birden çok çalışma alanına sahip uygulamalar için gereklidir
- Kapsamlar — Slack Uygulaması panosunda yapılandırılır; yalnızca ihtiyacınız olanları ekleyin
- Günlük kaydı, doğrulama ve hata yönetimi için ara katman yazılımı ve @app.error
Sıkça Sorulan Sorular
“Slack Bolt SDK Temelleri” dersi ücretsiz mi?
Evet — “Slack Bolt SDK Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Slack Bolt SDK Temelleri” dersinde ne öğreneceğim?
Uygulama başlatma, bot belirteçleri, yuva modu ve HTTP karşılaştırması ve etkinlik abonelikleri. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Slack Bolt SDK Temelleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Slack Bolt SDK Temelleri
- Etkinlikleri ve Eğik Çizgi Komutlarını Dinleme
- Mesaj ve Zengin Bloklar Gönderme
- Ekip Bildirim Botu Oluşturma