diff --git a/.gitignore b/.gitignore index 72364f9..c93b594 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,7 @@ ENV/ # Rope project settings .ropeproject + +#vagrant +Vagrantfile +.vagrant \ No newline at end of file diff --git a/actions/create_ticket.py b/actions/create_ticket.py index 47843c8..959ecd1 100644 --- a/actions/create_ticket.py +++ b/actions/create_ticket.py @@ -6,5 +6,5 @@ class CreateTicketAction(ZendeskAction): - def run(self, subject, description): - return self.create_ticket(subject, description) + def run(self, subject, description, tags=None, ticket_form_id=None): + return self.create_ticket(subject, description, tags, ticket_form_id) \ No newline at end of file diff --git a/actions/create_ticket.yaml b/actions/create_ticket.yaml index 0744443..eae1dd5 100644 --- a/actions/create_ticket.yaml +++ b/actions/create_ticket.yaml @@ -13,3 +13,10 @@ parameters: type: string description: "The full description of the ticket" required: true + tags: + type: array + description: "Tags to add to the ticket on creation" + default: [] + ticket_form_id: + type: string + description: "Ticket Form Id, if need to create ticket for specific form." diff --git a/actions/lib/zendesk.py b/actions/lib/zendesk.py index 0293735..56f1868 100644 --- a/actions/lib/zendesk.py +++ b/actions/lib/zendesk.py @@ -35,8 +35,12 @@ def url_for_ticket(self, ticket): def api_search(self, query, search_type): return self.api.search(query, type=search_type, sort_by='created_at', sort_order='desc') - def create_ticket(self, subject, description): + def create_ticket(self, subject, description, tags=None, ticket_form_id=None): ticket = Ticket(subject=subject, description=description) + if tags is not None: + ticket.tags = tags + if ticket_form_id is not None: + ticket.ticket_form_id = ticket_form_id try: created_ticket_audit = self.api.tickets.create(ticket) @@ -44,6 +48,7 @@ def create_ticket(self, subject, description): 'ticket_id': created_ticket_audit.ticket.id, 'ticket_url': self.url_for_ticket(created_ticket_audit.ticket.id), 'subject': self.clean_response(subject), + 'tags': created_ticket_audit.ticket.tags, 'description': self.clean_response(description) } except APIException: @@ -55,14 +60,14 @@ def create_ticket(self, subject, description): def search_tickets(self, query, search_type='ticket', limit=10): try: query_results = self.api_search(query, search_type) - results_clean = map(lambda t: { + results_clean = list(map(lambda t: { 'ticket_id': t.id, 'ticket_url': self.url_for_ticket(t.id), 'ticket_status': t.status, 'subject': self.clean_response(t.subject), 'description': self.clean_response(t.description)}, list(query_results)[:limit] - ) + )) return {'search_results': results_clean} except APIException: return {'error': 'Could not execute search for query: {}'.format(query)}