Slack API
Slack API — это совокупность программных интерфейсов (API) и инструментов, предоставляемых платформой корпоративной коммуникации Slack (компания Slack Technologies, LLC, входит в состав Salesforce), которые позволяют сторонним разработчикам интегрировать внешние приложения, сервисы и ботов с рабочими пространствами Slack. API обеспечивает программное взаимодействие с функциями платформы, включая отправку и получение сообщений, управление каналами, пользователями и файлами, а также автоматизацию рабочих процессов.
История и развитие
Первая версия Slack API была запущена одновременно с публичным релизом самого Slack в августе 2013 года. Изначально API был ориентирован на простые интеграции (Incoming Webhooks) и позволял только отправлять сообщения в каналы из внешних систем. По мере роста популярности платформы функциональность API расширялась.
В 2014 году был представлен Real Time Messaging API (RTM API), который позволял создавать ботов, работающих в режиме реального времени через WebSocket-соединения. В 2015 году появились Slash Commands (слеш-команды) и Interactive Components (интерактивные компоненты), что дало возможность создавать более сложные диалоговые интерфейсы.
Ключевым этапом стал 2018 год, когда Slack анонсировал новую платформу приложений (Slack App Platform) и представил Events API — современную альтернативу RTM API, основанную на HTTP-запросах и вебхуках. В 2021 году, после приобретения Slack компанией Salesforce, API начал активнее интегрироваться с экосистемой Salesforce Customer 360.
В 2023—2024 годах Slack активно развивает Slack CLI (Command Line Interface) и Deno Slack SDK, смещая фокус с традиционных серверных приложений на бессерверные (Serverless) функции, работающие в облачной инфраструктуре Slack (Slack Hosted Apps).
Архитектура и основные компоненты
Slack API построен на архитектуре RESTful и предоставляет несколько ключевых механизмов взаимодействия.
Web API
Набор REST-эндпоинтов (более 200), доступных по протоколу HTTPS. Используется для выполнения операций по запросу: создание каналов (conversations.create), отправка сообщений (chat.postMessage), получение списка пользователей (users.list), загрузка файлов (files.upload). Все запросы требуют аутентификации с помощью токенов (Bot Token, User Token).
Events API
Асинхронный механизм, который позволяет приложению получать уведомления о событиях, происходящих в рабочем пространстве Slack (например, новое сообщение в канале, добавление пользователя, изменение реакции). События отправляются на заранее настроенный URL (Request URL) приложения в формате JSON через POST-запросы. Для подтверждения подлинности запросов используется верификация подписей (Signing Secret). Events API заменил устаревший RTM API, который требовал постоянного WebSocket-соединения и не поддерживал все типы событий.
Slash Commands
Пользователь вводит в поле сообщения команду, начинающуюся с косой черты (например, /poll, /giphy). Slack отправляет HTTP-запрос на указанный URL приложения, передавая параметры команды. Приложение может ответить сообщением в канал или открыть модальное окно. Slash Commands являются одним из самых распространённых способов взаимодействия пользователей с интеграциями.
Interactive Components
Позволяют добавлять в сообщения Slack интерактивные элементы: кнопки, выпадающие списки (Select Menus), датапикеры, переключатели (Checkboxes). Когда пользователь взаимодействует с таким элементом, Slack отправляет запрос с данными о действии на URL приложения. Это позволяет создавать многошаговые диалоги, опросы и формы без переключения контекста.
Workflow Builder и Functions
В 2021 году Slack представил Workflow Builder — инструмент для создания автоматизированных сценариев без кода. В 2023 году была добавлена возможность расширения Workflow Builder с помощью Custom Functions (пользовательских функций), написанных на Deno. Эти функции могут вызывать внешние API, выполнять бизнес-логику и возвращать результаты обратно в воркфлоу.
Slack Connect API
Отдельный набор API для управления каналами Slack Connect, которые объединяют участников из разных организаций. Позволяет программно отправлять приглашения, управлять общими каналами и настраивать политики безопасности для межорганизационного взаимодействия.
Типы приложений и аутентификация
Slack API поддерживает несколько архитектурных моделей приложений:
- Classic Apps — традиционные приложения, работающие на собственном сервере разработчика. Используют Bot Token (начинается с
xoxb-) для аутентификации. - Slack Hosted Apps (с 2023 года) — приложения, код которых выполняется в бессерверной среде Slack на платформе Deno. Разработчик не управляет инфраструктурой; Slack автоматически масштабирует выполнение кода. Для создания таких приложений используется Slack CLI.
- Granular Scopes (OAuth 2.0) — все приложения используют протокол OAuth 2.0 для запроса разрешений (scopes). Разрешения делятся на Bot Token Scopes (действия от имени бота) и User Token Scopes (действия от имени конкретного пользователя). Пользователь или администратор рабочего пространства должен одобрить запрашиваемые разрешения при установке приложения.
Протоколы и форматы данных
- Протокол: HTTPS для REST API и Events API; WebSocket (для устаревшего RTM API и некоторых внутренних функций Slack Hosted Apps).
- Формат данных: JSON. Для отправки сообщений используется специальный формат Block Kit — структурированный JSON, описывающий визуальные блоки (текст, изображения, кнопки, разделители, секции). Block Kit позволяет создавать богатые, адаптивные сообщения, которые корректно отображаются на всех устройствах (десктоп, мобильные приложения, веб-клиент).
- Лимиты: Slack API имеет строгие ограничения на частоту запросов (Rate Limiting). Для большинства эндпоинтов действует лимит «1 запрос в секунду на метод на всё рабочее пространство» (Tier 3). Для операций с сообщениями и реакциями лимиты более жёсткие. Превышение лимита приводит к возврату HTTP-статуса
429 Too Many Requests.
Примеры использования
- DevOps-интеграции: автоматическое уведомление о сборках (Jenkins, GitHub Actions, GitLab CI/CD), мониторинг инцидентов (PagerDuty, Prometheus), деплой приложений через слеш-команды.
- CRM и продажи: создание лидов и обновление сделок в Salesforce напрямую из Slack при обсуждении с клиентом.
- Внутренние инструменты: боты для поиска по базе знаний, бронирования переговорных комнат, создания заявок в службу поддержки (Jira, Zendesk, ServiceNow).
- Автоматизация рутины: с помощью Workflow Builder и Custom Functions автоматическое создание встреч в календаре, сбор отчётов, оповещение о днях рождения сотрудников.
Критика и ограничения
Несмотря на широкую функциональность, Slack API имеет ряд недостатков, отмечаемых разработчиками:
- Сложность миграции: перевод приложений с устаревшего RTM API на Events API и с Node.js на Deno (для Hosted Apps) требует значительных трудозатрат. Slack не всегда предоставляет обратную совместимость.
- Ограничения бесплатного тарифа: в бесплатных рабочих пространствах Slack доступ к API ограничен: нельзя просматривать историю сообщений старше 90 дней, количество интеграций и каналов ограничено.
- Зависимость от инфраструктуры Slack: приложения, использующие Events API, должны иметь публичный HTTPS-эндпоинт, что усложняет разработку и тестирование. Slack Hosted Apps частично решают эту проблему, но привязывают разработчика к платформе.
- Стоимость: для коммерческого использования и доступа к расширенным API (например, Slack Connect API) требуется платная подписка Slack (Slack Pro, Business+ или Enterprise Grid).
- Политика безопасности: в 2020 году Slack API подвергся критике из-за уязвимости, связанной с возможностью подмены вебхуков (Webhook Spoofing). Компания оперативно выпустила исправление, но инцидент подчеркнул необходимость строгой верификации запросов.
Источники
- Официальная документация Slack API (api.slack.com)
- Slack Platform Changelog (2013–2024)
- Документация Block Kit (api.slack.com/block-kit)
- Руководство по OAuth 2.0 для Slack (api.slack.com/authentication)
- Статья «Slack’s API Evolution: From Webhooks to Deno» (Slack Engineering Blog, 2023)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →