ОтправитьДанныеСообщенияВТехПоддержку (БСП)

Автор: 1С
ОбщийМодуль.ИнтернетПоддержкаПользователей
БСП

Отправить данные сообщения тех поддержку.

Функция ОтправитьДанныеСообщенияВТехПоддержку(
	Тема,
	Тело,
	Знач Получатель,
	Вложения,
	НастройкиСоединенияССерверами,
	ДопПараметры,
	НастройкиПрокси = Неопределено) Экспорт

	Результат = Новый Структура;
	Результат.Вставить("КодОшибки"           , "");
	Результат.Вставить("СообщениеОбОшибке"   , "");
	Результат.Вставить("ТокенДанных"         , "");
	
	// Проверка доступности сервиса.
	РезультатПроверки = Новый Структура;
	РезультатПроверки.Вставить("ИмяОшибки"         , "");
	РезультатПроверки.Вставить("СообщениеОбОшибке" , "");
	РезультатПроверки.Вставить("ИнформацияОбОшибке", "");
	СлужебнаяПроверитьURLДоступен(
		URLОперацииОтправитьДанныеСообщенияВТехПоддержкуPing(
			НастройкиСоединенияССерверами.ДоменРасположенияСерверовИПП),
		"HEAD",
		РезультатПроверки.ИмяОшибки,
		РезультатПроверки.СообщениеОбОшибке,
		РезультатПроверки.ИнформацияОбОшибке,
		НастройкиПрокси);
	
	Если Не ПустаяСтрока(РезультатПроверки.ИмяОшибки) Тогда
		
		ИнтернетПоддержкаПользователейВызовСервера.ЗаписатьОшибкуВЖурналРегистрации(
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
					|Не удалось проверить доступность сервиса отправки сообщений.
					|%1'"),
				РезультатПроверки.ИнформацияОбОшибке));
		
		Результат.КодОшибки = РезультатПроверки.ИмяОшибки;
		Результат.СообщениеОбОшибке =
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
					|Не удалось проверить доступность сервиса.
					|%1'"),
				РезультатПроверки.СообщениеОбОшибке);
		
		Возврат Результат;
		
	КонецЕсли;
	
	// Отправка данных сообщения.
	ТелоСообщения = СтрЗаменить(
		ДопПараметры.ШаблонТекстаСообщения,
		"%msgtxt",
		Тело);

	ПодготовитьВложенияКОтправке(Вложения, ДопПараметры.Вложения);

	ДанныеJSON = ПараметрыSaveTechSupportRequestJSON(
		Тема,
		ТелоСообщения,
		Получатель,
		ДопПараметры.Вложения);

	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type", "application/json");

	ДопПараметрыЗапроса = Новый Структура;
	ДопПараметрыЗапроса.Вставить("Метод"                   , "PUT");
	ДопПараметрыЗапроса.Вставить("ФорматОтвета"            , 1);
	ДопПараметрыЗапроса.Вставить("Заголовки"               , Заголовки);
	ДопПараметрыЗапроса.Вставить("ДанныеДляОбработки"      , ДанныеJSON);
	ДопПараметрыЗапроса.Вставить("ФорматДанныхДляОбработки", 1);
	ДопПараметрыЗапроса.Вставить("НастройкиПрокси"         , НастройкиПрокси);
	ДопПараметрыЗапроса.Вставить("Таймаут"                 , 300);
	
	РезультатОтправки = ЗагрузитьСодержимоеИзИнтернет(
		URLОперацииОтправитьДанныеСообщенияВТехПоддержку(
			НастройкиСоединенияССерверами.ДоменРасположенияСерверовИПП),
		,
		,
		ДопПараметрыЗапроса);

	Если Не ПустаяСтрока(РезультатОтправки.КодОшибки) Тогда

		ИнтернетПоддержкаПользователейВызовСервера.ЗаписатьОшибкуВЖурналРегистрации(
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
				|%1'"),
			РезультатОтправки.ИнформацияОбОшибке));

		Результат.КодОшибки = РезультатОтправки.КодОшибки;
		Результат.СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
				|%1'"),
			РезультатОтправки.СообщениеОбОшибке);

		Возврат Результат;

	КонецЕсли;

	Попытка
		РезультатВызова = РезультатSaveTechSupportRequestИзJSON(РезультатОтправки.Содержимое);
	Исключение

		ИнформацияОбОшибке = ИнформацияОбОшибке();

		ИнтернетПоддержкаПользователейВызовСервера.ЗаписатьОшибкуВЖурналРегистрации(
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
				|Ошибка при обработке ответа сервиса.
				|Некорректный ответ сервиса отправки сообщений.
				|%1
				|Тело ответа: %2'"),
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке),
			Лев(РезультатОтправки.Содержимое, 1024)));

		Результат.КодОшибки = РезультатОтправки.КодОшибки;
		Результат.СообщениеОбОшибке =
			НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
				|Некорректный ответ сервиса отправки сообщений.'");

		Возврат Результат;

	КонецПопытки;

	Если РезультатВызова.success <> Истина Тогда

		ИнтернетПоддержкаПользователейВызовСервера.ЗаписатьОшибкуВЖурналРегистрации(
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
				|Ошибка при передаче сообщения в тех. поддержку.
				|Сервис сообщил об ошибке.
				|Ответ сервиса: %1'"),
			Лев(РезультатОтправки.Содержимое, 1024)));

		Результат.КодОшибки = "ВозвращенОтказСервиса";
		Результат.СообщениеОбОшибке =
			НСтр("ru = 'Не удалось отправить данные сообщения в службу технической поддержки.
				|Ошибка при передаче сообщения в тех. поддержку.
				|Подробнее см. в журнале регистрации.'");

		Возврат Результат;

	КонецЕсли;

	Результат.ТокенДанных = РезультатВызова.uuid;

	Возврат Результат;

КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ОтправитьДанныеСообщенияВТехПоддержку (БСП)

ПриОшибкеОтправкиДанныхСообщенияВТехПоддержку (БСП)

ОтправитьСообщениеВТехПоддержку (БСП)

ПолучитьИмяФайлаТехническихПараметровДляСообщенияВТехПоддержку (БСП)

ОтправитьСообщениеВСлужбуТехническойПоддержки (БСП)

ОтправитьСообщение (БСП)

ШаблонТекстаВТехПоддержку (БСП)

СоздатьИОтправитьСообщениеSMS (БСП)

СформироватьСообщениеИОтправить (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом