Имя: Пароль:
1C
1С v8
Отправка файла в Telegram
0 Родионовна
 
07.03.17
10:04
Добрый день.
По образцу, выложенному на многочисленных сайтах, пытаюсь отправить примитивный файл. Код состояния ОтветаHTTP 504 - Истек таймаут ожидания ответа шлюза. Что делаю не так? SendMessage, например, отрабатывает.  

ИмяФайла =ПолучитьИмяВременногоФайла("txt");
Файл = Новый ЗаписьТекста(ИмяФайла);
Файл.ЗаписатьСтроку("Хэлло!");
Файл.Закрыть();
СтрокаСоединения = "/bot" + Объект.Токен + "/sendDocument";
    
Boundary = "----"+Строка(Новый УникальныйИдентификатор());
    
//Определяем массив для процедуры ОбъединитьФайлы
МассивФайловДляОбъединения = Новый Массив;
    
    //Формируем начальный фрагмент файла POST-запроса
    ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
    ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.UTF8);
    
    //Формируем конечный фрагмент файла POST-запроса
    ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt");
    ФайлаОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.UTF8);
    
    ТекстДляОтправки = "";
    
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""chat_id""" + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + chat_id + Символы.ПС;
    
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""document""; filename=""report.txt""" + Символы.ПС;
    
    ФайлОтправкиНачало.ЗаписатьСтроку(ТекстДляОтправки);
    ФайлОтправкиНачало.Закрыть();
    
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);
    
    МассивФайловДляОбъединения.Добавить(СокрЛП(ИмяФайла));
    
    ТекстДляОтправки = "" + Символы.ПС;
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+"--";
    ФайлаОтправкиКонец.ЗаписатьСтроку(ТекстДляОтправки);
    ФайлаОтправкиКонец.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец);
    
    ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
    ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
    
    HTTPЗапрос = Новый HTTPЗапрос();
    Заголовки = Новый Соответствие;
    
    HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
    
    HTTPЗапрос.УстановитьТелоИзСтроки(ИмяФайлаОтправки);
    HTTPЗапрос.АдресРесурса = СтрокаСоединения;
    
HTTPСоединение  =  Новый HTTPСоединение(Объект.Сервер,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());        
ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
1 Crucian
 
21.03.17
14:48
http://t.me/disp1c группа для разработчиков 1С в телеграмм.
2 Fragster
 
гуру
21.03.17
14:51
я сделал прослойку на nodejs, все прекрасно работает с библиотекой telegraf (передаю по http json с двоичными данными в бота, бот отправляет Buffer через sendDocument).
3 Кирпич
 
21.03.17
14:54
с Boundary разберись
чота непонятно какой он у тебя должен быть
толи "--"+Boundary+"--"
толи "--"+Boundary + Символы.ПС
толи просто Boundary, как здесь:
"multipart/form-data; boundary="+Boundary
4 Кирпич
 
21.03.17
14:58
+(3) одна страна, одна жена, одна Boundary
5 Кирпич
 
21.03.17
15:00
хотя у себя глянул. тоже самое. чота я тупанул :)