Передача данных оффлайн конверсий в Я.Метрику из 1С CRM
Добрый день. Подскажите.
Нужно отправить данные из CRM в Я.Метрику, по документацииhttps://yandex.ru/support/metrika/data/offline-conversion.html
Используем код
При отправке получаем ошибку
Нужно отправить данные из CRM в Я.Метрику, по документации
Используем код
Кодировка = КодировкаТекста.ANSI;
ВыходнойФайл = КаталогВременныхФайлов()+"data.txt";
ФайлОтправки = Новый ЗаписьТекста(ВыходнойФайл,КодировкаТекста.ANSI);
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
ФайлОтправки.ЗаписатьСтроку("--" + Boundary, Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""data.csv""", Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("Content-Type: text/csv" + Символы.ВК + Символы.ПС, Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("DateTime,Target,ClientId", Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("1532603595,SENDNFRKEY,1532592620994816287", Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("--" + Boundary, Символы.ВК + Символы.ПС);
ФайлОтправки.Закрыть();
ЗаголовокHTTP = Новый Соответствие();
HTTP1 = Новый HTTPСоединение("api-metrika.yandex.ru",,,,,, Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено));
ЗаголовокHTTP.Вставить("Authorization", "Bearer AQAAAAAirLmAAUeoxPFZS_9ok4n4TObs" + Символы.ВК + Символы.ПС);
ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary + Символы.ВК + Символы.ПС);
ВыбФайл = Новый Файл(ВыходнойФайл);
ЗаголовокHTTP.Вставить("Content-Length", Формат(ВыбФайл.Размер(),"ЧГ=0"));
HTTP1.ОтправитьДляОбработки(ВыходнойФайл, "management/v1/counter/14077687/offline_conversions/upload?client_id_type=CLIENT_ID", КаталогВременныхФайлов() + "outputY.txt",ЗаголовокHTTP);
ПоказатьПри отправке получаем ошибку
{"errors":[{"error_type":"invalid_uploading","message":"Некорректный формат multipart запроса."}],"code":400,"message":"Некорректный формат multipart запроса."}
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Эта ошибка выходит из-за того что "Boundary" на корректно в файле заполняется. Необходимо так:
У меня вот только дальше другая ошибка полезла:
{"errors":[{"error_type":"invalid_uploading","message":"Не найден параметр запроса.","location":"file"}],"code":400,"message":"Не найден параметр запроса."}
С ней пока не разобрался =(
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
ФайлОтправки.ЗаписатьСтроку("--------------------------" + Boundary, Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""data.csv""", Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("Content-Type: text/csv" + Символы.ВК + Символы.ПС, Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("ClientId,Target,DateTime", Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("1532592620994816287,SENDNFRKEY,1670954634", Символы.ВК + Символы.ПС);
ФайлОтправки.ЗаписатьСтроку("--------------------------" + Boundary + "--", Символы.ВК + Символы.ПС);
ФайлОтправки.Закрыть();
У меня вот только дальше другая ошибка полезла:
{"errors":[{"error_type":"invalid_uploading","message":"Не найден параметр запроса.","location":"file"}],"code":400,"message":"Не найден параметр запроса."}
С ней пока не разобрался =(
(5) Удалось решить при помощи postman-а и fiddler-а. Проблема была в использовании "Символы.ВК", в разделителе строк объекта "ЗаписьТекста". Вот таким вариантом запрос отправляется без ошибок:
ВыходнойФайл = КаталогВременныхФайлов()+"data.csv";
ФайлОтправки = Новый ЗаписьТекста(ВыходнойФайл, КодировкаТекста.ANSI, Символы.ПС);
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
ФайлОтправки.ЗаписатьСтроку("--------------------------" + Boundary);
ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""data.csv""");
ФайлОтправки.ЗаписатьСтроку("Content-Type: text/csv");
ФайлОтправки.ЗаписатьСтроку("");
ФайлОтправки.ЗаписатьСтроку("CLIENT_ID,Target,DateTime");
ФайлОтправки.ЗаписатьСтроку(СтрШаблон("%1,%2,%3", СтруктураСДанными.YM, СтруктураСДанными.Target, СтруктураСДанными.DateTime));
ФайлОтправки.ЗаписатьСтроку("");
ФайлОтправки.ЗаписатьСтроку("--------------------------" + Boundary + "--");
ФайлОтправки.Закрыть();
HTTPСоединение = Новый HTTPСоединение("api-metrika.yandex.net",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Ресурс = "management/v1/counter/" + СтруктураСДанными.НомерСчетчика + "/offline_conversions/upload?client_id_type=CLIENT_ID";
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.Заголовки.Вставить("Authorization", СтруктураСДанными.Токен);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=------------------------" + Boundary);
ВыбФайл = Новый Файл(ВыходнойФайл);
HTTPЗапрос.Заголовки.Вставить("Content-Length", XMLСтрока(ВыбФайл.Размер()));
HTTPЗапрос.УстановитьИмяФайлаТела(ВыходнойФайл);
ТекстОшибки = "";
Попытка
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Если Ответ.КодСостояния <> 200 Тогда
ТекстОшибки = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
КонецЕсли;
Исключение
ТекстОшибки = ОписаниеОшибки();
КонецПопытки;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот