Slack – популярное приложения для обмена сообщениями, число пользователей которого превышает миллион человек. Поскольку прямая пересылка уведомлений из DataArmor в Slack невозможна, мы будем использовать интерфейс Slack API, созданный сторонним разработчиком. Настройка проводится на ОС Linux Ubuntu.

Существует реализация консольного клиента, работающего со Slack API (https://github.com/candrholdings/slack-cli). Этот клиент реализован в виде Node.js-приложения, благодаря чему среди его преимуществ кроссплатформенность и простота настройки.

Для работы этого клиента требуется установленная в системе платформа Node.js. Кроме того, необходимо установить специальный менеджер пакетов npm. Краткие инструкции по установке Nodejs можно найти на официальном сайте: https://nodejs.org/en/download/package-manager/

Установка необходимых компонентов

Для установки Node.js и менеджера пакетов выполните в Терминале Linux следующие команды:

sudo apt-get update sudo apt-get install nodejs-legacy

Теперь необходимо установить Slack Client. Для этого выполните в Терминале команду:

npm install -g slack-cli

Убедитесь, что путь к npm включён в переменную окружения PATH.

Подготовка к получению токена

После того, как клиент установлен, необходимо его зарегистрировать в системе Slack API. Итогом регистрации должен стать токен — хэш-строка, необходимая для авторизации и аутентификации клиента в системе Slack.

Создание приложения Slack API

Для получения токена необходимо создать и зарегистрировать приложение (App) Slack API. По сути, это бот, от имени которого будут отправляться сообщения.

Для создания приложения зайдите на страницу https://api.slack.com/apps и нажмите «Create New App». В появившемся окне введите имя для своего приложения.

slack_1

Обратите внимание на «Development Slack Team». Создаваемый вами бот должен иметь принадлежность к вашей организации и быть приписанным к одной из ваших «команд». Если создание прошло успешно, вы увидите примерно следующее:

slack_2

Внимание!!! Сохраните строки Client ID и Client Secret — они необходимы для получения токена.

Затем вам необходимо получить т.н. “OAuth code”. Для получения этого кода необходимо определить вспомогательный параметр «Redirect URL». Этот параметр не имеет прикладного значения для использования SlackCli, но он необходим для получении кода.

Перейдите на страницу https://api.slack.com/apps и выберите созданное на предыдущем шаге приложение.

slack_3

Щёлкните по имени приложения для перехода на страницу его настроек. Выберите в левом меню «OAuth & Permissions”. Во вкладке отобразится поле, в которое необходимо ввести минимум один URL-адрес. Хотя это может быть произвольный адрес, рекомендуется ввести https://api.slack.com.

slack_4

Нажмите Save changes для сохранения настроек.

Получение OAuth code

Теперь всё готово для получения «OAuth code». Для запроса кода необходимо составить и выполнить GET-запрос следующего вида:

https://slack.com/oauth/authorize?client_id=ClientID&redirect_uri=https://api.slack.com&scope=chat:write:bot channels:read chat:write:user

Обратите внимание на три параметра:

  • Сlient_id, который вы получили при создании приложения, можно найти в разделе «Basic Information» в настройках приложения.
  • redirect_uri — это URL, который вы задали в разделе «OAuth & Permissions» на предыдущем шаге.
  • scope — данный параметр определяет набор функций создаваемого бота. Для рассматриваемой здесь задачи боту достаточно предоставить возможность отправлять сообщения в каналы. Полный список можно найти по адресу https://api.slack.com/docs/oauth-scopes

После того, как вы составили строку для GET-запроса, откройте её в веб-браузере. Если все параметры были введены корректно, то вы будете перенаправлены на следующую страницу:

slack_5

Нажмите Authorize. После этого вы будете перенаправлены на страницу, указанную в параметре redirect_uri. Оставьте её открытой. Обратите внимание на адресную строку. Там вы обнаружите примерно следующее:

https://api.slack.com/?code=47309483958.89358720404.4c4b41111b&state=

Извлеките из адресной строки параметр code и сохраните его.

Получение токена

Приготовления к получению токена завершены, поэтому остался финальный шаг.

Откройте страницу:

https://api.slack.com/methods/oauth.access/test

Введите в поля на странице значения соответствующих им параметров:

  • Client_ID
  • Client_secret
  • Code
  • Redirect_uri
slack_6

Затем нажмите кнопку Test method. В случае успеха в открывшемся поле отобразится ответ вида:

slack_7

В параметре access_token содержится искомый токен. Сохраните его в отдельный текстовый файл. Также обратите внимание, что период времени, в течение которого действительно значение параметра code, невелик.

Для проверки передачи сообщений в Slack выполните в Терминале следующую команду:

Slackcli –t [token] -h [channel] -m “message text”

Замените [token] на полученный токен, [channel] — на имя канала, в который вы хотите передать сообщение. Текст сообщения (“message text”) необходимо брать в кавычки.

Настройка DataArmor на передачу сообщений в Slack

Войдите в веб-интерфейс DataArmor и перейдите в раздел Configurations, подраздел Subscribers (подписчики).

Создайте новый сервер — нажмите кнопку Server+.

В выпадающем списке Type (тип) выберите тип сервера External (внешний).

subsc_server

В поле Command введите следующее:

Slackcli –t [token]

где [token] — это полученный вами ранее токен.

Например, slackcli -t xoxp-47309483958-47311871014-89399430464-2cbb715689726a101728808d440e5934

Нажмите Save для сохранения настроек сервера.

Теперь необходимо настроить подписчика на уведомления. Нажмите кнопку Subscriber+ для создания нового подписчика. В выпадающем списке Gate выберите созданный вами сервер.

subsc_subscr

В поле Additional parameters внесите следующее: -h [Slack channel] -m

где [Slack channel] — это имя канала Slack, в который необходимо передавать сообщения.

Например, -h general –m

Отметьте флажками события, сообщения о которых необходимо пересылать, и нажмите кнопку Save для сохранения настроек.

Комментарии