diff --git a/readme.md b/readme.md index b777ff2..4fe3604 100644 --- a/readme.md +++ b/readme.md @@ -85,6 +85,18 @@ Мессенджер.ИнициализироватьТранспорт("mattermost", Новый Структура("Сервер, Hook", Сервер, Hook)); Мессенджер.ОтправитьСообщение("mattermost", "test-channel", "Всем привет!"); +### Яндекс Мессенджер + +Для использования Необходимо создать бота и получить токен `https://yandex.ru/support/business/bot-platform.html?ysclid=lnfx6acwzi640564004`. + +#### Пример Яндекс Мессенджер + + Мессенджер = Новый Мессенджер(); + Мессенджер.ИнициализироватьТранспорт("ЯндексМессенджер", Новый Структура("Логин", BotID)); + + Сообщение = "**Пример полужирного текста**"; + Мессенджер.ОтправитьСообщение("ЯндексМессенджер", адрессат, Сообщение); + ## Добавление новых транспортов Для добавления нового транспорта необходимо: diff --git "a/src/\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\321\213/\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\320\257\320\275\320\264\320\265\320\272\321\201\320\234\320\265\321\201\321\201\320\265\320\275\320\264\320\266\320\265\321\200.os" "b/src/\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\321\213/\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\320\257\320\275\320\264\320\265\320\272\321\201\320\234\320\265\321\201\321\201\320\265\320\275\320\264\320\266\320\265\321\200.os" new file mode 100644 index 0000000..bb7dbbb --- /dev/null +++ "b/src/\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\321\213/\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\320\257\320\275\320\264\320\265\320\272\321\201\320\234\320\265\321\201\321\201\320\265\320\275\320\264\320\266\320\265\321\200.os" @@ -0,0 +1,115 @@ + +/////////////////////////////////////////////////////////////////////////////////////////////// +// +// Модуль транспорта отправки сообщений Яндекс Мессенджер +// +/////////////////////////////////////////////////////////////////////////////////////////////// + +Перем ПараметрыАвторизации; // хранит структуру авторизации +Перем ОписаниеПротокола; // хранит структуру описания протокола + +/////////////////////////////////////////////////////////////////////////////////////////////// +// Стандартный интерфейс +/////////////////////////////////////////////////////////////////////////////////////////////// + +// Протокол +// Метод возвращает описание используемого протокола +// +// Возвращаемое значение: +// Структура - Описание протокола +// { +// Имя - Строка - Системное имя транспорта +// Представление - Строка - пользовательское представление транспорта +// Описание - Строка - Строковое описание транспорта +// Операторы - Структура - Возможные операторы транспорта +// } +// +Функция Протокол() Экспорт + + Если ОписаниеПротокола = Неопределено Тогда + + ОписаниеПротокола = Новый Структура("Имя, Представление, Описание, Операторы", "ЯндексМессенджер", "Яндекс Мессенджер", "Отправка сообщений в каналы Яндекс Мессенджер", Неопределено); + + КонецЕсли; + + Возврат ОписаниеПротокола; + +КонецФункции // Протокол() + +// Инициализация +// Инициализация параметров транспорта +// +// Параметры: +// ПараметрыИнициализации - Структура - набор параметров инициализации +// +Процедура Инициализация(ПараметрыИнициализации) Экспорт + + Если ПараметрыИнициализации = Неопределено Тогда + + Сообщить(СтрШаблон("Для инициализации транспорта %1 необходимо передавать в параметрах: ", Протокол().Представление)); + Сообщить(" - Логин"); + + ВызватьИсключение СтрШаблон("Инициализация транспорта %1 невыполнена", Протокол().Представление); + + КонецЕсли; + + ПараметрыАвторизации = Новый Структура("Токен", ПараметрыИнициализации.Логин); + +КонецПроцедуры // Инициализация() + +// ОтправитьСообщение +// Метод отправки сообщения +// +// Параметры: +// Адресат - Строка - Адресат сообщения +// Сообщение - Строка - Текст отправляемого сообщения +// ДополнительныеПараметры - Структура - Набор дополнительных параметров +// +Процедура ОтправитьСообщение(Адресат, Сообщение, ДополнительныеПараметры = Неопределено) Экспорт + + Если ПараметрыАвторизации = Неопределено Тогда + + ВызватьИсключение СтрШаблон("Для отправки сообщения необходимо выполнить инициализацию транспорта %1", Протокол().Представление); + + КонецЕсли; + + ПараметрыСообщения = Новый Структура("chat_id, text", Адресат, Сообщение); + + ОтветHTTP = ВызватьМетодСообщенияЯндексМессенджерAPI("sendText", ПараметрыСообщения); + + +КонецПроцедуры // ОтправитьСообщение() + +Функция ВызватьМетодСообщенияЯндексМессенджерAPI(ИмяМетода, Параметры) + + Прокси = Новый ИнтернетПрокси(Истина); + json = Новый ПарсерJSON(); + + ИмяСервера = "https://botapi.messenger.yandex.net"; + + URL = "/bot/v1/messages" + + "/" + ИмяМетода; + + Заголовки = Новый Соответствие; + Заголовки.Вставить("Authorization", "OAuth " + ПараметрыАвторизации.Токен); + Заголовки.Вставить("Content-Type", "application/json"); + + HTTPЗапрос = Новый HTTPЗапрос(URL, Заголовки); + + ОписаниеСообщения = Новый Структура; + ОписаниеСообщения.Вставить("chat_id", Параметры.chat_id); + ОписаниеСообщения.Вставить("text", Параметры.text); + + HTTPЗапрос.УстановитьТелоИзСтроки(json.ЗаписатьJSON(ОписаниеСообщения)); + + HTTP = Новый HTTPСоединение(ИмяСервера,,,, Прокси); + ОтветHTTP = HTTP.ОтправитьДляОбработки(HTTPЗапрос); + + Возврат ОтветHTTP; + +КонецФункции + + +/////////////////////////////////////////////////////////////////////////////////////////////// + +ПараметрыАвторизации = Неопределено;