2024-04-16 10:06:08 +02:00
|
|
|
// MIT License
|
|
|
|
|
|
|
|
// Copyright (c) 2023 Anton Tsitavets
|
|
|
|
|
|
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
|
|
// in the Software without restriction, including without limitation the rights
|
|
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
|
|
// furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
|
|
// copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
// SOFTWARE.
|
|
|
|
|
|
|
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
|
|
|
|
|
|
|
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
|
|
|
// BSLLS:IncorrectLineBreak-off
|
|
|
|
|
|
|
|
// Раскомментировать, если выполняется OneScript
|
|
|
|
#Использовать "../../tools"
|
|
|
|
|
|
|
|
#Область ПрограммныйИнтерфейс
|
|
|
|
|
2024-04-17 13:25:07 +02:00
|
|
|
#Область УправлениеИНастройки
|
|
|
|
|
2024-04-17 16:21:22 +02:00
|
|
|
// Получить информацию о боте
|
|
|
|
// Получает основную информацию о боте
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен бота - token
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
2024-04-17 13:25:07 +02:00
|
|
|
Функция ПолучитьИнформациюОБоте(Знач Токен) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
|
|
|
|
|
|
|
URL = "https://slack.com/api/auth.test";
|
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-04-17 16:21:22 +02:00
|
|
|
// Получить список рабочих областей
|
|
|
|
// Получает список рабочих областей, в которых подключен бот
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// Токен - Строка - Токен бота - token
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
2024-04-17 13:25:07 +02:00
|
|
|
Функция ПолучитьСписокРабочихОбластей(Знач Токен) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
|
|
|
|
|
|
|
URL = "https://slack.com/api/auth.teams.list";
|
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
#КонецОбласти
|
|
|
|
|
2024-04-16 10:06:08 +02:00
|
|
|
#Область РаботаСЧатами
|
|
|
|
|
2024-04-17 16:21:22 +02:00
|
|
|
// Отправить сообщение
|
|
|
|
// Отправляет сообщение в выбранный час
|
|
|
|
//
|
|
|
|
// Параметры:
|
2024-04-20 11:35:20 +02:00
|
|
|
// Токен - Строка - Токен бота - token
|
|
|
|
// Канал - Строка - Идентификатор канала - channel
|
|
|
|
// Текст - Строка - Текст сообщения - text
|
|
|
|
// ДатаОтправки - Дата - Дата отправки для отложенного сообщения - date
|
|
|
|
// МассивБлоков - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков
|
2024-04-17 16:21:22 +02:00
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
2024-04-20 11:35:20 +02:00
|
|
|
Функция ОтправитьСообщение(Знач Токен, Знач Канал, Знач Текст = "", Знач ДатаОтправки = "", Знач МассивБлоков = "") Экспорт
|
2024-04-16 10:06:08 +02:00
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
|
|
|
|
2024-04-17 13:25:07 +02:00
|
|
|
ЕстьБлоки = ЗначениеЗаполнено(МассивБлоков);
|
2024-04-20 11:35:20 +02:00
|
|
|
ЕстьДата = ЗначениеЗаполнено(ДатаОтправки);
|
2024-04-17 13:25:07 +02:00
|
|
|
|
2024-04-16 10:06:08 +02:00
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
2024-04-20 11:35:20 +02:00
|
|
|
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка" , Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("blocks" , МассивБлоков, "Коллекция", Параметры);
|
|
|
|
|
|
|
|
Если ЕстьДата Тогда
|
|
|
|
|
|
|
|
URL = "https://slack.com/api/chat.scheduleMessage";
|
|
|
|
OPI_Инструменты.ДобавитьПоле("post_at", ДатаОтправки, "Дата", Параметры);
|
|
|
|
|
|
|
|
Иначе
|
|
|
|
|
|
|
|
URL = "https://slack.com/api/chat.postMessage";
|
|
|
|
|
2024-04-17 13:25:07 +02:00
|
|
|
КонецЕсли;
|
2024-04-20 11:35:20 +02:00
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
Функция ИзменитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач Текст = "", Знач МассивБлоков = "") Экспорт
|
2024-04-17 13:25:07 +02:00
|
|
|
|
2024-04-20 11:35:20 +02:00
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
|
|
|
|
|
|
|
Строка_ = "Строка";
|
|
|
|
URL = "https://slack.com/api/chat.update";
|
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("channel", Канал , Строка_ , Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_ , Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("ts" , Отметка , Строка_ , Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("blocks" , МассивБлоков, "Коллекция", Параметры);
|
|
|
|
|
2024-04-16 10:06:08 +02:00
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
2024-04-17 13:25:07 +02:00
|
|
|
|
2024-04-17 16:21:22 +02:00
|
|
|
// Удалить сообщение
|
|
|
|
// Удаляет сообщение канала по timestamp
|
|
|
|
//
|
|
|
|
// Параметры:
|
2024-04-20 11:35:20 +02:00
|
|
|
// Токен - Строка - Токен бота - token
|
|
|
|
// Канал - Строка - Идентификатор канала - channel
|
|
|
|
// Отметка - Строка - Временная отметка или ID сообщения - stamp
|
|
|
|
// ЭтоОтложенное - Булево - Признак удаления отложенного сообщения - issheduled
|
2024-04-17 16:21:22 +02:00
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
|
2024-04-20 11:35:20 +02:00
|
|
|
Функция УдалитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач ЭтоОтложенное = Ложь) Экспорт
|
2024-04-17 13:25:07 +02:00
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
2024-04-20 11:35:20 +02:00
|
|
|
OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоОтложенное);
|
2024-04-16 10:06:08 +02:00
|
|
|
|
2024-04-17 13:25:07 +02:00
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
2024-04-20 11:35:20 +02:00
|
|
|
|
|
|
|
Если ЭтоОтложенное Тогда
|
|
|
|
URL = "https://slack.com/api/chat.deleteScheduledMessage";
|
|
|
|
ПолеОтметки = "scheduled_message_id";
|
|
|
|
Иначе
|
|
|
|
URL = "https://slack.com/api/chat.delete";
|
|
|
|
ПолеОтметки = "ts";
|
|
|
|
КонецЕсли;
|
2024-04-17 13:25:07 +02:00
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
2024-04-20 11:35:20 +02:00
|
|
|
OPI_Инструменты.ДобавитьПоле("channel" , Канал , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле(ПолеОтметки, Отметка, "Строка", Параметры);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
2024-04-17 13:25:07 +02:00
|
|
|
|
2024-04-20 11:35:20 +02:00
|
|
|
Функция ПолучитьСписокОтложенныхСообщений(Знач Токен, Знач Канал) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
|
|
|
|
|
|
|
URL = "https://slack.com/api/chat.scheduledMessages.list";
|
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка", Параметры);
|
|
|
|
|
2024-04-17 13:25:07 +02:00
|
|
|
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
2024-04-20 11:35:20 +02:00
|
|
|
|
|
|
|
Функция ПолучитьСсылкуНаСообщение(Знач Токен, Знач Канал, Знач Отметка) Экспорт
|
|
|
|
|
|
|
|
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
|
2024-04-17 13:25:07 +02:00
|
|
|
|
2024-04-20 11:35:20 +02:00
|
|
|
URL = "https://slack.com/api/chat.getPermalink";
|
|
|
|
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
|
|
|
|
|
|
|
|
Параметры = Новый Структура;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("channel" , Канал , "Строка", Параметры);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("message_ts", Отметка, "Строка", Параметры);
|
|
|
|
|
|
|
|
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-04-17 13:25:07 +02:00
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#Область ФормированиеБлоков
|
|
|
|
|
2024-04-17 16:21:22 +02:00
|
|
|
// Сформировать блок картинку
|
|
|
|
// Формирует блок с картинкой для добавления в массив блоков сообщения
|
|
|
|
//
|
|
|
|
// Параметры:
|
|
|
|
// URL - Строка - URL картинки
|
|
|
|
// АльтернативныйТекст - Строка - Альтернативный текст картинки
|
|
|
|
//
|
|
|
|
// Возвращаемое значение:
|
|
|
|
// Соответствие Из КлючИЗначение - Блок картинки
|
2024-04-17 13:25:07 +02:00
|
|
|
Функция СформироватьБлокКартинку(Знач URL, Знач АльтернативныйТекст = "") Экспорт
|
|
|
|
|
2024-04-20 11:35:20 +02:00
|
|
|
Блок = Новый Соответствие;
|
|
|
|
OPI_Инструменты.ДобавитьПоле("type" , "image" , "Строка", Блок);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("image_url", URL , "Строка", Блок);
|
|
|
|
OPI_Инструменты.ДобавитьПоле("alt_text" , АльтернативныйТекст , "Строка", Блок);
|
2024-04-17 13:25:07 +02:00
|
|
|
|
|
|
|
Возврат Блок;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
2024-04-16 10:06:08 +02:00
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#Область СлужебныеПроцедурыИФункции
|
|
|
|
|
|
|
|
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
|
|
|
|
|
|
|
|
Заголовки = Новый Соответствие;
|
|
|
|
Заголовки.Вставить("Authorization", "Bearer " + Токен);
|
|
|
|
Возврат Заголовки;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
#КонецОбласти
|