1

我正在尝试使用他们的 v2 API 从 Zendesk 获取所有票证数据 - API 限制为每页 100 个响应然后分页,但我似乎无法循环浏览所有页面以获取票证总数(和其他信息)

因为我不知道会有多少页,所以我正在努力设置一个循环来有效地处理这个问题。目前我已经使用了 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;

如何获得工单总数和第一响应时间,以便执行此计算?

谢谢

4

1 回答 1

6

不确定您是否仍然需要它,但会发布以防其他人遇到此问题。

响应中的票数作为“计数”返回。您也正确,每页最多返回 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
于 2014-07-02T20:17:26.427 回答