1C Api Binotel

1. user1148505 14.09.21 19:10 Сейчас в теме
Доброго времени суток, пол дня сижу никак не могу подружиться с их API.

//main
	key = ЭтотОбъект.key;
	secret = ЭтотОбъект.secret;
	host = ЭтотОбъект.host;
	host_port = ЭтотОбъект.host_port;
	host ="api.binotel.com/api/4.0/stats/all-incoming-calls-since.json";
	
	
	//Создали запись ЗаписьJSON
	ЗаписьJSON = Новый ЗаписьJSON;
	//Задаем параметры без переноса строк, можно и с переносом, как кому нравится
	тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);  
	ЗаписьJSON.УстановитьСтроку(тПараметрыJSON);
	
	МассивДанныхJSON = Новый Массив;
	СтруктураДанныхJSON = Новый Структура; 
	
	тДанные = Новый Структура;
	тДанные.Вставить("key", key);
	тДанные.Вставить("secret", secret);
	МассивДанныхJSON.Добавить(тДанные);
	// вставляем наш массив в ещеодну структуру
	СтруктураДанныхJSON.Вставить("test", МассивДанныхJSON);
	
	ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);
	//ЗаписатьJSON(ЗаписьJSON, МассивДанныхJSON);
	ИмяРесурса = "/api/4.0/stats/all-incoming-calls-since.json";
	//Здесь нам платформа переделала нашу сложную структуру в строку данных в формате JSON 
	СтрокаJS = ЗаписьJSON.Закрыть();
	ФайлОтвета = "C:\Users\Личный01\Desktop\answer.txt";
	
	//здесь надо указать путь к сайту
	HTTPСоединение = Новый HTTPСоединение("api.binotel.com",80);
	//создаем запрос данных методом POST
	запросPOST = Новый HTTPЗапрос("POST");
	//это обязательный заголовок тела запроса
	запросPOST.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
	//Здесь задаем текст нашей отформатированной строки + задаем формат сроки 
	запросPOST.УстановитьТелоИзСтроки("mData="+СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать);
	Попытка
		//Отправляем для обрааботки на наш сервер
		HTTPСоединение.ОтправитьДляОбработки(запросPOST, ИмяРесурса, ФайлОтвета);
	Исключение
		#Если клиент Тогда
			Сообщить(ОписаниеОшибки());
		#КонецЕсли   
	КонецПопытки;
	Результат = HTTPСоединение.Получить(запросPOST);
	Сообщить(Результат.КодСостояния);
Показать


Пытаюсь обратиться на адрес, но весь день то 301 то 404 ловлю. Подскажите, будь те добры, где ошибаюсь.

хочу получить доступ к api.binotel.com/api/4.0/stats/all-incoming-calls-since.json
key, secret есть, но не могу получить хотя бы 121 (неверные данные ключей).

Конкретно этот код ругается на отсутствие каталога '\api\4.0\stats\all-incoming-calls-since.json'
Найденные решения
4. spacecraft 14.09.21 20:42 Сейчас в теме
(3) судя по документации, нужно совсем не так и не совсем такие данные передавать.
Вот, на коленке набросал, пробуйте:
//Создали запись ЗаписьJSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();

тДанные = Новый Структура;
тДанные.Вставить("timestamp", НачалоДня(ТекущаяДата()) - Дата(1970,1,1));
тДанные.Вставить("key", key);
тДанные.Вставить("secret", secret);

ЗаписатьJSON(ЗаписьJSON, тДанные);
ИмяРесурса = "/api/4.0/stats/all-incoming-calls-since.json";
СтрокаJS = ЗаписьJSON.Закрыть();

//здесь надо указать путь к сайту
HTTPСоединение = Новый HTTPСоединение("api.binotel.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
//создаем запрос данных методом POST
запросPOST = Новый HTTPЗапрос(ИмяРесурса);
//это обязательный заголовок тела запроса
запросPOST.Заголовки.Вставить("Content-type", "application/json");
//Здесь задаем текст нашей отформатированной строки + задаем формат сроки 
запросPOST.УстановитьТелоИзСтроки(СтрокаJS);

    //Отправляем для обрааботки на наш сервер
Ответ = HTTPСоединение.ОтправитьДляОбработки(запросPOST);
// тут можно проверить Ответ.КодСостояния

// получаем строку тела ответа.
Результат = Ответ.ПолучитьТелоКакСтроку();
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 14.09.21 19:54 Сейчас в теме
(1)
//здесь надо указать путь к сайту
HTTPСоединение = Новый HTTPСоединение("api.binotel.com",80);

Как минимум требуется подключение по https.
HTTPСоединение = Новый HTTPСоединение("api.binotel.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
3. user1148505 14.09.21 20:05 Сейчас в теме
(2)
Новый ЗащищенноеСоединениеOpenSSL()


Согласен. Появилась теперь 404. И опять же жалуется на каталог. Такое ощущение, что этот каталог не правильно цепляется к домену.

UPD: прицепил кусок
\api\4.0
к
("api.binotel.com\api\4.0",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
получил ОК (200). Но это особо проблемы не решает, дальше прийдется обращаться в тот же
incoming-calls-for-period
. Будут мысли, напишите как цеплять.
4. spacecraft 14.09.21 20:42 Сейчас в теме
(3) судя по документации, нужно совсем не так и не совсем такие данные передавать.
Вот, на коленке набросал, пробуйте:
//Создали запись ЗаписьJSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();

тДанные = Новый Структура;
тДанные.Вставить("timestamp", НачалоДня(ТекущаяДата()) - Дата(1970,1,1));
тДанные.Вставить("key", key);
тДанные.Вставить("secret", secret);

ЗаписатьJSON(ЗаписьJSON, тДанные);
ИмяРесурса = "/api/4.0/stats/all-incoming-calls-since.json";
СтрокаJS = ЗаписьJSON.Закрыть();

//здесь надо указать путь к сайту
HTTPСоединение = Новый HTTPСоединение("api.binotel.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
//создаем запрос данных методом POST
запросPOST = Новый HTTPЗапрос(ИмяРесурса);
//это обязательный заголовок тела запроса
запросPOST.Заголовки.Вставить("Content-type", "application/json");
//Здесь задаем текст нашей отформатированной строки + задаем формат сроки 
запросPOST.УстановитьТелоИзСтроки(СтрокаJS);

    //Отправляем для обрааботки на наш сервер
Ответ = HTTPСоединение.ОтправитьДляОбработки(запросPOST);
// тут можно проверить Ответ.КодСостояния

// получаем строку тела ответа.
Результат = Ответ.ПолучитьТелоКакСтроку();
Показать
5. spacecraft 14.09.21 20:59 Сейчас в теме
(1)
Конкретно этот код ругается на отсутствие каталога '\api\4.0\stats\all-incoming-calls-since.json'

а ругается на вот этот код:
HTTPСоединение.ОтправитьДляОбработки(запросPOST, ИмяРесурса, ФайлОтвета);

См. справку 1С:
ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>)

Так как второй параметр это ИмяРесурса = "/api/4.0/stats/all-incoming-calls-since.json", то и пытается получить доступ к нему как к файлу.. файлу... что и приводит к ошибке.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот