Разработка AI-чат-бота с интеграцией в Slack
Slack — корпоративный мессенджер с богатым API для ботов. Основные применения: внутренние корпоративные боты, DevOps-автоматизация, helpdesk, уведомления систем мониторинга.
Slack Bot API: архитектура
Slack предлагает два режима работы:
- Socket Mode: WebSocket-соединение, бот не требует публичного HTTPS-эндпоинта. Идеально для разработки и внутренних инструментов
- HTTP Mode (Events API): Webhook на публичный URL. Для production
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
app = App(token=SLACK_BOT_TOKEN)
@app.message()
def handle_message(message, say):
user_input = message["text"]
response = ai_bot.process(user_input, user_id=message["user"])
say(response)
@app.command("/ask")
def handle_slash_command(ack, say, command):
ack() # подтвердить получение за 3 секунды
response = ai_bot.process(command["text"])
say(response)
SocketModeHandler(app, SLACK_APP_TOKEN).start()
Rich UI в Slack: Block Kit
Slack Block Kit — мощный конструктор интерфейсов: секции, кнопки, выпадающие списки, модальные окна, формы:
blocks = [
{
"type": "section",
"text": {"type": "mrkdwn", "text": f"*Результат анализа:*\n{analysis}"}
},
{
"type": "actions",
"elements": [
{"type": "button", "text": {"type": "plain_text", "text": "Принять"}, "value": "accept"},
{"type": "button", "text": {"type": "plain_text", "text": "Переделать"}, "value": "redo"},
]
}
]
say(blocks=blocks)
Типовые применения Slack-бота
DevOps: уведомления о деплоях, алерты мониторинга, запуск пайплайнов командой /deploy prod
HR/IT helpdesk: интеграция с Jira Service Management — создание тикетов из Slack, статус, назначение
Аналитика: /report weekly → бот генерирует отчёт по данным из БД, отправляет в канал
AI-ассистент: бот в канале отвечает на вопросы по документации (RAG по Confluence/Notion)
Permissions и OAuth
Slack требует явного перечисления scopes при установке приложения. Минимальный набор для бота: chat:write, app_mentions:read, im:history, commands. Slash-команды регистрируются в настройках приложения Slack.







