Zenpy 增量导出在 start_date 之前给出票证

Zenpy incremental export gives tickets before start_date

我正在尝试使用 zenpy 获取有关上周创建或修改的工单的信息。这是我使用的代码:

stream_status = False #Exit condition
while(stream_status==False):
    print(start_date)
    all_tickets = zendesk.tickets.incremental(start_time=start_date, include=['users','organizations'])
    print(len(all_tickets))
    print(all_tickets.end_time)
    for ticket in all_tickets:
            #grab ticket fields and store them in a Dataframe            
            df.loc[len(df)] = [ticket_id,created_at,requester,organization,product,subject,assignee,status,priority,opened_at,opened_by,solved_at,solved_by,closed_at,closed_by]
            count +=1
            print(count,ticket_id)
    start_date = all_tickets.end_time
    stream_status = all_tickets.end_of_stream
    print(start_date,stream_status)
today = datetime.now().strftime("%Y%m%d%H%M")
df.to_excel('Ticket_report{0}.xlsx'.format(today))

现在这里有几个问题。日期计算正确,确实是 7 天前。但是我得到的门票至少可以追溯到四月份,而且从那以后肯定没有被修改过。我此时停止了它,因为我们有数千张票。 此外,增量方法 returns 最多 1000 个票证对象,但即使在 1000 个之后,循环似乎也不会重新启动(末尾的打印语句不会触发)。我不确定我是否正确使用了 stream_status 标志。任何建议都非常受欢迎。谢谢!

有关增量的 Zenpy 文档可在此处找到:http://docs.facetoe.com.au/zenpy.html#incremental-exports

毕竟这是一个 API 问题。

对于遇到类似问题的任何人,结果是将开始日期与 generated_timestamp 而不是 updated_at 或 created_at 字段进行比较。 Updated_at 保留生成工单事件(例如更改)的最后一个操作,但每次工单受到影响时 generated_timestamp 都会更新,甚至来自系统。这导致获取在输入日期之前更新或创建的票证。一个解决方案是在调用后过滤掉结果:

all_tickets = zendesk_client.incremental(start_time=start_date)
accurate_tickets = [ticket for ticket in all tickets if  parser.parse(ticket.updated_at) > start_date]

不太清楚他们为什么要这样设计 API,似乎有点不对,但不幸的是它就是这样工作的。

来源:https://developer.zendesk.com/documentation/ticketing/managing-tickets/using-the-incremental-export-api/#excluding-system-updated-tickets-time-based-exports