AronTito
@AronTito
разработчик-любитель web приложений и сайтов.

Как получить весь список звонков из Битрикс24 (телефония) REST API?

Всем привет.
Задачка на первый взгляд простая. Нужно получить весь список звонков за день. Использую РНР
$webhook = 'https://test.bitrix24.ua/rest/1/.../voximplant.statistic.get'; // 
$data = http_build_query([
		// array code...
		'SORT' => 'ID',
		'ORDER' => 'DESC',
		'filter' => [
			'>CALL_START_DATE' => date('Y').'-'.date('m').'-'.date('d'),
			// 'CALL_FAILED_CODE' => [304],
		]
	]);
$curl = curl_init();
curl_setopt_array($curl, [
	// array code...
	CURLOPT_SSL_VERIFYPEER => 0,
	CURLOPT_POST => 1,
	CURLOPT_HEADER => 0,
	CURLOPT_RETURNTRANSFER => 1,
	CURLOPT_URL => $webhook,
	CURLOPT_POSTFIELDS => data(),
]
);
$result = curl_exec($curl);
$result = json_decode($result, 1);

echo '<pre>';
print_r($result['result']);
echo '</pre>';

Но как известно Битрикс выдает только 50шт записей. Как получить полный список?
P.S. - А может подскажете, кто знает. Основная задача: - получить список звонков с кодом 304 (304 -пропущенный вызов ), НО! - если с момента даты пропущенного вызова, появилась запись с этим номером, но уже с кодом 200, то тогда его не показывать. Возможно это можно отправить в запрос Битрикс и сразу получить результат?
// пример массива
$array = [
	'result' => [
		/*
			Принятый звонок (перезвонили) в 18:00:00
			номер: 08001234567
			код: 200
			! Значит запись с ключем 20 не показывать
		*/
		0 => [
			'ID' => '100',
			'USER_NUMBER' => '08001234567',
			'CODE' => '200',
			'DATE' => '2020.03.05Т18:00:00+03:00'
		],
		/*
			Пропущенный звонок в 10:00:00
			номер: 08001234567
			код: 304
		*/
		20 => [
			'ID' => '80',
			'USER_NUMBER' => '08001234567',
			'CODE' => '304',
			'DATE' => '2020.03.05Т10:00:00+03:00'
		],
		/*
			Пропущенный звонок в 08:00:00
			номер: 08000000777
			код: 304
			! Данный звонок показать, так-как на него еще
			  нет записи с кодом 200.
		*/
		45 => [
			'ID' => '60',
			'USER_NUMBER' => '08000000777',
			'CODE' => '304',
			'DATE' => '2020.03.05Т08:00:00+03:00'
		],
	]
];
  • Вопрос задан
  • 2721 просмотр
Пригласить эксперта
Ответы на вопрос 2
Dee3
@Dee3
Нужно использовать batch метод, смотрите в документации по этому слову.
Ответ написан
https://dev.1c-bitrix.ru/rest_help/general/lists.php

При вызове списочных методов REST возвращает дополнительные значения в ответе:

Для получения следующего пакета элементов, необходимо выполнить тот же самый запрос, указав дополнительный параметр start со значением, пришедшем в параметре next ответа.


https://dev.1c-bitrix.ru/rest_help/general/batch.php

В некоторых случаях возникает необходимость отправить несколько запросов подряд. Для оптимизации процесса можно использовать пакетное выполнение запросов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы