0

我需要获取与特定时期的所有 zendesk 票相关联的票事件,或者以增量方式。我该怎么做。

例如,如果一张票每天更新 10 次,我需要获取每个事件详细信息。我使用的数据库是 Postgres,后端语言是 Python。

下面是我用来获取票证详细信息的脚本,但这仅给了我票证的最后更新详细信息,而不是与该票证关联的所有事件。

请提供任何帮助。

from zenpy import Zenpy
import datetime
import json

# DB Connection
conn = get_connection("Connection String")
cur = conn.cursor()

sql = 'DROP TABLE IF EXISTS tickets; CREATE TABLE tickets ( ID NOT NULL ' \
         'PRIMARY KEY, values json NOT NULL); '
cur.execute(script)
conn.commit()

# Zenpy accepts an API token
creds = {
    'email': 'email.com',
    'token': '*****************',
    'subdomain': '******'
}

time_now = datetime.datetime.strftime(datetime.datetime.utcnow(), '%Y-%m-%d%H:%M:%S')
time_now = datetime.datetime.strptime(time_now, '%Y-%m-%d%H:%M:%S')
one_hour_past = datetime.datetime.strftime((datetime.datetime.utcnow() - datetime.timedelta(hours=1)),
                                           '%Y-%m-%d%H:%M:%S')
one_hour_past = datetime.datetime.strptime(one_hour_past, '%Y-%m-%d%H:%M:%S')

zenpy_client = Zenpy(**creds)
updated_tickets = zenpy_client.search(type='ticket', updated_at_between=[one_hour_past, time_now])
for tc in updated_tickets:
    details_json = json.dumps(tc.to_dict(), sort_keys=False)
    print(details_json)
    insert_sql = '''INSERT INTO tickets(values) VALUES ( $$ ''' + details_json + ''' $$ )'''
    cur.execute(insert_sql)
    conn.commit()
    insert_query = '''INSERT INTO tickets(values) VALUES ( $$ ''' + details_json + ''' $$ )'''
    cur.execute(insert_query)
    conn.commit()
4

1 回答 1

0

当您在这里使用增量 API 时,我想说要考虑一些事情。您确实可以选择使用侧面加载,然后打开获取此处提到的受支持端点的能力(https://developer.zendesk.com/rest_api/docs/support/side_loading#special-sideloads),然后您可以挖掘更深入地找到审计端点并找到审计事件(https://developer.zendesk.com/rest_api/docs/support/ticket_audits#audit-events),让您更深入地了解每张票等。我知道这是不久前发布的,您可能已经找到了解决方案,但这可能对可能遇到同样问题的其他人有所帮助。这是根据我的经验:)

干杯,

于 2020-11-18T20:55:31.460 回答