1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-25 22:12:29 +02:00
Files
OpenIntegrations/XML/CommonModules/OPI_GreenAPI/Ext/Module.bsl
Vitaly the Alpaca (bot) cdef2d02ab Main build (Jenkins)
2025-10-21 21:43:05 +03:00

1288 lines
77 KiB
Plaintext

// OneScript: ./OInt/core/Modules/OPI_GreenAPI.os
// Lib: Green API
// CLI: greenapi
// Keywords: greenapi, whatsapp
// MIT License
// Copyright (c) 2023-2025 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:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
// BSLLS:UsingSynchronousCalls-off
// BSLLS:MagicNumber-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check bsl-legacy-check-string-literal
#Область ПрограммныйИнтерфейс
#Область Аккаунт
// Сформировать параметры доступа
// Формирует структуру основных авторизационных данных
//
// Примечание:
// Подробнее в документации API: [Получить параметры доступа к инстансу](@green-api.com/docs/before-start/#parameters)
//
// Параметры:
// ApiUrl - Строка - Ссылка на хост API - api
// MediaUrl - Строка - Ссылка на хост API для отправки файлов - media
// IdInstance - Строка - Уникальный номер инстанса - id
// ApiTokenInstance - Строка - Ключ доступа инстанса - token
//
// Возвращаемое значение:
// Структура - Структура параметров доступа
Функция СформироватьПараметрыДоступа(Знач ApiUrl, Знач MediaUrl, Знач IdInstance, Знач ApiTokenInstance) Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("apiUrl" , ApiUrl , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("mediaUrl" , MediaUrl , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("idInstance" , IdInstance , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("apiTokenInstance", ApiTokenInstance, Строка_, Параметры);
Возврат Параметры;
КонецФункции
// Получить информацию об аккаунте
// Получает информацию об аккаунте
//
// Примечание:
// Метод в документации API: [GetWaSettings](@green-api.com/docs/api/account/GetWaSettings/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьИнформациюОбАккаунте(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getWaSettings");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
// Получить настройки инстанса
// Получает текущие настройки инстанса
//
// Примечание:
// Метод в документации API: [GetSettings](@green-api.com/docs/api/account/GetSettings/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьНастройкиИнстанса(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getSettings");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
// Установить настройки инстанса
// Устанавливает настройки инстанса
//
// Примечание
// Метод в документации API: [SetSettings](@green-api.com/docs/api/account/SetSettings/)
//
// Параметры:
// Настройки - Структура Из КлючИЗначение - Настройки инстанса. См. ПолучитьСтруктуруНастроекИнстанса - settings
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция УстановитьНастройкиИнстанса(Знач Настройки, Знач ПараметрыДоступа) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыДоступа);
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Настройки);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "setSettings");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Настройки);
Возврат Ответ;
КонецФункции
// Получить состояние инстанса
// Получает состояние инстанса
//
// Примечание:
// Метод в документации API: [GetStateInstance](@green-api.com/docs/api/account/GetStateInstance/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьСостояниеИнстанса(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getStateInstance");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
// Перезапустить инстанс
// Перезапускает инстанс
//
// Примечание:
// Метод в документации API: [Reboot](@green-api.com/docs/api/account/Reboot/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПерезапуститьИнстанс(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "reboot");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
// Разлогинить инстанс
// Разлогинивает инстанс
//
// Примечание:
// Метод в документации API: [Logout](@green-api.com/docs/api/account/Logout/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция РазлогинитьИнстанс(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "logout");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
// Получить QR
// Получает QR-код авторизации
//
// Примечание:
// Метод в документации API: [QR](@green-api.com/docs/api/account/QR/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// ДвоичныеДанные, Соответствие Из КлючИЗначение - QR код или информация об ошибке
Функция ПолучитьQR(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "qr");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Попытка
Если Ответ["type"] = "qrCode" Тогда
Результат = Base64Значение(Ответ["message"]);
КонецЕсли;
Исключение
Результат = Ответ;
КонецПопытки;
Возврат Результат;
КонецФункции
// Получить код авторизации
// Получает код авторизации для связи по номеру телефона
//
// Примечание:
// Метод в документации API: [GetAuthorizationCode](@green-api.com/docs/api/account/GetAuthorizationCode/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// НомерТелефона - Строка, Число - Номер телефона в международном формате без + и 00 - phone
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьКодАвторизации(Знач ПараметрыДоступа, Знач НомерТелефона) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("phoneNumber", НомерТелефона, "Число", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getAuthorizationCode");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Установить картинку профиля
// Устанавливает новую картинку профиля
//
// Примечание:
// Метод в документации API: [SetProfilePicture](@green-api.com/docs/api/account/SetProfilePicture/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// Картинка - ДвоичныеДанные, Строка - Картинка профиля - picture
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция УстановитьКартинкуПрофиля(Знач ПараметрыДоступа, Знач Картинка) Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
СоответствиеКартинки = Новый Соответствие();
СоответствиеКартинки.Вставить("file|file.jpg", Картинка);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "setProfilePicture");
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, , СоответствиеКартинки);
Возврат Ответ;
КонецФункции
// Архивировать чат
// Архивирует выбранный чат
//
// Примечание:
// Метод в документации API: [ArchiveChat](@green-api.com/docs/api/service/archiveChat/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - ID чата для архивации - chat
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция АрхивироватьЧат(Знач ПараметрыДоступа, Знач IDЧата) Экспорт
Возврат УправлениеАрхивациейЧата(ПараметрыДоступа, IDЧата, Истина);
КонецФункции
// Разархивировать чат
// Разархивирует выбранный чат
//
// Примечание:
// Метод в документации API: [UnarchiveChat](@green-api.com/docs/api/service/unarchiveChat/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - ID чата для разархивации - chat
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция РазархивироватьЧат(Знач ПараметрыДоступа, Знач IDЧата) Экспорт
Возврат УправлениеАрхивациейЧата(ПараметрыДоступа, IDЧата, Ложь);
КонецФункции
// Получить структуру настроек инстанса
// Получает шаблон структуры для установки настроек инстанса
//
// Параметры:
// Пустая - Булево - Истина > структура с пустыми значениями, Ложь > в значениях будут описания полей - empty
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Структура настроек инстанса
Функция ПолучитьСтруктуруНастроекИнстанса(Знач Пустая = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Пустая);
СтруктураНастроек = Новый Структура;
СтруктураНастроек.Вставить("webhookUrl" , "<URL для отправки уведомлений>");
СтруктураНастроек.Вставить("webhookUrlToken" , "<токен для доступа к вашему серверу уведомлений, если требуется>");
СтруктураНастроек.Вставить("delaySendMessagesMilliseconds" , "<интервал отправки сообщений в миллисекундах>");
СтруктураНастроек.Вставить("markIncomingMessagesReaded" , "<отмечать входящие сообщения прочитанными: yes, no>");
СтруктураНастроек.Вставить("markIncomingMessagesReadedOnReply", "<отмечать входящие сообщения прочитанными при отправке сообщения в чат: yes, no>");
СтруктураНастроек.Вставить("outgoingWebhook" , "<получать уведомления о статусах отправки/доставки/прочтении исходящих сообщений: yes, no>");
СтруктураНастроек.Вставить("outgoingMessageWebhook" , "<получать уведомления о сообщениях, отправленных с телефона: yes, no>");
СтруктураНастроек.Вставить("outgoingAPIMessageWebhook" , "<получать уведомления о сообщениях, отправленных через API: yes, no>");
СтруктураНастроек.Вставить("stateWebhook" , "<получать уведомления об изменении состояния авторизации инстанса: yes, no>");
СтруктураНастроек.Вставить("incomingWebhook" , "<получать уведомления о входящих сообщениях и файлах: yes, no>");
СтруктураНастроек.Вставить("deviceWebhook" , "<получать уведомления об устройстве (телефоне) и уровне заряда батареи: yes, no>");
СтруктураНастроек.Вставить("keepOnlineStatus" , "<выставляет статус 'В сети' для вашего аккаунта>");
СтруктураНастроек.Вставить("pollMessageWebhook" , "<получать уведомления о создании опроса и голосовании в опросе: yes, no>");
СтруктураНастроек.Вставить("incomingBlockWebhook" , "<получать уведомления о добавлении чата в список заблокированных контактов: yes, no>");
СтруктураНастроек.Вставить("incomingCallWebhook" , "<получать уведомления о статусах входящего звонка: yes, no>");
СтруктураНастроек.Вставить("editedMessageWebhook" , "<получать уведомления о факте того, что сообщение было отредактировано: yes, no>");
СтруктураНастроек.Вставить("deletedMessageWebhook" , "<получать уведомления о факте того, что сообщение было удалено: yes, no>");
Если Пустая Тогда
СтруктураНастроек = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураНастроек);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураНастроек;
КонецФункции
#КонецОбласти
#Область УправлениеГруппами
// Получить информацию о группе
// Получает данные группового чата
//
// Примечание:
// Метод в документации API: [GetGroupData](@green-api.com/docs/api/groups/GetGroupData/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьИнформациюОГруппе(Знач ПараметрыДоступа, Знач IDГруппы) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getGroupData");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Создать группу
// Создает новый групповой чат
//
// Примечание:
// Метод в документации API: [CreateGroup](@green-api.com/docs/api/groups/CreateGroup/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// Имя - Строка - Наименование группового чата - name
// Участники - Массив Из Строка - Массив участников чата - members
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция СоздатьГруппу(Знач ПараметрыДоступа, Знач Имя, Знач Участники = Неопределено) Экспорт
Если Не ЗначениеЗаполнено(Участники) Тогда
Участники = Новый Массив;
КонецЕсли;
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("groupName", Имя , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("chatIds" , Участники, "Коллекция", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "createGroup");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Изменить имя группы
// Изменяет имя существующей группы
//
// Примечание:
// Метод в документации API: [UpdateGroupName](@green-api.com/docs/api/groups/UpdateGroupName/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
// Имя - Строка - Новое наименование группового чата - name
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ИзменитьИмяГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач Имя) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("groupId" , IDГруппы, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("groupName", Имя , "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "updateGroupName");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Добавить участника в группу
// Добавляет участника в групповой чат
//
// Примечание:
// Метод в документации API: [AddGroupParticipant](@green-api.com/docs/api/groups/AddGroupParticipant/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
// IDПользователя - Строка - ID пользователя для добавления - user
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ДобавитьУчастникаВГруппу(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт
Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "addGroupParticipant");
Возврат Ответ;
КонецФункции
// Исключить участника группы
// Исключает участника из группы
//
// Примечание:
// Метод в документации API: [RemoveGroupParticipant](@green-api.com/docs/api/groups/RemoveGroupParticipant/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
// IDПользователя - Строка - ID пользователя для добавления - user
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ИсключитьУчастникаГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт
Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "removeGroupParticipant");
Возврат Ответ;
КонецФункции
// Назначить права администратора
// Назначает пользователя администратором группы
//
// Примечание:
// Метод в документации API: [SetGroupAdmin](@green-api.com/docs/api/groups/SetGroupAdmin/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
// IDПользователя - Строка - ID пользователя для добавления - user
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция НазначитьПраваАдминистратора(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт
Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "setGroupAdmin");
Возврат Ответ;
КонецФункции
// Отозвать права администратора
// Отзывает права администратора у пользователя
//
// Примечание:
// Метод в документации API: [RemoveAdmin](@green-api.com/docs/api/groups/RemoveAdmin/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
// IDПользователя - Строка - ID пользователя для добавления - user
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтозватьПраваАдминистратора(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя) Экспорт
Ответ = ДействиеСУчастникомГруппы(ПараметрыДоступа, IDГруппы, IDПользователя, "removeAdmin");
Возврат Ответ;
КонецФункции
// Покинуть группу
// Производит выход текущего аккаунта из группового чата
//
// Примечание:
// Метод в документации API: [LeaveGroup](@green-api.com/docs/api/groups/LeaveGroup/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПокинутьГруппу(Знач ПараметрыДоступа, Знач IDГруппы) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "leaveGroup");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Установить картинку группы
// Устанавливает картинку группового чата
//
// Примечание:
// Метод в документации API: [SetGroupPicture](@green-api.com/docs/api/groups/SetGroupPicture/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDГруппы - Строка - Идентификатор группового чата - group
// Картинка - ДвоичныеДанные, Строка - Картинка профиля - picture
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция УстановитьКартинкуГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач Картинка) Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("groupId", IDГруппы, "Строка", Параметры);
СоответствиеКартинки = Новый Соответствие();
СоответствиеКартинки.Вставить("file|file.jpg", Картинка);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "setGroupPicture");
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, СоответствиеКартинки);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область ОтправкаСообщений
// Отправить текстовое сообщение
// Отправляет текстовое сообщение в выбранный чат
//
// Примечание:
// Метод в документации API: [SendMessage](@green-api.com/docs/api/sending/SendMessage/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// Текст - Строка - Текст сообщения - text
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьТекстовоеСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач Текст, Знач IDЦитируемого = "") Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendMessage");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Отправить файл
// Отправляет файл в выбранный чат
//
// Примечание:
// Метод в документации API: [SendFileByUpload](@green-api.com/docs/api/sending/SendFileByUpload/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// Файл - Строка, ДвоичныеДанные - Данные или путь к файлу - file
// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename
// Описание - Строка - Текст сообщения под файлом - caption
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьФайл(Знач ПараметрыДоступа
, Знач IDЧата
, Знач Файл
, Знач ИмяФайла
, Знач Описание = ""
, Знач IDЦитируемого = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Файл);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры);
СоответствиеФайла = Новый Соответствие();
СоответствиеФайла.Вставить(СтрШаблон("file|%1", ИмяФайла), Файл);
URL = СформироватьМедиаURL(ПараметрыДоступа, "SendFileByUpload");
Ответ = OPI_ЗапросыHTTP.PostMultipart(URL, Параметры, СоответствиеФайла);
Возврат Ответ;
КонецФункции
// Отправить файл по URL
// Отправляет файл по URL в выбранный чат
//
// Примечание:
// Метод в документации API: [SendFileByUrl](@green-api.com/docs/api/sending/SendFileByUrl/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// URLФайла - Строка - URL файла для отправки - url
// ИмяФайла - Строка - Имя загружаемого файла с раширением - filename
// Описание - Строка - Текст сообщения под файлом - caption
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьФайлПоURL(Знач ПараметрыДоступа
, Знач IDЧата
, Знач URLФайла
, Знач ИмяФайла
, Знач Описание = ""
, Знач IDЦитируемого = "") Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("urlFile" , URLФайла , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("fileName" , ИмяФайла , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, Строка_, Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendFileByUrl");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Отправить опрос
// Отправляет опрос с вариантами ответов в выбранный чат
//
// Примечание:
// Метод в документации API: [SendPoll](@green-api.com/docs/api/sending/SendPoll/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// Текст - Строка - Текст сообщения - text
// Варианты - Массив Из Строка - Варианты ответов - options
// МножественныйВыбор - Булево - Позволяет выбирать несколько вариантов ответа - multi
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьОпрос(Знач ПараметрыДоступа
, Знач IDЧата
, Знач Текст
, Знач Варианты
, Знач МножественныйВыбор = Ложь
, Знач IDЦитируемого = "") Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
МассивВариантов = Новый Массив;
OPI_ПреобразованиеТипов.ПолучитьМассив(Варианты);
Для Каждого Вариант Из Варианты Цикл
МассивВариантов.Добавить(Новый Структура("optionName", Вариант));
КонецЦикла;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("options" , МассивВариантов , "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("multipleAnswers", МножественныйВыбор, "Булево" , Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого , Строка_ , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendPoll");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Отправить локацию
// Отправляет данные о местоположении в указанный чат
//
// Примечание:
// Метод в документации API: [SendPoll](@green-api.com/docs/api/sending/SendPoll/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// Локация - Структура Из КлючИЗначение - Описание локации. См. ПолучитьОписаниеЛокации - loc
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьЛокацию(Знач ПараметрыДоступа, Знач IDЧата, Знач Локация, Знач IDЦитируемого = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Локация);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка", Параметры);
Для Каждого Элемент Из Локация Цикл
Параметры.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЦикла;
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendLocation");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Отправить контакт
// Отправляет контакт с номером телефона в выбранный чат
//
// Примечание:
// Метод в документации API: [SendContact](@green-api.com/docs/api/sending/SendContact/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// Контакт - Структура Из КлючИЗначение - Описание контакта. См. ПолучитьОписаниеКонтакта - contact
// IDЦитируемого - Строка - ID цитируемого сообщения, если необходимо - quoted
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОтправитьКонтакт(Знач ПараметрыДоступа, Знач IDЧата, Знач Контакт, Знач IDЦитируемого = "") Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("contact" , Контакт , "Коллекция", Параметры);
OPI_Инструменты.ДобавитьПоле("quotedMessageId", IDЦитируемого, "Строка" , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "sendContact");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Переслать сообщения
// Пересылает сообщения из одного чата в другой
//
// Примечание:
// Метод в документации API: [ForwardMessages](@green-api.com/docs/api/sending/ForwardMessages/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// Откуда - Строка - ID чата источника сообщения - from
// Куда - Строка - ID чата приемника сообщения - to
// Сообщения - Строка, Массив Из Строка - Сообщения или одно сообщения для отправки - msgs
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПереслатьСообщения(Знач ПараметрыДоступа, Знач Откуда, Знач Куда, Знач Сообщения) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , Куда , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("chatIdFrom", Откуда , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("messages" , Сообщения, "Коллекция", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "forwardMessages");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Изменить текст сообщения
// Изменяет текст сообщения
//
// Примечание:
// Метод в документации API: [EditMessage](@green-api.com/docs/api/service/EditMessage/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// IDСообщения - Строка - Идентификатор сообщения - message
// Текст - Строка - Новый текст сообщения - text
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ИзменитьТекстСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач Текст) Экспорт
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("message" , Текст , Строка_, Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "editMessage");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Удалить сообщение
// Удаляет сообщение в выбранном чате
//
// Примечание:
// Метод в документации API: [DeleteMessage](@green-api.com/docs/api/service/deleteMessage/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// IDСообщения - Строка - Идентификатор сообщения - message
// ТолькоУОтправителя - Булево - Удалять только у отправителя - sender
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция УдалитьСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения, Знач ТолькоУОтправителя = Ложь) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage" , IDСообщения , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("onlySenderDelete", ТолькоУОтправителя, "Булево", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "deleteMessage");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить описание контакта
// Получает описание контакта для функции ОтправитьКонстакт
//
// Параметры:
// Телефон - Число - Телефон в международном формате без знака плюс - phone
// Имя - Строка - Имя контакта - name
// Фамилия - Строка - Фамилия контакта - surname
// Отчество - Строка - Отчество контакта - midname
// Компания - Строка - Название компании контакта - company
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Описание контакта
Функция ПолучитьОписаниеКонтакта(Знач Телефон
, Знач Имя = ""
, Знач Фамилия = ""
, Знач Отчество = ""
, Знач Компания = "") Экспорт
Строка_ = "Строка";
Контакт = Новый Структура;
OPI_Инструменты.ДобавитьПоле("phoneContact", Телефон , "Число", Контакт);
OPI_Инструменты.ДобавитьПоле("firstName" , Имя , Строка_, Контакт);
OPI_Инструменты.ДобавитьПоле("middleName" , Фамилия , Строка_, Контакт);
OPI_Инструменты.ДобавитьПоле("lastName" , Отчество, Строка_, Контакт);
OPI_Инструменты.ДобавитьПоле("company" , Компания, Строка_, Контакт);
Возврат Контакт;
КонецФункции
// Получить описание локации
// Получает описание локации для отправки в ОтправитьЛокацию
//
// Параметры:
// Широта - Число - Географическая широта - lat
// Долгота - Число - Географическая долгота - long
// Адрес - Строка - Адрес локации - addr
// Название - Строка - Название локации - name
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Описание локации
Функция ПолучитьОписаниеЛокации(Знач Широта, Знач Долгота, Знач Адрес = "", Знач Название = "") Экспорт
Локация = Новый Структура;
OPI_Инструменты.ДобавитьПоле("latitude" , Широта , "Число" , Локация);
OPI_Инструменты.ДобавитьПоле("longitude" , Долгота , "Число" , Локация);
OPI_Инструменты.ДобавитьПоле("address" , Адрес , "Строка", Локация);
OPI_Инструменты.ДобавитьПоле("nameLocation", Название, "Строка", Локация);
Возврат Локация;
КонецФункции
#КонецОбласти
#Область ПолучениеУведомлений
// Получить уведомление
// Получает одно уведомление из очереди
//
// Примечание:
// После успешного принятия уведомления, необходимо удалить его из очереди при помощи метода `УдалитьУведомлениеИзОчереди`
// Метод в документации API: [ReceiveNotification](@green-api.com/docs/api/receiving/technology-http-api/ReceiveNotification/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// Таймаут - Число - Таймаут ожидания новых сообщений при пустой очереди - timeout
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьУведомление(Знач ПараметрыДоступа, Знач Таймаут = 5) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("receiveTimeout", Таймаут, "Число", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "receiveNotification");
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Удалить уведомление из очереди
// Удаляет уведомление из очерели после успешного получения
//
// Примечание:
// Метод в документации API: [DeleteNotification](@green-api.com/docs/api/receiving/technology-http-api/DeleteNotification/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDДоставки - Строка, Число - Идентификатор доставки из метода ПолучитьУведомление - receipt
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция УдалитьУведомлениеИзОчереди(Знач ПараметрыДоступа, Знач IDДоставки) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDДоставки);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "deleteNotification");
URL = СтрШаблон("%1/%2", URL, IDДоставки);
Ответ = OPI_ЗапросыHTTP.Delete(URL);
Возврат Ответ;
КонецФункции
// Скачать файл сообщения
// Получает ссылку на скачивание файла из входящего сообщения
//
// Примечание:
// Метод в документации API: [DownloadFile](@green-api.com/docs/api/receiving/files/DownloadFile/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// IDСообщения - Строка - Идентификатор сообщения с файлом - message
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция СкачатьФайлСообщения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "downloadFile");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Установить отметку прочтения
// Устанавливает отметку Прочитано для сообщения или всех сообщений чата
//
// Примечание:
// Метод в документации API: [ReadChat](@green-api.com/docs/api/marks/ReadChat/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// IDСообщения - Строка - Идентификатор сообщения. Все сообщения, если не заполнено - message
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция УстановитьОтметкуПрочтения(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения = "") Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage" , IDСообщения, "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "readChat");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область ОчередьСообщений
// Получить очередь сообщений
// Получает список сообщений в очереди на отправку
//
// Примечание:
// Метод в документации API: [ShowMessagesQueue](@green-api.com/docs/api/queues/ShowMessagesQueue/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьОчередьСообщений(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "showMessagesQueue");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
// Очистить очередь сообщений
// Очищает очередь сообщений на отправку
//
// Примечание:
// Метод в документации API: [ClearMessagesQueue](@green-api.com/docs/api/queues/ClearMessagesQueue/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ОчиститьОчередьСообщений(Знач ПараметрыДоступа) Экспорт
URL = СформироватьОсновнойURL(ПараметрыДоступа, "clearMessagesQueue");
Ответ = OPI_ЗапросыHTTP.Get(URL);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область ЖурналыСообщений
// Получить историю чата
// Получает историю сообщений чата
//
// Примечание:
// Метод в документации API: [GetChatHistory](@green-api.com/docs/api/journals/GetChatHistory/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// Количество - Число - Количество сообщений для получения - count
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьИсториюЧата(Знач ПараметрыДоступа, Знач IDЧата, Знач Количество = 100) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId", IDЧата , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("count" , Количество, "Число" , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getChatHistory");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить сообщение
// Получает информацию о сообщении чата по ID
//
// Примечание:
// Метод в документации API: [GetMessage](@green-api.com/docs/api/journals/GetMessage/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// IDЧата - Строка - Идентификатор чата - chat
// IDСообщения - Строка - Идентификатор сообщения - msg
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьСообщение(Знач ПараметрыДоступа, Знач IDЧата, Знач IDСообщения) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId" , IDЧата , "Строка" , Параметры);
OPI_Инструменты.ДобавитьПоле("idMessage", IDСообщения, "Строка" , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "getMessage");
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
// Получить журнал входящих сообщений
// Получает список входящих сообщений инстанса за указанный интервал
//
// Примечание:
// Метод в документации API: [LastIncomingMessages](@green-api.com/docs/api/journals/LastIncomingMessages/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// Период - Число - Время в минутах, за которое требуется показать сообщения - period
//
// Возвращаемое значение:
// Массив Из Произвольный - сериализованный JSON ответа от Green API
Функция ПолучитьЖурналВходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastIncomingMessages");
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
Если Не ЗначениеЗаполнено(Ответ) Тогда
Возврат Новый Массив;
КонецЕсли;
Возврат Ответ;
КонецФункции
// Получить журнал исходящих сообщений
// Получает список исходящих сообщений инстанса за указанный интервал
//
// Примечание:
// Метод в документации API: [LastOutgoingMessages](@green-api.com/docs/api/journals/LastOutgoingMessages/)
//
// Параметры:
// ПараметрыДоступа - Структура Из КлючИЗначение - Параметры доступа. См. СформироватьПараметрыДоступа - access
// Период - Число - Время в минутах, за которое требуется показать сообщения - period
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Green API
Функция ПолучитьЖурналИсходящихСообщений(Знач ПараметрыДоступа, Знач Период = 1440) Экспорт
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("minutes", Период, "Число" , Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, "lastOutgoingMessages");
Ответ = OPI_ЗапросыHTTP.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция СформироватьОсновнойURL(Знач ПараметрыДоступа, Знач Метод)
Возврат СформироватьURL(ПараметрыДоступа, Метод, "apiUrl");
КонецФункции
Функция СформироватьМедиаURL(Знач ПараметрыДоступа, Знач Метод)
Возврат СформироватьURL(ПараметрыДоступа, Метод, "mediaUrl");
КонецФункции
Функция СформироватьURL(ПараметрыДоступа, Метод, ПолеURL)
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(ПараметрыДоступа);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Метод);
ОбязательныеПоля = СтрРазделить(ПолеURL + ",idInstance,apiTokenInstance", ",");
ОтсутствующиеПоля = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(ПараметрыДоступа, ОбязательныеПоля);
Если ОтсутствующиеПоля.Количество() > 0 Тогда
ВызватьИсключение "Отсутствуют обязательные поля в параметрах доступа!";
КонецЕсли;
Url = ПараметрыДоступа[ПолеURL];
IdInstance = ПараметрыДоступа["idInstance"];
ApiTokenInstance = ПараметрыДоступа["apiTokenInstance"];
URL = СтрШаблон("%1/waInstance%2/%3/%4", Url, IdInstance, Метод, ApiTokenInstance);
Возврат URL;
КонецФункции
Функция ДействиеСУчастникомГруппы(Знач ПараметрыДоступа, Знач IDГруппы, Знач IDПользователя, Знач Метод)
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("groupId" , IDГруппы , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("participantChatId", IDПользователя, "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, Метод);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
Функция УправлениеАрхивациейЧата(Знач ПараметрыДоступа, Знач IDЧата, Знач Архивация)
Метод = ?(Архивация, "archiveChat", "unarchiveChat");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("chatId", IDЧата, "Строка", Параметры);
URL = СформироватьОсновнойURL(ПараметрыДоступа, Метод);
Ответ = OPI_ЗапросыHTTP.PostСТелом(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти