-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add new transport Slack with webhook
Add support send message to Slack message using Slack Webhook. More https://api.slack.com/messaging/webhooks
- Loading branch information
Showing
1 changed file
with
102 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
|
||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// Модуль транспорта отправки сообщений slack-hook | ||
// | ||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
Перем ПараметрыАвторизации; // хранит структуру авторизации | ||
Перем ОписаниеПротокола; // хранит структуру описания протокола | ||
|
||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
// Стандартный интерфейс | ||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
// Протокол | ||
// Метод возвращает описание используемого протокола | ||
// | ||
// Возвращаемое значение: | ||
// Структура - Описание протокола | ||
// { | ||
// Имя - Строка - Системное имя транспорта | ||
// Представление - Строка - пользовательское представление транспорта | ||
// Описание - Строка - Строковое описание транспорта | ||
// Операторы - Структура - Возможные операторы транспорта | ||
// } | ||
// | ||
Функция Протокол() Экспорт | ||
|
||
Если ОписаниеПротокола = Неопределено Тогда | ||
|
||
ОписаниеПротокола = Новый Структура("Имя, Представление, Описание, Операторы", "slackhook", "slack hook", "Отправка сообщений в каналы slack через webhook", Неопределено); | ||
|
||
КонецЕсли; | ||
|
||
Возврат ОписаниеПротокола; | ||
|
||
КонецФункции // Протокол() | ||
|
||
// Инициализация | ||
// Инициализация параметров транспорта | ||
// | ||
// Параметры: | ||
// ПараметрыИнициализации - Структура - набор параметров инициализации | ||
// | ||
Процедура Инициализация(ПараметрыИнициализации) Экспорт | ||
|
||
Если ПараметрыИнициализации = Неопределено Тогда | ||
|
||
Сообщить(СтрШаблон("Для инициализации транспорта %1 необходимо передавать в параметрах: ", Протокол().Представление)); | ||
Сообщить(" - Логин"); | ||
Сообщить(" - Префикс"); | ||
|
||
ВызватьИсключение СтрШаблон("Инициализация транспорта %1 невыполнена", Протокол().Представление); | ||
|
||
КонецЕсли; | ||
|
||
ПараметрыАвторизации = Новый Структура("Токен, Префикс", ПараметрыИнициализации.Логин, ПараметрыИнициализации.Префикс); | ||
|
||
КонецПроцедуры // Инициализация() | ||
|
||
// ОтправитьСообщение | ||
// Метод отправки сообщения | ||
// | ||
// Параметры: | ||
// Адресат - Строка - Адресат сообщения | ||
// Сообщение - Строка - Текст отправляемого сообщения | ||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров | ||
// | ||
Процедура ОтправитьСообщение(Адресат, Сообщение, ДополнительныеПараметры = Неопределено) Экспорт | ||
|
||
Если ПараметрыАвторизации = Неопределено Тогда | ||
|
||
ВызватьИсключение СтрШаблон("Для отправки сообщения необходимо выполнить инициализацию транспорта %1", Протокол().Представление); | ||
|
||
КонецЕсли; | ||
|
||
ИмяСервера = "https://hooks.slack.com"; | ||
URL = СтрШаблон("/services/%1/%2", ПараметрыАвторизации.Префикс, ПараметрыАвторизации.Токен); | ||
|
||
Прокси = Новый ИнтернетПрокси(Истина); | ||
|
||
Заголовки = Новый Соответствие; | ||
Заголовки.Вставить("Content-Type", "application/json"); | ||
Заголовки.Вставить("Accept", "application/json"); | ||
|
||
HTTPЗапрос = Новый HTTPЗапрос(URL, Заголовки); | ||
|
||
ТекстСообщения = СтрЗаменить(Сообщение, Символы.ПС, "\n"); | ||
ТекстСообщения = СтрЗаменить(ТекстСообщения, Символы.ВК, "\r"); | ||
|
||
ТелоЗапроса = СтрШаблон("{""text"":""%1""}", ТекстСообщения); | ||
|
||
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса); | ||
|
||
HTTP = Новый HTTPСоединение(ИмяСервера,,,, Прокси); | ||
Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос); | ||
|
||
КонецПроцедуры // ОтправитьСообщение() | ||
|
||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
ПараметрыАвторизации = Неопределено; |