Имя: Пароль:
1C
1С v8
Отправка PDF из 1с в ватсап, Base64Строка
,
0 nikolas260579
 
06.08.19
12:37
Всем добрый день. Пытаюсь отправить пдф из 1с в ватсап.

ТемпФайл=ПолучитьИмяВременногоФайла("PDF");
РезультатТ.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
РезультатТ.Записать(ТемпФайл,ТипФайлаТабличногоДокумента.PDF);
ДД = Новый ДвоичныеДанные(ТемпФайл);
Сообщение = Base64Строка(ДД);

В соответствии с https://api-messenger.com/documentations/sendfile/ записываю Сообщение в параметр "body", передаю остальные обязательные параметры. На выходе получаю код состояния 422. В теле ответа ошибка {"status":"ERROR","message":"The string is not valid base64 (body)"}. Почему в теле не Base64Строка, что я сделал не так?
1 Вафель
 
06.08.19
12:49
2 Cyberhawk
 
06.08.19
12:50
"записываю Сообщение в параметр "body", передаю остальные обязательные параметры" // Покажи код
3 Cyberhawk
 
06.08.19
12:52
Судя по квадратным скобкам телом запроса должен быть массив из одного элемента-структуры (или соответствия), а не сама структура (или соответствие)
4 nikolas260579
 
06.08.19
12:54
(2)        JSONСписок = Новый ЗаписьJSON();
        JSONСписок.ПроверятьСтруктуру = Ложь;
        ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON();
        JSONСписок.УстановитьСтроку(ПараметрыЗаписиJSON);
        JSONСписок.ЗаписатьНачалоМассива();
        JSONСписок.ЗаписатьНачалоОбъекта();
        JSONСписок.ЗаписатьИмяСвойства("body");
        JSONСписок.ЗаписатьЗначение(Сообщение);
        JSONСписок.ЗаписатьИмяСвойства("filename");
        
        Пока не Найти(ПутьКФайлу,"\")=0 Цикл
            
            ПутьКФайлу = Сред(ПутьКФайлу,Найти(ПутьКФайлу,"\") +1);
            
        КонецЦикла;
        
        JSONСписок.ЗаписатьЗначение(ПутьКФайлу);
        JSONСписок.ЗаписатьИмяСвойства("chatId");
        JSONСписок.ЗаписатьЗначение(Телефон);
5 Cyberhawk
 
06.08.19
12:55
Постманом значит еще проверь
6 Вафель
 
06.08.19
12:56
так это же бом
7 nikolas260579
 
06.08.19
13:11
А дело в маске там не может быть? В этой ссылке отправляют картинку в качестве примера, там перед всей кучей символов стоит такая штука  "body": "data:image/jpeg;base64,/9j/(дальше куча символов)
8 Cyberhawk
 
06.08.19
13:13
Ну вот и ты проверь с картинкой для начала, только без той муйни что в примере
9 Cyberhawk
 
06.08.19
13:14
Потом и с муйней проверь - если с муйней прокатит, то документация УГ и значит добавляй эту муйню и у себя
10 nikolas260579
 
07.08.19
11:38
Подниму тему. Проверял свою полученную строку в декодировщиках, например base64.guru. При декодировке получаю нужный пдф файл. В 1с назад через base64Значение тоже получаю исходные двоичные данные.
11 nikolas260579
 
07.08.19
12:04
Проверил регулярным выражением http://qaru.site/questions/53274/how-to-check-whether-the-string-is-base64-encoded-or-not, тоже всё нормально.
12 ManyakRus
 
07.08.19
12:45
http://catalog.mista.ru/public/1043780/
там уже всё сделано, работает :)
13 nikolas260579
 
07.08.19
12:53
нет стартманей у меня, чтобы скачать(
14 nikolas260579
 
08.08.19
10:13
Ещё раз подниму тему. Оказалось, что при кодировании Base64Строка () мне сделала строку с переносами и возвратом каретки, это я заменил. Я решил глянуть конвертер из Бэйз64 в JSON. Сначала строку подставлял в графу Бэйз 64, мне выдало ошибку, мол, это не Бэйз64 строка. Подставил её в графу JSON, тогда её нормально преобразовало в Бэйз64.  Теперь думаю, как со стороны 1С это преобразование из JSON в строку Бэйз 64 сделать.
15 nikolas260579
 
08.08.19
10:14
16 Cyberhawk
 
08.08.19
10:25
Ну так ПараметрыЗаписиJSON же
17 nikolas260579
 
08.08.19
10:36
(16) Пока не понял, а как я через них строку преобразую?