You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Доработки по API Twitter и по мелочи остальных
This commit is contained in:
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
#Область Бот
|
#Область ДанныеИНастройка
|
||||||
|
|
||||||
// Получить информацию бота.
|
// Получить информацию бота.
|
||||||
//
|
//
|
||||||
@@ -54,6 +54,24 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Установить Webhook.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// Токен - Строка - Токен
|
||||||
|
// URL - Строка - Адрес обработки запросов от Telegram (с https://)
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||||
|
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
||||||
|
|
||||||
|
Параметры_ = Новый Структура;
|
||||||
|
Параметры_.Вставить("url", URL);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
// Обработать данные, полученные на Webhook.
|
// Обработать данные, полученные на Webhook.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
@@ -141,7 +159,7 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область Диалоги
|
#Область ОтправкаДанных
|
||||||
|
|
||||||
// Отправить текстовое сообщение.
|
// Отправить текстовое сообщение.
|
||||||
//
|
//
|
||||||
@@ -269,7 +287,7 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||||
//@skip-check doc-comment-collection-item-type
|
//@skip-check doc-comment-collection-item-type
|
||||||
Функция ОтправитьНаборЛюбыхФайлов(Знач Токен
|
Функция ОтправитьМедиагруппу(Знач Токен
|
||||||
, Знач IDЧата
|
, Знач IDЧата
|
||||||
, Знач Текст
|
, Знач Текст
|
||||||
, Знач СоответствиеФайлов
|
, Знач СоответствиеФайлов
|
||||||
@@ -693,23 +711,36 @@
|
|||||||
// Параметры:
|
// Параметры:
|
||||||
// МассивКнопок - Массив из Строка - Массив кнопок
|
// МассивКнопок - Массив из Строка - Массив кнопок
|
||||||
// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели
|
// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели
|
||||||
|
// ОднаПодОдной - Булево - Истина - кнопки выводятся в столбик, Ложь - в строку
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка - JSON клавиатуры
|
// Строка - JSON клавиатуры
|
||||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок, Знач ПодСообщением = Ложь) Экспорт
|
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок, Знач ПодСообщением = Ложь, Знач ОднаПодОдной = Истина) Экспорт
|
||||||
|
|
||||||
Строки = Новый Массив;
|
|
||||||
Кнопки = Новый Массив;
|
|
||||||
|
|
||||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
|
||||||
|
|
||||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
|
||||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
|
||||||
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
Строки.Добавить(Кнопки);
|
Если ОднаПодОдной Тогда
|
||||||
|
|
||||||
|
Строки = Новый Массив;
|
||||||
|
|
||||||
|
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||||
|
Кнопки = Новый Массив;
|
||||||
|
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||||
|
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||||
|
Строки.Добавить(Кнопки);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
Строки = Новый Массив;
|
||||||
|
Кнопки = Новый Массив;
|
||||||
|
|
||||||
|
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||||
|
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||||
|
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Строки.Добавить(Кнопки);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Если ПодСообщением Тогда
|
Если ПодСообщением Тогда
|
||||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||||
Иначе
|
Иначе
|
||||||
@@ -753,7 +784,7 @@
|
|||||||
|
|
||||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||||
ТекущийФайл = Новый Файл(Файл);
|
ТекущийФайл = Новый Файл(Файл);
|
||||||
Расширение = ?(Вид = "document", ТекущийФайл.Расширение, "");
|
Расширение = ?(Вид = "document" или Вид = "animation", ТекущийФайл.Расширение, "");
|
||||||
Файл = Новый ДвоичныеДанные(Файл);
|
Файл = Новый ДвоичныеДанные(Файл);
|
||||||
Иначе
|
Иначе
|
||||||
Расширение = "";
|
Расширение = "";
|
||||||
|
@@ -131,35 +131,167 @@
|
|||||||
|
|
||||||
#Область Твиты
|
#Область Твиты
|
||||||
|
|
||||||
// Создать твит.
|
Функция СоздатьПроизвольныйТвит(Знач Текст, Знач МассивМедиа = "", Знач МассивВариантов = "", Знач Параметры = "") Экспорт
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// Текст - Строка - Текст твита
|
|
||||||
// Параметры - Соответствие Из Строка - См.ПолучитьСтандартныеПараметры
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// HTTPОтвет, Произвольный, ДвоичныеДанные - Результат чтения JSON ответа сервера
|
|
||||||
Функция СоздатьТвит(Знач Текст, Знач Параметры) Экспорт
|
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
URL = "https://api.twitter.com/2/tweets";
|
||||||
URL = "https://api.twitter.com/2/tweets";
|
|
||||||
|
Если Не ТипЗнч(МассивМедиа) = Тип("Массив") Тогда
|
||||||
|
МассивМедиа_ = Новый Массив;
|
||||||
|
МассивМедиа_.Добавить(МассивМедиа);
|
||||||
|
МассивМедиа = МассивМедиа_;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Поля = Новый Соответствие;
|
Поля = Новый Соответствие;
|
||||||
Поля.Вставить("text", Текст);
|
Поля.Вставить("text", Текст);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
|
||||||
|
|
||||||
|
Если МассивМедиа.Количество() > 0 Тогда
|
||||||
|
Поля.Вставить("media", Новый Структура("media_ids", МассивМедиа));
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Авторизация = СоздатьЗаголовокАвторизацииV2(Параметры_);
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация);
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СоздатьТекстовыйТвит(Знач Текст, Знач Параметры = "") Экспорт
|
||||||
|
Возврат СоздатьПроизвольныйТвит(Текст, , Параметры);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СоздатьТвитКартинки(Знач Текст, Знач МассивКартинок, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
МассивМедиа = ЗагрузитьМассивВложений(МассивКартинок, "tweet_image", Параметры);
|
||||||
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, Параметры);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СоздатьТвитГифки(Знач Текст, Знач МассивГифок, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
МассивМедиа = ЗагрузитьМассивВложений(МассивГифок, "tweet_gif", Параметры);
|
||||||
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, Параметры);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция СоздатьТвитВидео(Знач Текст, Знач МассивВидео, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
МассивМедиа = ЗагрузитьМассивВложений(МассивВидео, "tweet_video", Параметры);
|
||||||
|
Возврат СоздатьПроизвольныйТвит(Текст, МассивМедиа, Параметры);
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ЗагрузитьМассивВложений(Знач МассивФайлов, Знач ТипВложений, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
МассивМедиа = Новый Массив;
|
||||||
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(МассивФайлов) Тогда
|
||||||
|
|
||||||
|
Если Не ТипЗнч(МассивФайлов) = Тип("Массив") Тогда
|
||||||
|
МассивФайлов_ = Новый Массив;
|
||||||
|
МассивФайлов_.Добавить(МассивФайлов);
|
||||||
|
МассивФайлов = МассивФайлов_;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
|
||||||
|
Для Каждого ФайлОтправки Из МассивФайлов Цикл
|
||||||
|
|
||||||
|
Если Не ТипЗнч(ФайлОтправки) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
ФайлОтправки = Новый ДвоичныеДанные(ФайлОтправки);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
IDМедиа = ЗагрузитьМедиафайл(ФайлОтправки, ТипВложений, Параметры_)["media_id_string"];
|
||||||
|
МассивМедиа.Добавить(IDМедиа);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат МассивМедиа;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СлужебныеПроцедурыИФункции
|
#Область СлужебныеПроцедурыИФункции
|
||||||
|
|
||||||
|
Функция ЗагрузитьМедиафайл(Знач Файл, Знач Тип, Знач Параметры)
|
||||||
|
|
||||||
|
СоответствиеMIME = Новый Соответствие;
|
||||||
|
СоответствиеMIME.Вставить("tweet_image", "image/jpeg");
|
||||||
|
СоответствиеMIME.Вставить("tweet_video", "video/mp4");
|
||||||
|
СоответствиеMIME.Вставить("tweet_gif" , "image/gif");
|
||||||
|
|
||||||
|
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
Файл = Новый ДвоичныеДанные(Файл);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
URL = "https://upload.twitter.com/1.1/media/upload.json";
|
||||||
|
Размер = Файл.Размер();
|
||||||
|
|
||||||
|
Если Тип = "tweet_image" Тогда
|
||||||
|
|
||||||
|
Поля = Новый Структура;
|
||||||
|
Поля.Вставить("media_data" , Base64Строка(Файл));
|
||||||
|
Поля.Вставить("media_category", Тип);
|
||||||
|
|
||||||
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ЧтениеДанных = Новый ЧтениеДанных(Файл);
|
||||||
|
МассивЧтения = ЧтениеДанных.РазделитьНаЧастиПо(5000000);
|
||||||
|
|
||||||
|
Поля = Новый Структура;
|
||||||
|
Поля.Вставить("command" , "INIT");
|
||||||
|
Поля.Вставить("total_bytes" , OPI_Инструменты.ЧислоВСтроку(Размер));
|
||||||
|
Поля.Вставить("media_type" , СоответствиеMIME.Получить(Тип));
|
||||||
|
Поля.Вставить("media_category" ,Тип);
|
||||||
|
|
||||||
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||||
|
|
||||||
|
ID = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь)["media_id_string"];
|
||||||
|
Счетчик = 0;
|
||||||
|
|
||||||
|
Для Каждого Часть Из МассивЧтения Цикл
|
||||||
|
|
||||||
|
ДвоичныеЧасти = Часть.ПолучитьДвоичныеДанные();
|
||||||
|
B64Части = Base64Строка(ДвоичныеЧасти);
|
||||||
|
|
||||||
|
Поля = Новый Структура;
|
||||||
|
Поля.Вставить("command" , "APPEND");
|
||||||
|
Поля.Вставить("media_id" , ID);
|
||||||
|
Поля.Вставить("media_data" , B64Части);
|
||||||
|
Поля.Вставить("segment_index" , OPI_Инструменты.ЧислоВСтроку(Счетчик));
|
||||||
|
|
||||||
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||||
|
|
||||||
|
OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
|
||||||
|
Поля = Новый Структура;
|
||||||
|
Поля.Вставить("command" , "FINALIZE");
|
||||||
|
Поля.Вставить("media_id" , ID);
|
||||||
|
|
||||||
|
Авторизация = СоздатьЗаголовокАвторизацииV1(Параметры_, Поля, "POST", URL);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Post(URL, Поля, Авторизация, Ложь);
|
||||||
|
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат Ответ;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
Функция ПолучитьСтандартныеПараметры(Знач Параметры = "")
|
||||||
|
|
||||||
//Здесь собрано определение данных, необходимых для работы.
|
//Здесь собрано определение данных, необходимых для работы.
|
||||||
@@ -242,8 +374,7 @@
|
|||||||
ТаблицаПараметров = Новый ТаблицаЗначений;
|
ТаблицаПараметров = Новый ТаблицаЗначений;
|
||||||
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
ТаблицаПараметров.Колонки.Добавить("Ключ");
|
||||||
ТаблицаПараметров.Колонки.Добавить("Значение");
|
ТаблицаПараметров.Колонки.Добавить("Значение");
|
||||||
|
|
||||||
|
|
||||||
Для Каждого Поле Из Поля Цикл
|
Для Каждого Поле Из Поля Цикл
|
||||||
|
|
||||||
НоваяСтрока = ТаблицаПараметров.Добавить();
|
НоваяСтрока = ТаблицаПараметров.Добавить();
|
||||||
|
@@ -459,12 +459,13 @@
|
|||||||
Функция ПоставитьЛайк(Знач IDПоста, Знач IDСтены = "", Знач Параметры = "") Экспорт
|
Функция ПоставитьЛайк(Знач IDПоста, Знач IDСтены = "", Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["group_id"]);
|
IDСтены = ?(ЗначениеЗаполнено(IDСтены), IDСтены, Параметры_["owner_id"]);
|
||||||
|
|
||||||
Параметры_.Вставить("type" , "post");
|
Параметры_.Вставить("type" , "post");
|
||||||
Параметры_.Вставить("object" , "wall" + OPI_Инструменты.ЧислоВСтроку(IDСтены) + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
Параметры_.Вставить("object" , "wall" + OPI_Инструменты.ЧислоВСтроку(IDСтены) + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
||||||
Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
Параметры_.Вставить("item_id" , OPI_Инструменты.ЧислоВСтроку(IDПоста));
|
||||||
Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены));
|
Параметры_.Вставить("owner_id" , OPI_Инструменты.ЧислоВСтроку(IDСтены));
|
||||||
|
Параметры_.Вставить("from_group" , 0);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/likes.add", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/likes.add", Параметры_);
|
||||||
|
|
||||||
@@ -573,6 +574,26 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Сократить ссылку.
|
||||||
|
//
|
||||||
|
// Параметры:
|
||||||
|
// URL - Строка - URL для сокращения
|
||||||
|
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
||||||
|
//
|
||||||
|
// Возвращаемое значение:
|
||||||
|
// Строка - Сокращенный URL
|
||||||
|
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
||||||
|
|
||||||
|
Параметры_ = Новый Структура;
|
||||||
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
|
Параметры_.Вставить("url", URL);
|
||||||
|
|
||||||
|
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
||||||
|
|
||||||
|
Возврат Ответ["response"]["short_url"];
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область Статистика
|
#Область Статистика
|
||||||
@@ -678,7 +699,7 @@
|
|||||||
СтруктураКампании.Вставить("day_limit" , 0);
|
СтруктураКампании.Вставить("day_limit" , 0);
|
||||||
СтруктураКампании.Вставить("all_limit" , 0);
|
СтруктураКампании.Вставить("all_limit" , 0);
|
||||||
СтруктураКампании.Вставить("start_time" , Формат(ТекущаяДатаСеанса() - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
СтруктураКампании.Вставить("start_time" , Формат(ТекущаяДатаСеанса() - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
||||||
СтруктураКампании.Вставить("stop_time" , Формат('2120.01.01' - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
СтруктураКампании.Вставить("stop_time" , Формат(ДобавитьМесяц(ТекущаяДатаСеанса(), 24) - Дата(1970,1,1,1,0,0), "ЧГ=0"));
|
||||||
СтруктураКампании.Вставить("status" , 1);
|
СтруктураКампании.Вставить("status" , 1);
|
||||||
|
|
||||||
МассивСтруктур.Добавить(СтруктураКампании);
|
МассивСтруктур.Добавить(СтруктураКампании);
|
||||||
@@ -782,65 +803,19 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
// Изменить запись рекламного объявления.
|
Функция ПолучитьСписокРекламныхКатегорий(Знач Параметры = "") Экспорт
|
||||||
//
|
|
||||||
// Параметры:
|
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
||||||
// IDПоста - Строка,Число - ID поста на замену
|
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.getCategories", Параметры_);
|
||||||
// IDКабинета - Строка,Число - ID рекламного кабинета
|
|
||||||
// IDОбъявления - Строка,Число - ID рекламного объявления
|
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера ВК
|
|
||||||
Функция ИзменитьЗаписьРекламногоОбъявления(Знач IDПоста, Знач IDКабинета, Знач IDОбъявления, Знач Параметры = "") Экспорт
|
|
||||||
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
||||||
Линк = "https://vk.com/wall-" + Параметры_["group_id"] + "_" + OPI_Инструменты.ЧислоВСтроку(IDПоста);
|
|
||||||
|
|
||||||
Параметры_.Вставить("account_id", OPI_Инструменты.ЧислоВСтроку(IDКабинета));
|
|
||||||
|
|
||||||
МассивСтруктур = Новый Массив;
|
|
||||||
СтруктураКампании = Новый Структура;
|
|
||||||
СтруктураКампании.Вставить("ad_id" , OPI_Инструменты.ЧислоВСтроку(IDОбъявления));
|
|
||||||
СтруктураКампании.Вставить("status" , 1);
|
|
||||||
СтруктураКампании.Вставить("link_url" , Линк);
|
|
||||||
|
|
||||||
МассивСтруктур.Добавить(СтруктураКампании);
|
|
||||||
|
|
||||||
JSONДата = OPI_Инструменты.JSONСтрокой(МассивСтруктур);
|
|
||||||
|
|
||||||
Параметры_.Вставить("data", JSONДата);
|
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.vk.com/method/ads.updateAds", Параметры_);
|
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область Прочие
|
#Область Прочие
|
||||||
|
|
||||||
// Сократить ссылку.
|
|
||||||
//
|
|
||||||
// Параметры:
|
|
||||||
// URL - Строка - URL для сокращения
|
|
||||||
// Параметры - Структура из Строка - См.ПолучитьСтандартныеПараметры
|
|
||||||
//
|
|
||||||
// Возвращаемое значение:
|
|
||||||
// Строка - Сокращенный URL
|
|
||||||
Функция СократитьСсылку(Знач URL, Знач Параметры = "") Экспорт
|
|
||||||
|
|
||||||
Параметры_ = Новый Структура;
|
|
||||||
Параметры_ = ПолучитьСтандартныеПараметры(Параметры);
|
|
||||||
Параметры_.Вставить("url", URL);
|
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("https://api.vk.com/method/utils.getShortLink", Параметры_);
|
|
||||||
|
|
||||||
Возврат Ответ["response"]["short_url"];
|
|
||||||
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
// Сформировать клавиатуру.
|
// Сформировать клавиатуру.
|
||||||
//
|
//
|
||||||
// Параметры:
|
// Параметры:
|
||||||
|
@@ -21,7 +21,6 @@
|
|||||||
//SOFTWARE.
|
//SOFTWARE.
|
||||||
|
|
||||||
//https://github.com/Bayselonarrend/OpenIntegrations
|
//https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
#Область НастройкиИИнформация
|
#Область НастройкиИИнформация
|
||||||
@@ -232,8 +231,8 @@
|
|||||||
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
Функция ОтправитьЛокацию(Знач Токен, Знач Широта, Знач Долгота, Знач IDПользователя, Знач ОтправкаВКанал) Экспорт
|
||||||
|
|
||||||
СтруктураЛокации = Новый Структура;
|
СтруктураЛокации = Новый Структура;
|
||||||
СтруктураЛокации.Вставить("lat", Широта);
|
СтруктураЛокации.Вставить("lat", OPI_Инструменты.ЧислоВСтроку(Широта));
|
||||||
СтруктураЛокации.Вставить("lon", Долгота);
|
СтруктураЛокации.Вставить("lon", OPI_Инструменты.ЧислоВСтроку(Долгота));
|
||||||
|
|
||||||
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, СтруктураЛокации);
|
Возврат ОтправитьСообщение(Токен, "location", IDПользователя, ОтправкаВКанал, СтруктураЛокации);
|
||||||
|
|
||||||
|
@@ -141,9 +141,9 @@
|
|||||||
Если Ответ.Заголовки.Получить("Content-Encoding") = "gzip" Тогда
|
Если Ответ.Заголовки.Получить("Content-Encoding") = "gzip" Тогда
|
||||||
Ответ = РаспаковатьОтвет(Ответ);
|
Ответ = РаспаковатьОтвет(Ответ);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), Ответ);
|
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), JsonВСтруктуру(Ответ.ПолучитьТелоКакДвоичныеДанные()));
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -189,9 +189,21 @@
|
|||||||
|
|
||||||
Если НужнаРаспаковка Тогда
|
Если НужнаРаспаковка Тогда
|
||||||
Ответ = РаспаковатьОтвет(Ответ);
|
Ответ = РаспаковатьОтвет(Ответ);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ответ = ?(ТипЗнч(Ответ) = Тип("HTTPОтвет"), Ответ.ПолучитьТелоКакДвоичныеДанные(), Ответ);
|
||||||
|
|
||||||
|
Если ТипЗнч(Ответ) = Тип("ДвоичныеДанные") Тогда
|
||||||
|
|
||||||
|
Попытка
|
||||||
|
Ответ = JsonВСтруктуру(Ответ)
|
||||||
|
Исключение
|
||||||
|
Ответ = ПолучитьСтрокуИзДвоичныхДанных(Ответ);
|
||||||
|
КонецПопытки;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат ?(ТипЗнч(Ответ) = Тип("ДвоичныеДанные"), JsonВСтруктуру(Ответ), Ответ);
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
@@ -287,7 +299,7 @@
|
|||||||
|
|
||||||
Функция JSONСтрокой(Знач Данные) Экспорт
|
Функция JSONСтрокой(Знач Данные) Экспорт
|
||||||
|
|
||||||
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь);
|
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, " " , Истина, ЭкранированиеСимволовJSON.Нет, Ложь, Ложь, Ложь, Ложь);
|
||||||
ЗаписьJSON = Новый ЗаписьJSON;
|
ЗаписьJSON = Новый ЗаписьJSON;
|
||||||
ЗаписьJSON.ПроверятьСтруктуру = Истина;
|
ЗаписьJSON.ПроверятьСтруктуру = Истина;
|
||||||
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
|
||||||
@@ -301,6 +313,22 @@
|
|||||||
Возврат СтрЗаменить(Строка(Число), Символы.НПП, "");
|
Возврат СтрЗаменить(Строка(Число), Символы.НПП, "");
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура ВыполнитьСкрипт(Знач Текст) Экспорт
|
||||||
|
|
||||||
|
ИмяСкрипта = ПолучитьИмяВременногоФайла(".ps1");
|
||||||
|
ТекстСкрипта = Новый ТекстовыйДокумент();
|
||||||
|
|
||||||
|
ТекстСкрипта.УстановитьТекст(Текст);
|
||||||
|
|
||||||
|
ТекстСкрипта.Записать(ИмяСкрипта, КодировкаТекста.UTF8);
|
||||||
|
|
||||||
|
КодВозврата = 0;
|
||||||
|
ЗапуститьПриложение("powershell -file " + ИмяСкрипта + " -noexit", , Истина, КодВозврата);
|
||||||
|
|
||||||
|
УдалитьФайлы(ИмяСкрипта);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
@@ -1,5 +1,39 @@
|
|||||||
#Область СлужебныйПрограммныйИнтерфейс
|
#Область СлужебныйПрограммныйИнтерфейс
|
||||||
|
|
||||||
|
Функция СоздатьКлючИзP12(Знач ПутьКСертификату, Знач Пароль = "") Экспорт
|
||||||
|
|
||||||
|
ФайлКлюча = ПолучитьИмяВременногоФайла("pem");
|
||||||
|
СтрокаЗапуска = "openssl pkcs12 -in """
|
||||||
|
+ ПутьКСертификату
|
||||||
|
+ """ -nocerts -out """
|
||||||
|
+ ФайлКлюча
|
||||||
|
+ """ -nodes";
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Пароль) Тогда
|
||||||
|
СтрокаЗапуска = СтрокаЗапуска + " -passin pass:" + Пароль;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
OPI_Инструменты.ВыполнитьСкрипт(СтрокаЗапуска);
|
||||||
|
Возврат ФайлКлюча;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
Функция ПолучитьRSAКлючИзПриватногоКлюча(Знач ПутьКПриватномуКлючу) Экспорт
|
||||||
|
|
||||||
|
ФайлRSA = ПолучитьИмяВременногоФайла("txt");
|
||||||
|
OPI_Инструменты.ВыполнитьСкрипт("openssl rsa -in """
|
||||||
|
+ ПутьКПриватномуКлючу
|
||||||
|
+ """ -out """
|
||||||
|
+ ФайлRSA
|
||||||
|
+ """ -text");
|
||||||
|
|
||||||
|
УдалитьФайлы(ПутьКПриватномуКлючу);
|
||||||
|
|
||||||
|
Возврат ФайлRSA;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
|
||||||
#Область БСП
|
#Область БСП
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@@ -1,8 +1,11 @@
|
|||||||
|
|
||||||
Функция Twitterget(Запрос)
|
Функция Twitterget(Запрос)
|
||||||
|
|
||||||
|
Параметры = Новый Соответствие;
|
||||||
|
|
||||||
|
|
||||||
Код = Запрос.ПараметрыЗапроса["code"];
|
Код = Запрос.ПараметрыЗапроса["code"];
|
||||||
ОтветТокен = OPI_Twitter.ПолучитьТокен(Код);
|
ОтветТокен = OPI_Twitter.ПолучитьТокен(Код, Параметры);
|
||||||
|
|
||||||
Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
Константы.TwitterRefresh.Установить(ОтветТокен["refresh_token"]);
|
||||||
Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
Константы.TwitterToken.Установить(ОтветТокен["access_token"]);
|
||||||
|
Reference in New Issue
Block a user