Здравствуйте. Если кто-то делал отправку файла в ICQ через бота подскажите с чем может быть связана ошибка. Не могу понять почему файл криво отправляется. В отчете от сервера пишется что файл отправлен, но он отправляется каким-то кривым.
Вот мой код для отправки файла
Для ознакомления с документацией как отправляю ссылка на апи бота. использую /messages/sendFile через POST.
API ICQ
Ниже прикрепил как файл приходит в ICQ. Файл весит 100кб, но почему-то всегда приходят байты.
Вот мой код для отправки файла
HTTP = Новый HTTPСоединение(Интеграция.Сервер,,,,,Истина);
ФайлЗапроса = ПолучитьИмяВременногоФайла();
ТекстовыйФайл = Новый ТекстовыйДокумент;
ПутьКФайлу = "C:\tmp\153324.pdf";
ТелоЗапроса = Новый ДвоичныеДанные(ПутьКФайлу);
ТекстовыйФайл.УстановитьТекст(ТелоЗапроса);
ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI);
ФайлОтправки = Новый Файл(ФайлЗапроса);
РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
ФайлРезультата = ПолучитьИмяВременногоФайла();
ЗаголовокHTTP = новый Соответствие;
ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);
ЗаголовокHTTP.Вставить("Content-Type","multipart/form-data");
ПараметрыЗапроса = новый Соответствие;
ПараметрыЗапроса.Вставить("caption","А это описание к файлу");
ПараметрыЗапроса.Вставить("file",ТелоЗапроса);
ПараметрыЗапроса.Вставить("parseMode","MarkdownV2");
ПараметрыЗапроса.Вставить("chatId",идКомуОтправить);
ПараметрыЗапроса.Вставить("token",Интеграция.Токен);
Ресурс = "/bot/v1" +"/messages/sendFile?"+УпаковатьПараметры(ПараметрыЗапроса);
//Ресурс = "/bot/v1/messages/sendFile?token=001.0687406898.4239950246:1004863080&chatId=272484829&parseMode=MarkdownV2&file=25 50 44 46 2D 31 2E...&caption=А это описание к файлу
HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);
ТекстовыйФайлОтвет = Новый ТекстовыйДокумент;
ТекстовыйФайлОтвет.Прочитать(ФайлРезультата,КодировкаТекста.UTF8);
СтрокаОтветСервера = ТекстовыйФайлОтвет.ПолучитьТекст();
ПоказатьДля ознакомления с документацией как отправляю ссылка на апи бота. использую /messages/sendFile через POST.
Ниже прикрепил как файл приходит в ICQ. Файл весит 100кб, но почему-то всегда приходят байты.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Оставлю тут свой вариант, работает без нареканий.
Процедура ОтправитьФайлICQ(ПутьКФайлу)
ФайлИмяПараметра = "file";
ИмяФайла = "Планирование_" + Формат(ТекущаяДата(), "ДФ=yyyy.MM.dd_HH.mm") + ".xlsx";
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + ФайлИмяПараметра + "; filename=" + ИмяФайла);
ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.Записать(Новый ДвоичныеДанные(ПутьКФайлу));
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
Сервер = "api.icq.net/bot/v1";
Токен = "000.0000000000.0000000000:00000000";
Идентификатор = "XXXXXXXXXXX";
АдресРесурса = "/messages/sendFile"
+ "?token=" + Токен
+ "&chatId=" + Идентификатор;
HTTPСоединение = Новый HTTPСоединение(Сервер);
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Разделитель);
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP);
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить(HTTPОтвет.ПолучитьТелоКакСтроку());
HTTPСоединение = Неопределено;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот