Поиск по сайту:

Как отправить сообщение в Slack из сценария Bash


Этот тип интеграции особенно хорошо работает для событий, основанных на уведомлениях, например, когда что-то обновляется или где-то публикуется новый контент, подобно тому, как работают RSS-каналы. Вы также можете выполнять индивидуальную интеграцию для своих собственных приложений, работающих через тот же API, включая интерактивные диалоговые окна и меню для получения пользовательского ввода.

Используйте Slack Bot с веб-хуками

У Slack есть API, который позволяет автоматизировать множество взаимодействий с вашим рабочим пространством. Вы можете получить доступ к этому API из любого места, где можно выполнять HTTP-запросы, такие как POST и GET, в том числе сценарии bash с использованием утилиты curl , а также как и большинство скриптовых языков. Утилита curl установлена по умолчанию почти во всех дистрибутивах Unix и доступна для загрузки в Windows.

Часть этого API включает веб-перехватчики, способ, с помощью которого два приложения могут отправлять друг другу сообщения. Вам будет предоставлен URL-адрес веб-перехватчика, к которому вы можете отправить запрос POST с некоторыми данными в виде объекта JSON. Например, вы можете отправить быстрое сообщение с:

{"text":"Hello, World!"}

Ваш сценарий bash отправит этот бит данных в Slack, который прочитает его и отправит «Hello, World!» на канал, указанный вами при настройке вебхука.

Вам нужно будет использовать собственное приложение Slack, чтобы сообщение исходило от бота (которого вы можете настроить). На самом деле это хорошо; Веб-перехватчики в основном используются для уведомлений, и, поскольку сообщение, отправленное через веб-перехватчик, не будет отправлено из вашей собственной учетной записи, вы будете получать push-уведомления для сообщений, отправленных таким образом.

Вы также можете отправлять автоматические сообщения из своей учетной записи Slack аналогичным образом, за исключением того, что вам нужно будет использовать API chat.postMessage с аргументом as_user, равным true. Для этого потребуется токен OAuth 2.0 с областью разрешений chat:write:user , который вам нужно будет сгенерировать самостоятельно перед использованием API. Мы предлагаем придерживаться вебхуков, так как ими гораздо проще управлять.

Настройте приложение Slack для приема веб-перехватчиков

Перейдите на портал API Slack и создайте новое приложение Slack. Дайте этому приложению имя пользователя, выберите рабочую область, к которой оно будет принадлежать, и нажмите «Создать приложение».

Вы попадете на домашнюю страницу, где сможете добавить функции для своего бота. Здесь есть много интересных вещей, таких как настраиваемые /commands и интерактивные сообщения, но все, что вам нужно сейчас, это «Входящие веб-перехватчики». Нажмите эту кнопку и включите его.

Вам нужно будет зарегистрировать новый веб-хук для вашего приложения, чтобы отправлять сообщения. Нажмите «Добавить новый веб-перехватчик в рабочую область» в нижней части этого экрана.

Вам будет предложено авторизовать приложение и выбрать канал для сообщений. Это могут быть общедоступные каналы или прямые сообщения с другими пользователями; вы оба будете видеть бота в своих личных сообщениях и получать уведомления.

Вы можете зарегистрировать несколько веб-хуков для разных каналов, но каждый хук будет иметь свой URL.

Скопируйте URL-адрес вашего веб-перехватчика и откройте терминал. Вставить:

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' YOUR_WEBHOOK_URL

Замените YOUR_WEBHOOK_URL на тот, который дал вам Slack. Нажмите Enter, и вы должны получить «Hello, World!» уведомление и увидите новое сообщение на выбранном вами канале.

Вы можете использовать эту команду curl из скрипта bash и настроить объект JSON для отправки любых данных, которые вам нужны, в том числе из переменных bash.

Использование форматированных сообщений и вложений

API сообщений может делать больше, чем просто отправлять простой текст. Если вы хотите, чтобы ваши сообщения были более стилизованными, вам придется добавить дополнительные параметры к объекту JSON, который отправляет curl.

Вы можете использовать уценку и другое простое форматирование так же, как в окне сообщения Slack. Однако следует отметить, что для ссылки на каналы и @ing пользователей вам нужно будет указать идентификатор канала и идентификатор пользователя, а не имена в виде открытого текста, иначе это не будет работать.

Для всего остального вам понадобится конструктор блоков Slack, редактор WYSIWYG для сообщений Slack, который позволяет создавать интерактивный и богато встраиваемый контент и даже обрабатывает создание JSON для вас. Такие элементы, как кнопки и меню, можно настроить для отправки POST-запросов на указанный вами URL-адрес, что позволит вашим пользователям отвечать приложению, отправляющему сообщение.

Однако сборщик комплектов блоков не совсем необходим, поскольку старые методы не устарели. Если вы просто хотите использовать такие функции, как вложения, вы можете использовать старый конструктор сообщений для создания и предварительного просмотра JSON.