From 4fbe62f1e6f5a113fc6ac1013e9a2d2ce44774ec Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Fri, 23 Aug 2019 11:37:25 +0100 Subject: [PATCH 1/2] Rough little script to get Zendesk tickets for support analysis. If this is need a lot over time we might want to add something to the ZendeskClient. --- get_zendesk_tickets.py | 102 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 get_zendesk_tickets.py diff --git a/get_zendesk_tickets.py b/get_zendesk_tickets.py new file mode 100644 index 000000000..cb8cac07e --- /dev/null +++ b/get_zendesk_tickets.py @@ -0,0 +1,102 @@ +""" +This script can be used to retrieve Zendesk tickets. +This can be run locally if you set the ZENDESK_API_KEY. Or the script can be run from a flask shell from a ssh session. +""" +import os +import requests +import urllib.parse +import csv + +# Group: 3rd Line--Notify Support +NOTIFY_GROUP_ID = 360000036529 + +# Organization: GDS +NOTIFY_ORG_ID = 21891972 + +# the account used to authenticate with. If no requester is provided, the ticket will come from this account. +NOTIFY_ZENDESK_EMAIL = 'zd-api-notify@digital.cabinet-office.gov.uk' +ZENDESK_API_KEY = os.environ.get('ZENDESK_API_KEY') + + +def get_tickets(): + ZENDESK_TICKET_URL = 'https://govuk.zendesk.com/api/v2/search.json?query={}' + query_params = 'type:ticket group:{}'.format(NOTIFY_GROUP_ID) + query_params = urllib.parse.quote(query_params) + + next_page = ZENDESK_TICKET_URL.format(query_params) + + with open("zendesk_ticket_data.csv", 'w') as csvfile: + fieldnames = [ + 'Service id', + 'Ticket id', + 'Subject line', + 'Date ticket created', + 'Tags', + ] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + while next_page: + print(next_page) + response = requests.get( + next_page, + headers={'Content-type': 'application/json'}, + auth=( + '{}/token'.format(NOTIFY_ZENDESK_EMAIL), + ZENDESK_API_KEY + ) + ) + data = response.json() + print(data) + for row in data["results"]: + service_url = [x for x in row["description"].split('\n') + if x.startswith("https://www.notifications.service.gov.uk/services/")] + service_url = service_url[0][50:] if len(service_url) > 0 else None + if service_url: + writer.writerow({'Service id': service_url, + 'Ticket id': row['id'], + 'Subject line': row['subject'], + 'Date ticket created': row["created_at"], + 'Tags': row.get('tags', '') + }) + next_page = data["next_page"] + + +def get_tickets_without_service_id(): + ZENDESK_TICKET_URL = 'https://govuk.zendesk.com/api/v2/search.json?query={}' + query_params = 'type:ticket group:{}'.format(NOTIFY_GROUP_ID) + query_params = urllib.parse.quote(query_params) + + next_page = ZENDESK_TICKET_URL.format(query_params) + with open("zendesk_ticket_data_without_service.csv", 'w') as csvfile: + fieldnames = [ + 'Ticket id', + 'Subject line', + 'Date ticket created', + 'Tags', + ] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + while next_page: + print(next_page) + response = requests.get( + next_page, + headers={'Content-type': 'application/json'}, + auth=( + '{}/token'.format(NOTIFY_ZENDESK_EMAIL), + ZENDESK_API_KEY + ) + ) + data = response.json() + print(data) + for row in data["results"]: + service_url = [x for x in row["description"].split('\n') + if x.startswith("https://www.notifications.service.gov.uk/services/")] + service_url = service_url[0][50:] if len(service_url) > 0 else None + if not service_url: + writer.writerow({'Ticket id': row['id'], + 'Subject line': row['subject'], + 'Date ticket created': row["created_at"], + 'Tags': row.get('tags', '') + }) + next_page = data["next_page"] + From b568f74f3da004384e6d9986ec65fedd3a889553 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Tue, 19 Nov 2019 13:56:25 +0000 Subject: [PATCH 2/2] Added get_tickets_with_description --- get_zendesk_tickets.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/get_zendesk_tickets.py b/get_zendesk_tickets.py index cb8cac07e..5f57b87a2 100644 --- a/get_zendesk_tickets.py +++ b/get_zendesk_tickets.py @@ -100,3 +100,41 @@ def get_tickets_without_service_id(): }) next_page = data["next_page"] + +def get_tickets_with_description(): + ZENDESK_TICKET_URL = 'https://govuk.zendesk.com/api/v2/search.json?query={}' + query_params = 'type:ticket group:{}, created>2019-07-01'.format(NOTIFY_GROUP_ID) + query_params = urllib.parse.quote(query_params) + + next_page = ZENDESK_TICKET_URL.format(query_params) + with open("zendesk_ticket.csv", 'w') as csvfile: + fieldnames = [ + 'Ticket id', + 'Subject line', + 'Description', + 'Date ticket created', + 'Tags', + ] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + while next_page: + print(next_page) + response = requests.get( + next_page, + headers={'Content-type': 'application/json'}, + auth=( + '{}/token'.format(NOTIFY_ZENDESK_EMAIL), + ZENDESK_API_KEY + ) + ) + data = response.json() + print(data) + for row in data["results"]: + writer.writerow({'Ticket id': row['id'], + 'Subject line': row['subject'], + 'Description': row['description'], + 'Date ticket created': row["created_at"], + 'Tags': row.get('tags', '') + }) + next_page = data["next_page"] +