Функция ПолучитьТокенSkype(IDПриложения, Пароль) Экспорт
ДанныеНастроек = ХранилищеСистемныхНастроек.Загрузить("ЧатБот", "Skype");
Если ДанныеНастроек <> Неопределено И ДанныеНастроек.Свойство("ТокенBearer") И ДанныеНастроек.Свойство("ДатаПолученияBearer") И ДанныеНастроек.ДатаПолученияBearer > ТекущаяДата() - 55 * 60 Тогда
ТокенBearer = ДанныеНастроек.ТокенBearer;
Возврат ТокенBearer;
КонецЕсли;
//grant_type=client_credentials&client_id=cffbb6ea-1f54-4d57-9d5b-1f04cedd228a&client_secret=jisp2}^{tyuUTHHKTJ5547?&scope=https%3A%2F%2Fapi.botframework.com%2F.default
ТелоЗапросаJSON = "grant_type=client_credentials&client_id=" + IDПриложения + "&client_secret=" + Пароль + "&scope=https%3A%2F%2Fapi.botframework.com%2F.default";
HTTPСоединение = Новый HTTPСоединение("login.microsoftonline.com", Неопределено, Неопределено, Неопределено, Неопределено, 120, Новый ЗащищенноеСоединениеOpenSSL);
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
HTTPЗапрос = Новый HTTPЗапрос("botframework.com/oauth2/v2.0/token", ЗаголовкиHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаJSON);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
HTTPОтветТело = HTTPОтвет.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(HTTPОтветТело);
HTTPОтветСтруктура = ПрочитатьJSON(ЧтениеJSON);
Если Не (HTTPОтвет.КодСостояния = 200) Или ТипЗнч(HTTPОтветСтруктура) = Тип("Структура") И HTTPОтветСтруктура.Свойство("error") Тогда
ОписаниеОшибки = "Ошибка: " + HTTPОтвет.КодСостояния + ?(ТипЗнч(HTTPОтветСтруктура) = Тип("Структура") И HTTPОтветСтруктура.Свойство("error_description"), HTTPОтветСтруктура.error_description, "");
ЗаписьЖурналаРегистрации("ЧатБот.Skype:", УровеньЖурналаРегистрации.Предупреждение, , , ОписаниеОшибки);
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
ТокенBearer = HTTPОтветСтруктура.access_token;
ХранилищеСистемныхНастроек.Сохранить("ЧатБот", "Skype", Новый Структура("ТокенBearer, ДатаПолученияBearer", ТокенBearer, ТекущаяДата()));
Возврат ТокенBearer;
КонецФункции
Функция ОтправитьСообщениеSkype(Токен, IDЧата, ТекстСообщения) Экспорт
HTTPСоединение = Новый HTTPСоединение("smba.trafficmanager.net", Неопределено, Неопределено, Неопределено, Неопределено, 120, Новый ЗащищенноеСоединениеOpenSSL);
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "application/json");
ЗаголовкиHTTP.Вставить("Authorization", "Bearer " + Токен);
JSONСтруктура = Новый Структура;
JSONСтруктура.Вставить("conversation", Новый Структура);
JSONСтруктура.conversation.Вставить("id", IDЧата);
JSONСтруктура.Вставить("from", Новый Структура);
JSONСтруктура.from.Вставить("id", "");
JSONСтруктура.Вставить("type", "message");
JSONСтруктура.Вставить("text", ТекстСообщения);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, JSONСтруктура);
ТелоЗапросаJSON = ЗаписьJSON.Закрыть();
//https://smba.trafficmanager.net/apis/v3/conversations/29:1SbCdrSJNasZnoQ_x4xaOMu27l4MSfF7iyhfaHgzW_f8/activities
HTTPЗапрос = Новый HTTPЗапрос("apis/v3/conversations/" + IDЧата + "/activities", ЗаголовкиHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаJSON);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
HTTPОтветТело = HTTPОтвет.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(HTTPОтветТело);
HTTPОтветСтруктура = ПрочитатьJSON(ЧтениеJSON);
Если Не (HTTPОтвет.КодСостояния = 200 Или HTTPОтвет.КодСостояния = 201) Тогда
ОписаниеОшибки = "Ошибка: " + HTTPОтвет.КодСостояния + ?(ТипЗнч(HTTPОтветСтруктура) = Тип("Структура") И HTTPОтветСтруктура.Свойство("error") И HTTPОтветСтруктура.error.Свойство("message"), " - " + HTTPОтветСтруктура.error.message, "");
ЗаписьЖурналаРегистрации("ЧатБот.Skype:", УровеньЖурналаРегистрации.Предупреждение, , , ОписаниеОшибки);
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
Возврат HTTPОтветСтруктура;
КонецФункции