-
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.
Merge pull request #32 from Foxtrot1388/master
Mattermost incoming hook
- Loading branch information
Showing
2 changed files
with
112 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
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,100 @@ | ||
|
||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// Модуль транспорта отправки сообщений <ИмяТранспорта> | ||
// | ||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
Перем ПараметрыАвторизации; // хранит структуру авторизации | ||
Перем ОписаниеПротокола; // хранит структуру описания протокола | ||
|
||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
// Стандартный интерфейс | ||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
// Протокол | ||
// Метод возвращает описание используемого протокола | ||
// | ||
// Возвращаемое значение: | ||
// Структура - Описание протокола | ||
// { | ||
// Имя - Строка - Системное имя транспорта | ||
// Представление - Строка - пользовательское представление транспорта | ||
// Описание - Строка - Строковое описание транспорта | ||
// Операторы - Структура - Возможные операторы транспорта | ||
// } | ||
// | ||
Функция Протокол() Экспорт | ||
|
||
Если ОписаниеПротокола = Неопределено Тогда | ||
|
||
ОписаниеПротокола = Новый Структура("Имя, Представление, Описание, Операторы", "mattermost", "mattermost hook", "Отправка сообщений в каналы mattermost через incoming hook", Неопределено); | ||
|
||
КонецЕсли; | ||
|
||
Возврат ОписаниеПротокола; | ||
|
||
КонецФункции // Протокол() | ||
|
||
// Инициализация | ||
// Инициализация параметров транспорта | ||
// | ||
// Параметры: | ||
// ПараметрыИнициализации - Структура - набор параметров инициализации | ||
// | ||
Процедура Инициализация(ПараметрыИнициализации) Экспорт | ||
|
||
Если ПараметрыИнициализации = Неопределено Тогда | ||
|
||
Сообщить(СтрШаблон("Для инициализации транспорта %1 необходимо передавать в параметрах: ", Протокол().Представление)); | ||
Сообщить(" - Сервер"); | ||
Сообщить(" - Hook"); | ||
|
||
ВызватьИсключение СтрШаблон("Инициализация транспорта %1 невыполнена", Протокол().Представление); | ||
|
||
КонецЕсли; | ||
|
||
ПараметрыАвторизации = Новый Структура("ИмяСервера, Hook", ПараметрыИнициализации.Сервер, ПараметрыИнициализации.Hook); | ||
|
||
КонецПроцедуры // Инициализация() | ||
|
||
// ОтправитьСообщение | ||
// Метод отправки сообщения | ||
// | ||
// Параметры: | ||
// Адресат - Строка - Адресат сообщения | ||
// Сообщение - Строка - Текст отправляемого сообщения | ||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров | ||
// | ||
Процедура ОтправитьСообщение(Адресат, Сообщение, ДополнительныеПараметры = Неопределено) Экспорт | ||
|
||
Если ПараметрыАвторизации = Неопределено Тогда | ||
|
||
ВызватьИсключение СтрШаблон("Для отправки сообщения необходимо выполнить инициализацию транспорта %1", Протокол().Представление); | ||
|
||
КонецЕсли; | ||
|
||
URL = СтрШаблон("/hooks/%1", ПараметрыАвторизации.Hook); | ||
|
||
Прокси = Новый ИнтернетПрокси(Истина); | ||
|
||
Заголовки = Новый Соответствие; | ||
Заголовки.Вставить("Content-Type", "text/plain"); | ||
|
||
HTTPЗапрос = Новый HTTPЗапрос(URL, Заголовки); | ||
|
||
ТекстСообщения = СтрЗаменить(Сообщение, Символы.ПС, "\n"); | ||
ТекстСообщения = СтрЗаменить(ТекстСообщения, Символы.ВК, "\r"); | ||
|
||
ТелоЗапроса = СтрШаблон("{""text"":""%1"", ""channel"":""%2""}", ТекстСообщения, Адресат); | ||
|
||
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса); | ||
|
||
HTTP = Новый HTTPСоединение(ПараметрыАвторизации.ИмяСервера,,,, Прокси); | ||
Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос); | ||
|
||
КонецПроцедуры // ОтправитьСообщение() | ||
|
||
/////////////////////////////////////////////////////////////////////////////////////////////// | ||
|
||
ПараметрыАвторизации = Неопределено; |