0Pricing
AI Agents · บทเรียน

พื้นฐาน Slack Bolt SDK

การเริ่มต้นแอป โทเค็นบอต โหมดซ็อกเก็ตเทียบกับ HTTP และการสมัครรับเหตุการณ์

พื้นฐาน Slack Bolt SDK เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงใช้ Slack Bolt สำหรับการพัฒนาเอเจนต์

Slack Bolt คือ Python SDK อย่างเป็นทางการสำหรับสร้างแอป Slack โดยจัดการการตรวจสอบสิทธิ์ OAuth การกำหนดเส้นทางเหตุการณ์ มิดเดิลแวร์ และวงจรชีวิตของคำขอ/การตอบกลับให้ คุณจึงมุ่งเน้นที่ตรรกะทางธุรกิจของเอเจนต์ได้ โดยไม่ต้องจัดการรายละเอียดการเชื่อมต่อ HTTP Bolt รองรับทั้งโหมด Socket (WebSocket) และโหมด 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')

โทเค็นบอตและรหัสลับสำหรับลงนาม

แอป Slack ต้องใช้ข้อมูลรับรองสองรายการ ได้แก่ โทเค็นบอต (ขึ้นต้นด้วย xoxb-) สำหรับเรียก API และโพสต์ข้อความ และรหัสลับสำหรับลงนามเพื่อตรวจสอบว่าเหตุการณ์ขาเข้ามาจาก Slack จริง ข้อมูลทั้งสองรายการอยู่ในแดชบอร์ดการตั้งค่าแอป 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]}...')

ขอบเขตสิทธิ์ที่จำเป็นของโทเค็นบอต

แอป Slack ใช้ขอบเขตสิทธิ์ OAuth เพื่อกำหนดว่าบอตทำอะไรได้บ้าง เพิ่มขอบเขตสิทธิ์ในแดชบอร์ดแอป Slack ที่ OAuth และสิทธิ์ → ขอบเขตสิทธิ์ → ขอบเขตสิทธิ์ของโทเค็นบอต ขอบเขตสิทธิ์ทั่วไปสำหรับบอตเอเจนต์ AI มีดังนี้:

  • chat:write — โพสต์ข้อความ
  • app_mentions:read — รับ @mentions
  • channels:history — อ่านข้อความในช่อง
  • commands — รับคำสั่งแบบ slash
  • im:write — ส่งข้อความส่วนตัว
# 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 เทียบกับโหมด HTTP

โหมด Socket เชื่อมต่อกับ Slack ผ่าน WebSocket แบบคงอยู่ตลอดเวลา จึงไม่ต้องใช้ URL สาธารณะและเหมาะอย่างยิ่งสำหรับการพัฒนาและเครื่องมือภายใน ส่วนโหมด HTTPต้องใช้ปลายทาง HTTPS สาธารณะที่ Slack จะส่งเหตุการณ์แบบ POST ไปให้ ซึ่งจำเป็นสำหรับแอปที่ใช้งานจริงและการติดตั้งในหลายพื้นที่ทำงาน

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

การเริ่มต้นแอปและเปิดใช้โหมด Socket

แอป Slack Bolt ขั้นต่ำในโหมด Socket มีขั้นตอนดังนี้: สร้าง App ลงทะเบียนตัวจัดการอย่างน้อยหนึ่งรายการ แล้วเริ่ม SocketModeHandler ตัวจัดการจะเชื่อมต่อกับโครงสร้างพื้นฐานเหตุการณ์ของ Slack และคงการเชื่อมต่อไว้จนกว่าคุณจะหยุดกระบวนการ

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

การทดสอบด้วย ngrok (โหมด HTTP)

ระหว่างการพัฒนาด้วยโหมด HTTP ให้ใช้ ngrok เพื่อเปิดเผยเซิร์ฟเวอร์ภายในเครื่องสู่อินเทอร์เน็ต เรียกใช้ ngrok http 3000 เพื่อรับ URL HTTPS สาธารณะ จากนั้นอัปเดต URL การสมัครรับเหตุการณ์และคำสั่งแบบ slash ของแอป Slack ให้ชี้ไปยัง 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 Slack

โทเค็นระดับแอปสำหรับโหมด Socket

โหมด Socket ต้องใช้โทเค็นระดับแอปเพิ่มเติม (ขึ้นต้นด้วย xapp-) พร้อมขอบเขตสิทธิ์ connections:write โทเค็นนี้แยกต่างหากจากโทเค็นบอต สร้างโทเค็นได้ในการตั้งค่าแอป Slack ที่ ข้อมูลพื้นฐาน → โทเค็นระดับแอป

# 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

Bolt รองรับมิดเดิลแวร์ ซึ่งเป็นฟังก์ชันที่ทำงานก่อนตัวจัดการเหตุการณ์ทุกตัว ใช้มิดเดิลแวร์สำหรับการบันทึก การตรวจสอบสิทธิ์ การจำกัดอัตรา หรือการเพิ่มข้อมูลผู้ใช้ให้เหตุการณ์ เรียกใช้ next() เพื่อส่งต่อการควบคุมไปยังมิดเดิลแวร์หรือตัวจัดการถัดไป

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

ลงทะเบียนตัวจัดการข้อผิดพลาดส่วนกลางด้วย @app.error เพื่อดักจับข้อยกเว้นที่ไม่ได้จัดการจากตัวจัดการเหตุการณ์ วิธีนี้ป้องกันไม่ให้แอปหยุดทำงาน และช่วยให้คุณบันทึกข้อผิดพลาด แจ้งช่องตรวจสอบระบบ หรือส่งข้อความข้อผิดพลาดกลับไปยังผู้ใช้ได้

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

พร็อพเพอร์ตี app.client ให้สิทธิ์เข้าถึง Slack Web API โดยตรงสำหรับการดำเนินการที่ตัวจัดการเหตุการณ์ไม่ครอบคลุม ใช้เพื่อโพสต์ข้อความ อัปโหลดไฟล์ เชิญผู้ใช้เข้าช่อง หรือดึงประวัติช่องด้วยโปรแกรม

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

รายการตรวจสอบการตั้งค่าสภาพแวดล้อม

ก่อนเปิดใช้งานบอต Slack ให้ดำเนินการตามรายการตรวจสอบการตั้งค่านี้เพื่อให้แน่ใจว่ากำหนดค่าอย่างถูกต้อง:

  • ตั้งค่าโทเค็นบอตและรหัสลับสำหรับลงนามในตัวแปรสภาพแวดล้อม
  • เพิ่มขอบเขตสิทธิ์ที่จำเป็นในแดชบอร์ดแอป Slack
  • เปิดใช้การสมัครรับเหตุการณ์ (app_mention, message.im และอื่น ๆ)
  • เปิดใช้โหมด Socket (หรือตั้งค่า URL สาธารณะสำหรับโหมด HTTP)
  • ติดตั้งแอปในพื้นที่ทำงานของคุณแล้ว (ดำเนินขั้นตอน OAuth เสร็จสมบูรณ์)
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()

ตรวจสอบความเข้าใจอย่างรวดเร็ว: โหมด Socket เทียบกับโหมด HTTP

ทดสอบความเข้าใจเกี่ยวกับโหมดการปรับใช้ของ Slack Bolt

สรุปพื้นฐาน Slack Bolt

คุณมีพื้นฐานสำหรับการสร้างบอต Slack ด้วย Bolt แล้ว:

  • App(token, signing_secret) — เริ่มต้นแอป Bolt ด้วยข้อมูลรับรองจากตัวแปรสภาพแวดล้อม
  • โทเค็นบอต (xoxb-) สำหรับเรียก API และโทเค็นระดับแอป (xapp-) สำหรับโหมด Socket
  • โหมด Socket — ใช้ WebSocket ไม่ต้องมี URL สาธารณะ เหมาะสำหรับการพัฒนาและเครื่องมือภายใน
  • โหมด HTTP — ใช้ปลายทาง HTTPS สาธารณะ จำเป็นสำหรับแอปที่ใช้งานจริงหรือแอปที่รองรับหลายพื้นที่ทำงาน
  • ขอบเขตสิทธิ์ — กำหนดค่าในแดชบอร์ดแอป Slack และเพิ่มเฉพาะสิ่งที่จำเป็น
  • มิดเดิลแวร์ และ @app.error — ใช้สำหรับการบันทึก การตรวจสอบความถูกต้อง และการจัดการข้อผิดพลาด

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน Slack Bolt SDK” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน Slack Bolt SDK” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน Slack Bolt SDK”

การเริ่มต้นแอป โทเค็นบอต โหมดซ็อกเก็ตเทียบกับ HTTP และการสมัครรับเหตุการณ์ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐาน Slack Bolt SDK” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Slack Bolt SDK
  2. การรับฟังเหตุการณ์และคำสั่งแบบเฉือน
  3. การส่งข้อความและบล็อกแบบ Rich
  4. การสร้างบอตแจ้งเตือนทีม
← กลับไปที่ AI Agents