def create_comment(self, ticket_id, desc, privacy, files=[]): """ # | Function to create comment for the given ticket id # | # | Arguments: # | <ticket_id>: Ticket id # | <desc>: description, Comment description # | # | Returns: Comment object """ user_id = self._get_zendesk_user_id() if not user_id: # | If user is False, then there is no email for the user # | in that case throw error raise ZendeskError(403, "No email address found for the user") author_id = user_id #If no attachments are present if not files: #Passing the contents for comment creation #We set the comment privacy via the public option(Privacy options are Public reply/Internal Note) data = { "author_id": author_id, "body": desc, "public": privacy, } else: #Enter this loop if there are attachments #Fetching the token list by passing the list of files token_list = self.create_attachment(files) #Passing the contents for comment creation #We set the comment privacy via the public option(Privacy options are Public reply/Internal Note) #We also pass the token list via uploads option data = { "author_id": author_id, "body": desc, "public": privacy, "uploads": token_list } try: comment = Comment(**data) ticket = Ticket(id=ticket_id) ticket.comment = comment created_comment = self._zenpy.tickets.update(ticket) return created_comment except Exception as e: LOG.error(str(e)) raise ZendeskError(str(e))
def create_ticket(zc, ticket_content, user_map, status_map): # Check if any users were not imported from the provided user data and create basic accound if not if ticket_content['submitter_id'] not in user_map: user_map = create_basic_user(zc, id=ticket_content['submitter_id'], usr_dict=user_map) if ticket_content['requester_id'] not in user_map: user_map = create_basic_user(zc, id=ticket_content['requester_id'], usr_dict=user_map) # Format list like strings in the data to proper python lists tags = ticket_content['tags'] \ .replace("(", "") \ .replace(")", "") \ .replace("[", "") \ .replace("]", "") \ .replace("'", "") tags = tags.split(",") tags.append("RJC") # Create ticket object tik = Ticket( id=int(ticket_content['id']), created_at=ticket_content['created_at'], subject=ticket_content['subject'], status=status_map[ticket_content['status']], submitter_id=user_map[ticket_content['submitter_id']], requester_id=user_map[ticket_content['requester_id']], updated_at=ticket_content["updated_at"], due_at=ticket_content['due_at'], tags=tags, custom_fields={ 1500004511962: ticket_content['dept'], 1500004439621: ticket_content['product information'], 1500004511982: int(ticket_content['emp id']), 1500004439641: ticket_content['start date'], 1500004439661: ticket_content['subscription'], 1500004439681: ticket_content['business name'], 1500004512022: ticket_content['about'] } ) # Provided a generic assignee id if the data is not provided if ticket_content['assignee_id'] not in user_map: tik.assignee_id = "1507432183881" # look up the foreign assignee_id in the user map else: tik.assignee_id = user_map[ticket_content['assignee_id']] # Store the provided description as a comment object tik.comment = Comment(body=ticket_content['description'], public=False) # Create the ticket zc.tickets.create(tik) return user_map
def run(self, params={}): client = self.connection.client assignee_id = params.get("assignee_id") or None collaborator_ids = params.get("collaborator_ids") or None description = params.get("description") or None due_at = params.get("due_at") or None external_id = params.get("external_id") or None group_id = params.get("group_id") or None priority = (params.get("priority")) or None if priority: priority = priority.lower() problem_id = params.get("problem_id") or None recipient = params.get("recipient") or None requester_id = params.get("requester_id") or None status = (params.get("status")) or None if status: status = status.lower() subject = params.get("subject") or None tags = params.get("tags") or None t_type = (params.get("type")) or None if t_type: t_type = t_type.lower() ticket = Ticket( assignee_id=assignee_id, collaborator_ids=collaborator_ids, description=description, due_at=due_at, external_id=external_id, group_id=group_id, priority=priority, problem_id=problem_id, recipient=recipient, requester_id=requester_id, status=status, subject=subject, tags=tags, type=t_type, ) if params.get("attachment"): if params.get("attachment")["content"]: upload_instance = client.attachments.upload( params.get("attachment")["content"], target_name=params.get("attachment")["filename"], ) # content_type=None, content_url=None, file_name=None ticket.comment = Comment(body=params.get("description"), uploads=[upload_instance.token]) returned_ticket = client.tickets.create(ticket).ticket ticket_obj = { "assignee_id": returned_ticket.assignee_id, "brand_id": returned_ticket.brand_id, "collaborator_ids": returned_ticket.collaborator_ids, "created_at": returned_ticket.created_at, "description": returned_ticket.description, "due_at": returned_ticket.due_at, "external_id": returned_ticket.external_id, "forum_topic_id": returned_ticket.forum_topic_id, "group_id": returned_ticket.group_id, "has_incidents": returned_ticket.has_incidents, "id": returned_ticket.id, "organization_id": returned_ticket.organization_id, "priority": returned_ticket.priority, "problem_id": returned_ticket.problem_id, "raw_subject": returned_ticket.raw_subject, "recipient": returned_ticket.recipient, "requester_id": returned_ticket.requester_id, "sharing_agreement_ids": returned_ticket.sharing_agreement_ids, "status": returned_ticket.status, "subject": returned_ticket.subject, "submitter_id": returned_ticket.submitter_id, "tags": returned_ticket.tags, "type": returned_ticket.type, "updated_at": returned_ticket.updated_at, "url": returned_ticket.url, } return ticket_obj
def run(self, params={}): client = self.connection.client assignee_id = params.get('assignee_id') or None collaborator_ids = params.get('collaborator_ids') or None description = params.get('description') or None due_at = params.get('due_at') or None external_id = params.get('external_id') or None group_id = params.get('group_id') or None priority = (params.get('priority')) or None if priority: priority = priority.lower() problem_id = params.get('problem_id') or None recipient = params.get('recipient') or None requester_id = params.get('requester_id') or None status = (params.get('status')) or None if status: status = status.lower() subject = params.get('subject') or None tags = params.get('tags') or None t_type = (params.get('type')) or None if t_type: t_type = t_type.lower() ticket = Ticket(assignee_id=assignee_id, collaborator_ids=collaborator_ids, description=description, due_at=due_at, external_id=external_id, group_id=group_id, priority=priority, problem_id=problem_id, recipient=recipient, requester_id=requester_id, status=status, subject=subject, tags=tags, type=t_type) if params.get('attachment'): if params.get('attachment')['content']: upload_instance = client.attachments.upload( params.get('attachment')['content'], target_name=params.get('attachment')['filename'] ) # content_type=None, content_url=None, file_name=None ticket.comment = Comment(body=params.get('description'), uploads=[upload_instance.token]) returned_ticket = client.tickets.create(ticket).ticket ticket_obj = { 'assignee_id': returned_ticket.assignee_id, 'brand_id': returned_ticket.brand_id, 'collaborator_ids': returned_ticket.collaborator_ids, 'created_at': returned_ticket.created_at, 'description': returned_ticket.description, 'due_at': returned_ticket.due_at, 'external_id': returned_ticket.external_id, 'forum_topic_id': returned_ticket.forum_topic_id, 'group_id': returned_ticket.group_id, 'has_incidents': returned_ticket.has_incidents, 'id': returned_ticket.id, 'organization_id': returned_ticket.organization_id, 'priority': returned_ticket.priority, 'problem_id': returned_ticket.problem_id, 'raw_subject': returned_ticket.raw_subject, 'recipient': returned_ticket.recipient, 'requester_id': returned_ticket.requester_id, 'sharing_agreement_ids': returned_ticket.sharing_agreement_ids, 'status': returned_ticket.status, 'subject': returned_ticket.subject, 'submitter_id': returned_ticket.submitter_id, 'tags': returned_ticket.tags, 'type': returned_ticket.type, 'updated_at': returned_ticket.updated_at, 'url': returned_ticket.url } return ticket_obj