AI Agents · Aula

Fundamentos do Slack Bolt SDK

Inicialização do aplicativo, tokens do bot, modo de soquete versus HTTP e assinaturas de eventos.

Aula 1 de 413 etapas

Fundamentos do Slack Bolt SDK é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.

Por que usar o Slack Bolt no desenvolvimento de agentes?

O Slack Bolt é o SDK oficial do Python para criar aplicativos do Slack. Ele cuida da autenticação OAuth, do roteamento de eventos, do middleware e do ciclo de vida de solicitação/resposta — assim, seu agente se concentra na lógica de negócio, não nos detalhes de HTTP. O Bolt é compatível com o Socket Mode (WebSocket) e o modo 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 do bot e segredo de assinatura

Um aplicativo do Slack precisa de duas credenciais: um token do bot (começa com xoxb-) para fazer chamadas à API e publicar mensagens, e um segredo de assinatura para verificar se os eventos recebidos realmente vêm do Slack. Ambos estão disponíveis no painel de configurações do aplicativo do 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]}...')

Escopos obrigatórios do token do bot

Os aplicativos do Slack usam escopos OAuth para definir o que o bot pode fazer. Adicione os escopos no painel do aplicativo do Slack, em OAuth e permissões → Escopos → Escopos do token do bot. Escopos comuns para um bot agente de IA:

  • chat:write — publicar mensagens
  • app_mentions:read — receber @mentions
  • channels:history — ler mensagens dos canais
  • commands — receber comandos de barra
  • im:write — enviar mensagens diretas
# 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')

Modo Socket versus modo HTTP

O Socket Mode conecta-se ao Slack por meio de um WebSocket persistente — não é necessário um URL público, o que é ideal para desenvolvimento e ferramentas internas. O modo HTTP exige um endpoint HTTPS público para o qual o Slack envia eventos por POST — algo necessário para aplicativos em produção e instalações em vários espaços de trabalho.

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

Inicializando o aplicativo e iniciando o Socket Mode

O aplicativo mínimo do Slack Bolt no Socket Mode faz o seguinte: cria o App, registra pelo menos um manipulador e inicia o SocketModeHandler. O manipulador conecta-se à infraestrutura de eventos do Slack e permanece conectado até que você interrompa o processo.

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

Testando com ngrok (modo HTTP)

Durante o desenvolvimento com o modo HTTP, use o ngrok para expor seu servidor local à internet. Execute ngrok http 3000 para obter um URL HTTPS público e, em seguida, atualize os URLs de Assinaturas de eventos e Comandos de barra do aplicativo do Slack para apontarem para ele.

# 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 no nível do aplicativo para o Socket Mode

O Socket Mode exige um token adicional no nível do aplicativo (começa com xapp-) com o escopo connections:write. Ele é separado do token do bot. Gere-o nas configurações do aplicativo do Slack, em Informações básicas → Tokens no nível do aplicativo.

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

Middleware do Bolt

O Bolt é compatível com middleware — funções executadas antes de cada manipulador de eventos. Use middleware para registro, autenticação, limitação de taxa ou enriquecimento de eventos com dados do usuário. Chame next() para passar o controle ao próximo middleware ou manipulador.

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

Tratamento de erros no Bolt

Registre um manipulador global de erros com @app.error para capturar exceções não tratadas dos seus manipuladores de eventos. Isso impede que o aplicativo falhe e permite registrar erros, notificar um canal de monitoramento ou enviar uma mensagem de erro de volta ao usuário.

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

Usando o cliente da Web API do Slack

A propriedade app.client fornece acesso direto à Web API do Slack para qualquer operação não abrangida pelos manipuladores de eventos. Use-a para publicar mensagens, enviar arquivos, convidar usuários para canais ou recuperar o histórico dos canais programaticamente.

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

Lista de verificação da configuração do ambiente

Antes de colocar seu bot do Slack em funcionamento, percorra esta lista de verificação para garantir que tudo esteja configurado corretamente:

  • Token do bot e segredo de assinatura nas variáveis de ambiente
  • Escopos obrigatórios adicionados no painel do aplicativo do Slack
  • Assinaturas de eventos ativadas (app_mention, message.im etc.)
  • Socket Mode ativado (ou URL público definido para o modo HTTP)
  • Aplicativo instalado no seu espaço de trabalho (fluxo OAuth concluído)
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()

Verificação rápida: Socket Mode versus modo HTTP

Teste sua compreensão dos modos de implantação do Slack Bolt.

Revisão dos fundamentos do Slack Bolt

Você tem a base necessária para criar bots do Slack com o Bolt:

  • App(token, signing_secret) — inicializa o aplicativo Bolt com credenciais das variáveis de ambiente
  • Token do bot (xoxb-) para chamadas à API; token no nível do aplicativo (xapp-) para o Socket Mode
  • Socket Mode — WebSocket, sem URL público, excelente para desenvolvimento e ferramentas internas
  • Modo HTTP — endpoint HTTPS público, obrigatório para aplicativos em produção ou em vários espaços de trabalho
  • Escopos — configurados no painel do aplicativo do Slack; adicione apenas os necessários
  • Middleware e @app.error — para registro, validação e tratamento de erros
Grátis para começar

Aprenda AI Agents com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
60
Aulas
239

Perguntas Frequentes

A aula “Fundamentos do Slack Bolt SDK” é grátis?

Sim — o texto completo de “Fundamentos do Slack Bolt SDK” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.

O que vou aprender em “Fundamentos do Slack Bolt SDK”?

Inicialização do aplicativo, tokens do bot, modo de soquete versus HTTP e assinaturas de eventos. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Agents?

Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Fundamentos do Slack Bolt SDK”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Agents?

Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do Slack Bolt SDK
  2. Ouvindo eventos e comandos de barra
  3. Enviando mensagens e blocos avançados
  4. Criando um bot de notificações para equipes
← Voltar para AI Agents