Перейти к основному содержимому

Настройка Slack

Dispatch из коробки поддерживает Slack. Ниже описано, как настроить плагин Slack для работы с Dispatch.

Events Mode или Socket Mode​

Dispatch поддерживает и Events Mode (режим событий), и Socket Mode (режим сокетов).

Какой режим выбрать?

  • Если Dispatch будет слушать публичный статический HTTP-адрес, рекомендуем Events Mode.
  • Если Dispatch разворачивается за корпоративным файрволом или у вас есть опасения по безопасности, рекомендуем Socket Mode.

Подробнее о переменных — в разделе Конфигурация Dispatch ниже.

Events Mode​

Для Events Mode нужны конкретные URL-адреса, доступные публично:

  • Dispatch принимает общие события на конечной точке /api/v1/<organization>/events/slack/event (например, участник вошёл в канал, реакции).
  • Dispatch принимает события команд на конечной точке /api/v1/<organization>/events/slack/command (команды /dispatch-*).
  • Dispatch принимает события действий на конечной точке /api/v1/<organization>/events/slack/action (диалоги и модальные окна).

Socket Mode​

Чтобы включить Socket Mode, добавьте токен приложения для Socket Mode в поле Socket Mode App Token плагинов Slack Plugin - Conversation Management и Slack Plugin - Contact Information Resolver в веб-интерфейсе Dispatch: «Настройки» -> «Проект» -> «Плагины».

Socket Mode не требует настройки конечных точек: в этом режиме их значения игнорируются.

Для Socket Mode нужен отдельный процесс (помимо основного веб-сервера Dispatch), который будет принимать события по WebSocket.

Проще всего запустить его такой командой CLI:

dispatch server slack <organization> <project>

Этот процесс нужно запускать как демон, так же как и веб-сервер Dispatch.

Конфигурация Slack​

Для вашего приложения Slack в веб-интерфейсе Slack API нужно задать следующие параметры — и для events mode, и для socket mode.

Event Subscriptions (подписки на события)​

Чтобы Dispatch мог обрабатывать события Slack, в разделе Events Subscriptions убедитесь, что Request URL указывает на конечную точку подписки на события сервера Dispatch: /api/v1/<organization>/events/slack/event. Замените <organization> на имя вашей организации. По умолчанию это default.

Затем в разделе Subscribe to bot events добавьте следующие события бота:

СобытиеОписание
member_joined_channelПользователь вошёл в публичный или приватный канал
member_left_channelПользователь покинул публичный или приватный канал
message.groupsВ приватный канал отправлено сообщение

Interactivity (интерактивность)​

Чтобы Dispatch мог создавать интерактивные элементы — диалоги и модальные окна, — убедитесь, что Request URL указывает на конечную точку действий сервера Dispatch: /api/v1/<organization>/events/slack/action. Замените <organization> на имя вашей организации. По умолчанию это default.

Select Menus (меню выбора)​

На той же странице Interactivity & Shortcuts, в разделе Select Menus, задайте Options Load URL равным /api/v1/<organization>/events/slack/menu. Замените <organization> на имя вашей организации. По умолчанию это default.

Это отдельное поле, не связанное с Request URL выше, и значение оттуда оно не наследует. Dispatch использует его для меню с подсказками, которые подгружают варианты по запросу, а не встраивают их в модальное окно: выбор тегов и выбор проекта в установках, где включено больше 100 проектов. Если поле не задано, такие меню открываются пустыми и остаются пустыми, а поскольку поле обязательное, форму нельзя отправить.

Slash Commands (слеш-команды)​

Чтобы слеш-команды Dispatch заработали, сначала добавьте их в приложение Slack. Убедитесь, что поле Command в веб-интерфейсе Slack API совпадает с именем команды в плагине Slack в веб-интерфейсе Dispatch, а Request URL указывает на конечную точку команд сервера Dispatch: /api/v1/<organization>/events/slack/command.

OAuth & Permissions (OAuth и разрешения)​

Bot User OAuth Access Token используется для запросов к Slack API.

Скоупы​

Ниже перечислены скоупы бота и пользователя, которые нужны приложению Dispatch для Slack, чтобы работать корректно.

Bot Token Scopes

bookmarks:write
channels:read
chat:write
commands
files:read
groups:history
groups:read
groups:write
im:history
im:read
im:write
mpim:history
mpim:read
mpim:write
pins:write
reactions:read
reactions:write
team:read
users:read
users:read.email
users.profile:read
users:write

User Token Scopes

channels:read
groups:history
groups:read

Конфигурация Dispatch​

Плагины Slack для Dispatch — управление каналами обсуждения и поиск контактной информации — настраиваются в веб-интерфейсе Dispatch: «Настройки» -> «Проект» -> «Плагины». Добавьте нужные плагины кнопкой NEW и затем отредактируйте их конфигурацию, нажав на три вертикальные точки.

Плагин каналов обсуждения (Conversation Management)​

Токен бота (API Bot Token)​

Токен бота приложения Slack, нужный для обращения к Slack API. В Slack он называется «Bot User OAuth Access Token» и показывается соавторам приложения при его установке.

Токен приложения для Socket Mode (Socket Mode App Token)​

Токен приложения Slack для Socket Mode; выдаётся при включении Socket Mode и служит для аутентификации в WebSocket API. Если Socket Mode не используется, значение игнорируется.

Секрет подписи (Signing Secret)​

Секрет для проверки подписей, которыми Slack снабжает каждый HTTP-запрос. В Slack он называется «Signing Secret».

Идентификатор пользователя приложения (App User Id)​

Идентификатор бот-пользователя приложения Slack: по нему Dispatch отфильтровывает события, порождённые самим приложением (например, сообщение, опубликованное в канале). Получить идентификатор бот-пользователя (UXXXXXXXX) можно через конечную точку auth.test, передав токен бота приложения (xoxb-*)."

Приватные каналы (Private Channels)​

Создавать ли для инцидентов приватные каналы Slack вместо публичных.

Запрет тредов (Ban Threads)​

Разрешать или запрещать треды (ответы в ветках) в каналах инцидентов.

Реакция для события хронологии (Timeline Event Reaction)​

Реакция, по которой сообщение из канала инцидента добавляется в хронологию инцидента.

Строки команд (Command Strings)​

Имена слеш-команд, которые будет предоставлять ваше приложение Slack.

При желании их значения можно переопределить. Ниже приведены описания команд — их удобно скопировать в настройки слеш-команд вашего приложения Slack.

КомандаОписание
/dispatch-add-timeline-eventОткрывает модальное окно для добавления события в хронологию инцидента.
/dispatch-assign-roleОткрывает модальное окно для назначения роли участнику.
/dispatch-engage-oncallОткрывает модальное окно для вовлечения дежурного.
/dispatch-list-incidents [project name]Показывает активные и стабильные инциденты, а также закрытые за последние 24 часа — по одному проекту или по всем сразу.
/dispatch-list-my-tasksОткрывает модальное окно со списком ваших открытых и решённых задач по инциденту.
/dispatch-list-participantsОткрывает модальное окно со списком участников инцидента.
/dispatch-list-signalsОткрывает модальное окно со списком определений сигналов, настроенных для канала обсуждения, из которого запущена команда.
/dispatch-list-tasksОткрывает модальное окно со списком открытых и решённых задач инцидента.
/dispatch-list-workflowsПоказывает рабочие процессы, запускавшиеся в ходе этого инцидента.
/dispatch-report-executiveОткрывает модальное окно для составления отчёта для руководства.
/dispatch-report-incidentОткрывает модальное окно для сообщения об инциденте. Команду можно запускать из каналов, не связанных с инцидентом, если в них состоит бот Dispatch.
/dispatch-report-tacticalОткрывает модальное окно для составления тактического отчёта.
/dispatch-run-workflowЗапускает рабочий процесс и привязывает его артефакты к этому инциденту.
/dispatch-update-incidentОткрывает модальное окно для обновления инцидента.
/dispatch-notifications-groupОткрывает модальное окно для редактирования группы уведомлений.
/dispatch-update-participantОткрывает модальное окно для обновления данных участника.
/dispatch-create-taskОткрывает модальное окно для создания задачи по инциденту.
/dispatch-create-caseОткрывает модальное окно для создания кейса.
/dispatch-update-caseОткрывает модальное окно для обновления кейса. Запускается из канала кейса.
/dispatch-escalate-caseОткрывает модальное окно для эскалации кейса в инцидент. Запускается из канала кейса.
/dispatch-engage-userОткрывает модальное окно, чтобы попросить участника кейса подтвердить личность через MFA. Запускается из канала кейса.
/dispatch-summaryЕсли это разрешено для данного типа кейса/инцидента, создаёт вводную сводку, сгенерированную ИИ.

Плагин контактов (Contact Information Resolver)​

Токен бота (API Bot Token)​

Токен бота приложения Slack, нужный для обращения к Slack API. В Slack он называется «Bot User OAuth Access Token» и показывается соавторам приложения при его установке.

Токен приложения для Socket Mode (Socket Mode App Token)​

Токен приложения Slack для Socket Mode; выдаётся при включении Socket Mode и служит для аутентификации в WebSocket API. Если Socket Mode не используется, значение игнорируется.

Секрет подписи (Signing Secret)​

Секрет для проверки подписей, которыми Slack снабжает каждый HTTP-запрос. В Slack он называется «Signing Secret».

Идентификатор поля профиля «Отдел» (Profile Department Field Id)​

Идентификатор поля профиля, в котором хранится отдел (Department).

Идентификатор поля профиля «Команда» (Profile Team Field Id)​

Идентификатор поля профиля, в котором хранится команда (Team).

Идентификатор поля профиля, в котором хранится веб-ссылка.