コード例 #1
0
    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))
コード例 #2
0
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
コード例 #3
0
    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
コード例 #4
0
    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