2013-12-18 3 views
1

Я пытаюсь получить все данные о билетах из Zendesk, используя их API v2. API ограничен 100 ответами на страницу, а затем разбивается на страницы, но я не могу прокрутить все страницы, чтобы получить общее количество количество билетов (и другая информация)Получение всех билетов от Zendesk API

Как я и не представляю, сколько страниц будет, я путаюсь, чтобы установить цикл, чтобы справиться с этим эффективно. На данный момент я использовал 20, как я знаю, что у меня меньше, чем 2000 билетов:

for ($page=1;$page<20;$page++) { 
    if ($page==1) { 
     $data = curlWrap("/ticket_metrics.json", null, "GET"); 
    } else { 
     if ($data->next_page!="NULL"&&$data->next_page!=""&&$data->next_page!=0) { 
      $data = curlWrap("/ticket_metrics.json?page=$page", null, "GET"); 
     } 
    } 

    foreach ($data as $ticket) { 
     if (is_array($ticket)) { 
      foreach ($ticket as $i) { 
       $time=$i->reply_time_in_minutes->calendar; 
       if ($time!=0 &&$time!="") { 
        $total_time=$total_time+$time; 
        $counter++; 
       } 
      } 
     } 
    } 
} 



$answer=$total_time/$counter; 

print $total_time."/".$counter."=".$answer; 

Как я могу получить общее количество билетов, и в первый раз ответа, чтобы я мог выполнить этот расчет?

Благодаря

+0

Вы пробовали 'print_r', чтобы узнать, доступен ли номер счета в этом вызове? Любые подсказки в документах? – halfer

+0

Существует поле под названием count, но оно дает «неправильный» результат, поэтому это не так уж и полезно: документы все по-разному, не помогли множество сообщений на форуме с фрагментами классов Git и другими вещами, которые путают проблему – bhttoan

+0

Если вы можете отредактировать в своем вопросе некоторый образец вывода, плюс то, что содержит поле 'count' _does_, которое может помочь. Тем не менее, я задаюсь вопросом, может ли этот вопрос лучше всего указывать на канал поддержки этого продукта, если он есть. – halfer

ответ

6

Не уверен, что если вы все еще нужны, но разместите в случае других есть эта проблема.

Количество билетов возвращается в ответе как 'count. Вы также верны, что на каждую страницу возвращается не более 100 записей, хотя вы можете вернуть меньше. Эта страница для справки: http://developer.zendesk.com/documentation/rest_api/introduction.html

Я бы реорганизовал код для использования цикла while, пока next_page не будет «null» (я думаю, что это была ваша проблема).

$page_num = '1'; 
$total_records = -1; 
while ($page != 'null') 
{ 
    //query API return to $data 
    $url = "/ticket_metrics.json?page=" . $page_num; 
    $data = curlWrap($url, null, "GET"); 

    //'count' is returned in json 
    if ($total_records < 0) 
     $total_records = $data->$count; 
    $page = $data->next_page; 

    //add total_time and increase your counter 
} 
//process your data 
Смежные вопросы