&НаСервере
Процедура
ОтправитьФайл(Токен, ChatId, ДвоичныеДанные, ИмяФайла,
Сообщение)
Разделитель = Строка(Новый УникальныйИдентификатор());
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело,
КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Истина);
//chat_id
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""chat_id""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку(ChatId);
// disable_notification
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""disable_notification""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("True");
Если Не ПустаяСтрока(Сообщение)
Тогда
//caption
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data;
name=""caption""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку(Сообщение);
//parse_mode
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition:
form-data; name=""parse_mode""");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("HTML");
КонецЕсли;
//document
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель);
ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Disposition:
form-data; name=""document""; filename=""%1.pdf""",
?(ПустаяСтрока(ИмяФайла),
"document_" + Строка(Новый УникальныйИдентификатор()) + ".pdf",
ИмяФайла)));
ЗаписьДанных.ЗаписатьСтроку("Content-Type:
application/pdf");
ЗаписьДанных.ЗаписатьСтроку("");
//ЗаписьДанных.Закрыть();
//Добавим файл
//ЗаписьДанных = Новый ЗаписьДанных(...);
ЗаписьДанных.Записать(ДвоичныеДанные);
//ЗаписьДанных.Закрыть();
//Завершение записи
//ЗаписьДанных = Новый ЗаписьДанных(Тело,
КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, Символы.ВК + Символы.ПС, Символы.ПС, Ложь);
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("--"
+ Разделитель + "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
//Соединение и запрос
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,15,Новый
ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type",
"multipart/form-data;
boundary=" + Разделитель);
Заголовки.Вставить("Accept",
"*/*");
Заголовки.Вставить("Cache-Control",
"no-cache");
Заголовки.Вставить("Host",
"api.telegram.org");
Заголовки.Вставить("Accept-Encoding",
"gzip, deflate");
Заголовки.Вставить("Content-Length", Формат(ДанныеТела.Размер(), "ЧДЦ=0; ЧН=0; ЧГ=0"));
Заголовки.Вставить("Connection",
"close");
Адрес = СтрШаблон("/bot%1/sendDocument", Токен);
Запрос = Новый HTTPЗапрос(Адрес,
Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
// POST
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния
<> 200 Тогда
ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ВызватьИсключение
СтрШаблон("Ошибка отправки вложения в телеграм.
|Код
состояния: %1
|Тело:
%2"
, Ответ.КодСостояния
, ОтветСтрокой
);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура
ОтправитьФайлВТелеграм(Команда)
ИмяФайла
= "C:\TEMP\Test.pdf";
ДанныеФайла = Новый ДвоичныеДанные(иф);
ТестСообщение
= "Некое сообщение";
ОтправитьФайл("1234:abcde", "-123456", ДанныеФайла, ИмяФайла, ТестСообщение);
КонецПроцедуры
|