1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-11-28 09:08:38 +02:00

Преобразование OPI -> OInt (workflow)

This commit is contained in:
Vitaly the Alpaca 2024-04-22 06:22:23 +00:00 committed by Vitaly the Alpaca (bot)
parent 0b3a1119d7
commit 83399a4110
5 changed files with 739 additions and 98 deletions

View File

@ -730,10 +730,26 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ОтправитьУдалитьСообщение"
- name: Отправить/Удалить эфимерное
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ОтправитьУдалитьЭфимерное"
- name: Получить отложенные сообщения
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ПолучитьОтложенныеСообщения"
- name: Создать/Архивировать канал
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_СоздатьАрхивироватьКанал"
- name: Получить список каналов
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ПолучитьСписокКаналов"
- name: Открыть/Закрыть диалог
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "Слак_ОткрытьЗакрытьДиалог"
Encode:
runs-on: ubuntu-latest
needs: Testing-Twitter

View File

@ -42,8 +42,6 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьИнформациюОБоте(Знач Токен) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "https://slack.com/api/auth.test";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
@ -57,18 +55,20 @@
// Получает список рабочих областей, в которых подключен бот
//
// Параметры:
// Токен - Строка - Токен бота - token
// Токен - Строка - Токен бота - token
// Курсор - Строка - Указатель из предыдущего запроса, если строк результата > 100 - cursor
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокРабочихОбластей(Знач Токен) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Функция ПолучитьСписокРабочихОбластей(Знач Токен, Знач Курсор = "") Экспорт
URL = "https://slack.com/api/auth.teams.list";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("cursor", Курсор, "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
@ -76,7 +76,7 @@
#КонецОбласти
#Область РаботаСЧатами
#Область РаботаССообщениями
// Отправить сообщение
// Отправляет сообщение в выбранный час
@ -86,23 +86,23 @@
// Канал - Строка - Идентификатор канала - channel
// Текст - Строка - Текст сообщения - text
// ДатаОтправки - Дата - Дата отправки для отложенного сообщения - date
// МассивБлоков - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков
// Блоки - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ОтправитьСообщение(Знач Токен, Знач Канал, Знач Текст = "", Знач ДатаОтправки = "", Знач МассивБлоков = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
ЕстьБлоки = ЗначениеЗаполнено(МассивБлоков);
ЕстьДата = ЗначениеЗаполнено(ДатаОтправки);
Функция ОтправитьСообщение(Знач Токен, Знач Канал, Знач Текст = "", Знач ДатаОтправки = "", Знач Блоки = "") Экспорт
ЕстьДата = ЗначениеЗаполнено(ДатаОтправки);
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Если ЗначениеЗаполнено(Блоки) И Не ТипЗнч(Блоки) = Тип("Строка") Тогда
OPI_ПреобразованиеТипов.ПолучитьМассив(Блоки);
КонецЕсли;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("blocks" , МассивБлоков, "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("blocks" , Блоки, "Коллекция", Параметры);
Если ЕстьДата Тогда
@ -121,9 +121,58 @@
КонецФункции
Функция ИзменитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач Текст = "", Знач МассивБлоков = "") Экспорт
// Отправить эфимерное сообщение
// Отправляет сообщение, которое приходит в канал, но видно
// только конкретному пользователю
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Идентификатор канала - channel
// Текст - Строка - Текст сообщения - text
// Пользователь - Строка - ID пользователя - user
// Блоки - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ОтправитьЭфимерноеСообщение(Знач Токен
, Знач Канал
, Знач Текст = ""
, Знач Пользователь = ""
, Знач Блоки = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Если ЗначениеЗаполнено(Блоки) И Не ТипЗнч(Блоки) = Тип("Строка") Тогда
OPI_ПреобразованиеТипов.ПолучитьМассив(Блоки);
КонецЕсли;
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("user" , Пользователь, "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("blocks" , Блоки , "Коллекция", Параметры);
URL = "https://slack.com/api/chat.postEphemeral";
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Изменить сообщение
// Изменяет состав существующего сообщения
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Идентификатор канала - channel
// Отметка - Строка - Временная отметка сообщения - stamp
// Текст - Строка - Новый текст сообщения - text
// МассивБлоков - Массив Из Структура - Массив описаний блоков - blocks - JSON массива описаний блоков
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ИзменитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач Текст = "", Знач МассивБлоков = "") Экспорт
Строка_ = "Строка";
URL = "https://slack.com/api/chat.update";
@ -154,7 +203,6 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция УдалитьСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач ЭтоОтложенное = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьБулево(ЭтоОтложенное);
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
@ -177,15 +225,24 @@
КонецФункции
Функция ПолучитьСписокОтложенныхСообщений(Знач Токен, Знач Канал) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
// Получить список отложенных сообщений
// Получает список отложенных сообщений канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Идентификатор канала - channel
// Курсор - Строка - Указатель из предыдущего запроса, если строк результата > 100 - cursor
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокОтложенныхСообщений(Знач Токен, Знач Канал, Знач Курсор = "") Экспорт
URL = "https://slack.com/api/chat.scheduledMessages.list";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
@ -193,10 +250,18 @@
КонецФункции
// Получить ссылку на сообщение
// Получает постоянный UTL к сообщению канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Идентификатор канала - channel
// Отметка - Строка - Временная отметка или ID сообщения - stamp
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСсылкуНаСообщение(Знач Токен, Знач Канал, Знач Отметка) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "https://slack.com/api/chat.getPermalink";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
@ -210,6 +275,372 @@
КонецФункции
// Получить список ответов на сообщение
// Получает массив сообщений, которые являются ответом на указанное
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Идентификатор канала - channel
// Отметка - Строка - Временная отметка или ID сообщения - stamp
// Курсор - Строка - Указатель из предыдущего запроса, если строк результата > 100 - cursor
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокОтветовНаСообщение(Знач Токен, Знач Канал, Знач Отметка, Знач Курсор = "") Экспорт
URL = "https://slack.com/api/conversations.replies";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("ts" , Отметка, "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСКаналами
// Получить список каналов
// Получает список доступных каналов
//
// Параметры:
// Токен - Строка - Токен бота - token
// ИсключатьАрхивированные - Булево - Признак исключения архивированных каналов - notarchived
// Курсор - Строка - Указатель из предыдущего запроса, если строк результата > 100 - cursor
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокКаналов(Знач Токен, Знач ИсключатьАрхивированные = Ложь, Знач Курсор = "") Экспорт
URL = "https://slack.com/api/conversations.list";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("exclude_archived", ИсключатьАрхивированные, "Булево", Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Получить список пользователей канала
// Получает список пользователей указанного канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - Идентификатор канала - channel
// Курсор - Строка - Указатель из предыдущего запроса, если строк результата > 100 - cursor
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьСписокПользователейКанала(Знач Токен, Знач Канал, Знач Курсор = "") Экспорт
URL = "https://slack.com/api/conversations.members";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("cursor" , Курсор, "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Создать канал
// Создает новый канал
//
// Параметры:
// Токен - Строка - Токен бота - token
// Название - Строка - Наименование канала - title
// Приватный - Булево - Создать канал приватным - private
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция СоздатьКанал(Знач Токен, Знач Название, Знач Приватный = Ложь) Экспорт
URL = "https://slack.com/api/conversations.create";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("name" , Название , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("is_private", Приватный, "Булево", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Архивировать канал
// Архивирует активный канал
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция АрхивироватьКанал(Знач Токен, Знач Канал) Экспорт
URL = "https://slack.com/api/conversations.archive";
Ответ = УправлениеДиалогом(Токен, Канал, URL);
Возврат Ответ;
КонецФункции
// Получить канал
// Получает информацию о канале
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьКанал(Знач Токен, Знач Канал) Экспорт
URL = "https://slack.com/api/conversations.info";
Ответ = УправлениеДиалогом(Токен, Канал, URL, "GET");
Возврат Ответ;
КонецФункции
// Получить историю канала
// Получает информацию событиях канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПолучитьИсториюКанала(Знач Токен, Знач Канал) Экспорт
URL = "https://slack.com/api/conversations.history";
Ответ = УправлениеДиалогом(Токен, Канал, URL, "GET");
Возврат Ответ;
КонецФункции
// Пригласить пользователей в канал
// Добавляет указанных пользователей в канал
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
// МассивПользователей - Массив Из Строка - Массив ID пользователей - users
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПригласитьПользователейВКанал(Знач Токен, Знач Канал, Знач МассивПользователей) Экспорт
URL = "https://slack.com/api/conversations.invite";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПользователей);
МассивПользователей = СтрСоединить(МассивПользователей, ",");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("users" , МассивПользователей, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Выгнать пользователя из канала
// Удаляет указанного пользователя из канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
// Пользователь - Строка - ID пользователя - user
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ВыгнатьПользователяИзКанала(Знач Токен, Знач Канал, Знач Пользователь) Экспорт
URL = "https://slack.com/api/conversations.kick";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("user" , Пользователь, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Вступить в канал
// Добавляет текущего бота в канал
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ВступитьВКанал(Знач Токен, Знач Канал) Экспорт
URL = "https://slack.com/api/conversations.join";
Ответ = УправлениеДиалогом(Токен, Канал, URL);
Возврат Ответ;
КонецФункции
// Покинуть канал
// Удаляет текущего бота из канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПокинутьКанал(Знач Токен, Знач Канал) Экспорт
URL = "https://slack.com/api/conversations.leave";
Ответ = УправлениеДиалогом(Токен, Канал, URL);
Возврат Ответ;
КонецФункции
// Установить тему канала
// Устанавливает тему канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
// Тема - Строка - Тема канала - theme
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция УстановитьТемуКанала(Знач Токен, Знач Канал, Знач Тема) Экспорт
URL = "https://slack.com/api/conversations.setTopic";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("topic" , Тема , "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Установить цель канала
// Устанавливает цель (описание) канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
// Цель - Строка - Цель канала - purpose
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция УстановитьЦельКанала(Знач Токен, Знач Канал, Знач Цель) Экспорт
URL = "https://slack.com/api/conversations.setPurpose";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("purpose", Цель , "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Переименовать канал
// Изменяет название канала
//
// Параметры:
// Токен - Строка - Токен бота - token
// Канал - Строка - ID канала - channel
// Название - Строка - Новое название канала - title
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ПереименоватьКанал(Знач Токен, Знач Канал, Знач Название) Экспорт
URL = "https://slack.com/api/conversations.rename";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("name" , Название, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСДиалогами
// Открыть диалог
// Открывает новый диалог с одним или несколькими пользователями
//
// Параметры:
// Токен - Строка - Токен бота - token
// МассивПользователей - Массив из Строка - Массив ID пользователей - users
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ОткрытьДиалог(Знач Токен, Знач МассивПользователей) Экспорт
URL = "https://slack.com/api/conversations.open";
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(МассивПользователей);
МассивПользователей = СтрСоединить(МассивПользователей, ",");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("users", МассивПользователей, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Возврат Ответ;
КонецФункции
// Закрыть диалог
// Закрывает существующий диалог
//
// Параметры:
// Токен - Строка - Токен бота
// Диалог - Строка - ID диалога
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Slack
Функция ЗакрытьДиалог(Знач Токен, Знач Диалог) Экспорт
URL = "https://slack.com/api/conversations.close";
Ответ = УправлениеДиалогом(Токен, Диалог, URL);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область ФормированиеБлоков
@ -242,10 +673,30 @@
Функция ПолучитьЗаголовокАвторизации(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
Функция УправлениеДиалогом(Знач Токен, Знач Канал, Знач URL, Знач ВидЗапроса = "POST")
Заголовки = ПолучитьЗаголовокАвторизации(Токен);
ВидЗапроса = вРег(ВидЗапроса);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("channel", Канал, "Строка", Параметры);
Если ВидЗапроса = "POST" Тогда
Ответ = OPI_Инструменты.Post(URL, Параметры, Заголовки);
Иначе
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
КонецЕсли;
Возврат Ответ;
КонецФункции
#КонецОбласти

View File

@ -46,14 +46,11 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("url" , URL);
СтруктураПараметров.Вставить("auth_token", Токен);
Возврат OPI_Инструменты.Post("https://chatapi.viber.com/pa/set_webhook", СтруктураПараметров);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("url" , URL , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("auth_token" , Токен, "Строка", Параметры);
Возврат OPI_Инструменты.Post("https://chatapi.viber.com/pa/set_webhook", Параметры);
КонецФункции
@ -68,8 +65,6 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
Функция ПолучитьИнформациюОКанале(Знач Токен) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "https://chatapi.viber.com/pa/get_account_info";
Возврат OPI_Инструменты.Get(URL, , ТокенВЗаголовки(Токен));
@ -86,22 +81,15 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
Функция ПолучитьДанныеПользователя(Знач Токен, Знач IDПользователя) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDПользователя);
URL = "https://chatapi.viber.com/pa/get_user_details";
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("id", IDПользователя);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("id", IDПользователя, "Строка", Параметры);
Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
Возврат Ответ;
Попытка
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
Исключение
Возврат Ответ;
КонецПопытки;
КонецФункции
// Получить онлайн пользователей
@ -115,21 +103,14 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
Функция ПолучитьОнлайнПользователей(Знач Токен, Знач IDПользователей) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(IDПользователей);
URL = "https://chatapi.viber.com/pa/get_online";
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ids", IDПользователей);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("ids", IDПользователей, "Коллекция", Параметры);
Ответ = OPI_Инструменты.Post(URL, СтруктураПараметров, ТокенВЗаголовки(Токен));
Ответ = OPI_Инструменты.Post(URL, Параметры, ТокенВЗаголовки(Токен));
Попытка
Возврат OPI_Инструменты.JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные());
Исключение
Возврат Ответ;
КонецПопытки;
Возврат Ответ;
КонецФункции
@ -196,11 +177,7 @@
, Знач ОтправкаВКанал
, Знач Расширение
, Знач Размер = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Расширение);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Размер);
Если Не ЗначениеЗаполнено(Размер) Тогда
Ответ = OPI_Инструменты.Get(URL);
@ -210,12 +187,12 @@
Расширение = СтрЗаменить(Расширение, ".", "");
СтруктураЗначения = Новый Структура;
СтруктураЗначения.Вставить("URL" , URL);
СтруктураЗначения.Вставить("Размер" , Размер);
СтруктураЗначения.Вставить("Расширение" , Расширение);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("URL" , URL , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("Размер" , Размер , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("Расширение", Расширение, "Строка", Параметры);
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, СтруктураЗначения);
Возврат ОтправитьСообщение(Токен, "file", IDПользователя, ОтправкаВКанал, Параметры);
КонецФункции
@ -237,14 +214,11 @@
, Знач IDПользователя
, Знач ОтправкаВКанал) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(ИмяКонтакта);
OPI_ПреобразованиеТипов.ПолучитьСтроку(НомерТелефона);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("name" , ИмяКонтакта , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("phone_number", НомерТелефона, "Строка", Параметры);
СтруктураКонтакта = Новый Структура;
СтруктураКонтакта.Вставить("name" , ИмяКонтакта);
СтруктураКонтакта.Вставить("phone_number", НомерТелефона);
Возврат ОтправитьСообщение(Токен, "contact", IDПользователя, ОтправкаВКанал, СтруктураКонтакта);
Возврат ОтправитьСообщение(Токен, "contact", IDПользователя, ОтправкаВКанал, Параметры);
КонецФункции
@ -262,14 +236,11 @@
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Viber
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Широта);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Долгота);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("lat", Широта , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("lon", Долгота, "Строка", Параметры);
СтруктураЛокации = Новый Структура;
СтруктураЛокации.Вставить("lat", Широта);
СтруктураЛокации.Вставить("lon", Долгота);
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, СтруктураЛокации);
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, Параметры);
КонецФункции
@ -427,6 +398,8 @@
Функция ТокенВЗаголовки(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
СтруктураЗаголовков = Новый Соответствие;
СтруктураЗаголовков.Вставить("X-Viber-Auth-Token", Токен);
Возврат СтруктураЗаголовков;

View File

@ -2873,6 +2873,9 @@
Отметка = Результат["ts"];
Результат = OPI_Slack.ПолучитьСписокОтветовНаСообщение(Токен, Канал, Отметка);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["messages"]).ИмеетТип("Массив");
Результат = OPI_Slack.ПолучитьСсылкуНаСообщение(Токен, Канал, Отметка);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["channel"]).Равно(Канал);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["permalink"]).Заполнено();
@ -2930,6 +2933,24 @@
КонецПроцедуры
Процедура Слак_ОтправитьУдалитьЭфимерное() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Канал = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Channel");
Пользователь = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_User");
Картинка = "https://github.com/Bayselonarrend/OpenIntegrations/raw/main/Media/logo.png?v1";
Текст = "Тестовое сообщение 1";
Блок = OPI_Slack.СформироватьБлокКартинку(Картинка, "Yo");
Результат = OPI_Slack.ОтправитьЭфимерноеСообщение(Токен, Канал, Текст, Пользователь, Блок);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьСообщение");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["message_ts"]).Заполнено();
КонецПроцедуры
Процедура Слак_ПолучитьОтложенныеСообщения() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
@ -2944,6 +2965,182 @@
КонецПроцедуры
Процедура Слак_СоздатьАрхивироватьКанал() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Пользователь = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_User");
Имя = "testconv" + Строка(Новый УникальныйИдентификатор);
Тема = "Тестовая тема";
Цель = "Тестовая цель";
#Область СоздатьКанал
Результат = OPI_Slack.СоздатьКанал(Токен, Имя);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКанал");
Данные = Результат["channel"];
Канал = Данные["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["name"]).Равно(Имя);
#КонецОбласти
#Область УстановитьТемуКанала
Результат = OPI_Slack.УстановитьТемуКанала(Токен, Канал, Тема);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТемуКанала");
Данные = Результат["channel"];
Канал = Данные["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["name"]).Равно(Имя);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["topic"]["value"]).Равно(Тема);
#КонецОбласти
#Область УстановитьЦельКанала
Результат = OPI_Slack.УстановитьЦельКанала(Токен, Канал, Цель);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыгнатьПользователяИзКанала");
Проверка_СлакОк(Результат);
#КонецОбласти
#Область ПолучитьКанал
Результат = OPI_Slack.ПолучитьКанал(Токен, Канал);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьКанал");
Данные = Результат["channel"];
Канал = Данные["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["name"]).Равно(Имя);
#КонецОбласти
#Область ПригласитьПользователейВКанал
Результат = OPI_Slack.ПригласитьПользователейВКанал(Токен, Канал, Пользователь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПригласитьПользователейВКанал");
Данные = Результат["channel"];
Канал = Данные["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["name"]).Равно(Имя);
#КонецОбласти
#Область ВыгнатьПользователяИзКанала
Результат = OPI_Slack.ВыгнатьПользователяИзКанала(Токен, Канал, Пользователь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыгнатьПользователяИзКанала");
Проверка_СлакОк(Результат);
#КонецОбласти
#Область ПолучитьИсториюКанала
Результат = OPI_Slack.ПолучитьИсториюКанала(Токен, Канал);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИсториюКанала");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["messages"]).ИмеетТип("Массив");
#КонецОбласти
#Область ПолучитьСписокПользователейКанала
Результат = OPI_Slack.ПолучитьСписокПользователейКанала(Токен, Канал);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокПользователейКанала");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["members"]).ИмеетТип("Массив");
#КонецОбласти
#Область ПокинутьКанал
Результат = OPI_Slack.ПокинутьКанал(Токен, Канал);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПокинутьКанал");
Проверка_СлакОк(Результат);
#КонецОбласти
#Область ВступитьВКанал
Результат = OPI_Slack.ВступитьВКанал(Токен, Канал);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВступитьВКанал");
Данные = Результат["channel"];
Канал = Данные["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["name"]).Равно(Имя);
#КонецОбласти
#Область ПереименоватьКанал
НовоеИмя = "testconv" + Строка(Новый УникальныйИдентификатор);
Результат = OPI_Slack.ПереименоватьКанал(Токен, Канал, НовоеИмя);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВступитьВКанал");
Данные = Результат["channel"];
Канал = Данные["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Данные["name"]).Равно(НовоеИмя);
#КонецОбласти
#Область АрхивироватьКанал
Результат = OPI_Slack.АрхивироватьКанал(Токен, Канал);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "АрхивироватьКанал");
Проверка_СлакОк(Результат);
#КонецОбласти
КонецПроцедуры
Процедура Слак_ПолучитьСписокКаналов() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Результат = OPI_Slack.ПолучитьСписокКаналов(Токен);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокКаналов");
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["channels"]).ИмеетТип("Массив");
КонецПроцедуры
Процедура Слак_ОткрытьЗакрытьДиалог() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_Token");
Пользователь = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Slack_User");
Текст = "Yo, dude";
Результат = OPI_Slack.ОткрытьДиалог(Токен, Пользователь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОткрытьДиалог");
Диалог = Результат["channel"]["id"];
Проверка_СлакОк(Результат);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["channel"]).ИмеетТип("Соответствие");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Диалог).Заполнено();
Результат = OPI_Slack.ОтправитьСообщение(Токен, Диалог, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьСообщение");
Проверка_СлакОк(Результат);
Результат = OPI_Slack.ЗакрытьДиалог(Токен, Диалог);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗакрытьДиалог");
Проверка_СлакОк(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -161,20 +161,24 @@
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер);
НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОБазе" , "Получить информацию о базе" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницуВБазу" , "Создать страницу в базу" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ИзменитьСвойстваСтраницы" , "Изменить свойства страницы" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницу" , "Создать страницу" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьИзменитьБазу" , "Создать/Изменить базу" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОСтранице" , "Получить информацию о странице" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьИнформациюОБазе" , "Получить информацию о базе" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьСтраницуВБазу" , "Создать страницу в базу" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ИзменитьСвойстваСтраницы" , "Изменить свойства страницы" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_СоздатьУдалитьБлок" , "Создать/Удалить блок" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьПользователей" , "Получить пользователей" , Ноушн);
НовыйТест(ТаблицаТестов, "Ноушн_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Ноушн);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьСообщение" , "Отправить/Удалить сообщение" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьОтложенныеСообщения" , "Получить отложенные сообщения" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьИнформациюОБоте" , "Получить информацию о боте" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокОбластей" , "Получить список областей" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьСообщение" , "Отправить/Удалить сообщение" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОтправитьУдалитьЭфимерное" , "Отправить/Удалить эфимерное" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьОтложенныеСообщения" , "Получить отложенные сообщения" , Слак);
НовыйТест(ТаблицаТестов, "Слак_СоздатьАрхивироватьКанал" , "Создать/Архивировать канал" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ПолучитьСписокКаналов" , "Получить список каналов" , Слак);
НовыйТест(ТаблицаТестов, "Слак_ОткрытьЗакрытьДиалог" , "Открыть/Закрыть диалог" , Слак);
Возврат ТаблицаТестов;