Channel Resolver Integration - Zendesk

Start Here

  • If the Moveworks user is set to Admin level permissions
    • No action needed, Moveworks Customer Success team can configure this within your system and this guide does not need to be followed.
  • If the Moveworks user is set to Agent level permissions or more granular permissions with a Custom Role
    • We will not be able to automatically create the webhook on our own and require admin assistance.
    • In addition to the permissions detailed in the Zendesk document below, we need an additional permission to view, add, edit, and delete triggers

Configuration

📘

This first step only needs to be run if Moveworks has Agent level permissions on Zendesk.

  1. Create webhook manually.
  • Under {{ zendesk_url }}/admin/apps-integrations/webhooks/webhooks, create a new webhook with the following settings.
    • The name must be exactly Moveworks Webhook Integration
    • The endpoint needs to be https://app.moveworks.ai/{ORG_NAME}/zendesk/zendesk/events
  1. After the webhook is generated, the signing_secret needs to be securely sent to Moveworks CS team.

Manual Configuration of Triggers

📘

If Moveworks does not have permissions to create Triggers in your Zendesk instance, we also need to manually configure the following webhooks.

  1. Create webhook.
    • Under {{ zendesk_url }}/admin/apps-integrations/webhooks/webhooks, create a new webhook with the following settings.
      • The name must be exactly Moveworks Webhook Integration
      • The endpoint needs to be https://app.moveworks.ai/{ORG_NAME}/zendesk/events
    • After the webhook is generated, the signing_secret needs to be sent to us via the customer as we will not be able to query it from Postman
  1. Create a trigger category for Moveworks under {{ zendesk_url }}/admin/object-rules/rules/triggers called Moveworks Triggers.
  2. We will need to create three separate triggers under this category.

Moveworks Trigger - New Comment

  1. Name: Moveworks Trigger - New Comment
  2. Condition: Comment is Present (public or private)
  3. Action: Notify active webhook Moveworks Webhook Integration
  4. Payload:
    {
        "event_type": "comment_created",
        "timestamp": "{{ticket.latest_comment.created_at_with_time}}",
        "comment": {
            "id": {{ticket.latest_comment.id}},
            "type": "Comment",
            "author_id": {{ticket.latest_comment.author.id}},
            "author_name": "{{ticket.latest_comment.author.name}}",
            "body": "{{ticket.latest_comment.value}}",
            "plain_body": "{{ticket.latest_comment.value}}",
            "public": {{ticket.latest_comment.is_public}},
            "attachments": [
                {%- for attachment in ticket.latest_comment.attachments -%}
                {
                    "file_name": "{{attachment.filename}}",
                    "url": "{{attachment.url}}",
                    "size": {{attachment.size}}
                }{% unless forloop.last %},{% endunless %}
                {%- endfor -%}
            ],
            "created_at": "{{ticket.latest_comment.created_at_with_time}}"
        },
        "ticket": {
        "id": {{ticket.id}},
        "subject": "{{ticket.title}}",
        "description": "{{ticket.description}}",
        "submitter_id": {{ticket.submitter.id}},
        "requester_id": {{ticket.requester.id}},
        {% if ticket.assignee != blank %}"assignee_id": {{ticket.assignee.id}},{% endif %}
        {% if ticket.group != blank %}"group_id": {{ticket.group.id}},{% endif %}
        "created_at": "{{ticket.created_at_with_timestamp}}",
        "updated_at": "{{ticket.updated_at_with_timestamp}}",
        "type": "{{ticket.ticket_type}}",
        "status": "{{ticket.status}}",
        "comments": [
            {%- for comment in ticket.comments -%}
            {
                "id": {{comment.id}},
                "type": "Comment",
                "author_id": {{comment.author.id}},
                "author_name": "{{comment.author.name}}",
                "body": "{{comment.value}}",
                "plain_body": "{{comment.value}}",
                "public": {{comment.is_public}},
                "attachments": [
                    {%- for attachment in comment.attachments -%}
                    {
                        "file_name": "{{attachment.filename}}",
                        "url": "{{attachment.url}}",
                        "size": {{attachment.size}}
                    }{% unless forloop.last %},{% endunless %}
                    {%- endfor -%}
                ],
                "created_at": "{{comment.created_at_with_time}}"
            }{% unless forloop.last %},{% endunless %}
            {%- endfor -%}
        ]
    }
    }
    

Moveworks Trigger - Ticket Updated

  1. Name: Moveworks Trigger - Ticket Updated
  2. Condition: Ticket is Updated
  3. Action: Notify active webhook Moveworks Webhook Integration
  4. Payload:
    {
        "event_type": "ticket_updated",
        "timestamp": "{{ticket.updated_at_with_timestamp}}",
        "user": {
            "name": "{{current_user.name}}",
            "email": "{{current_user.email}}",
            "id": {{current_user.id}}
        },
        "ticket": {
        "id": "{{ticket.id}}",
        "subject": "{{ticket.title}}",
        "description": "{{ticket.description}}",
        "submitter_id": {{ticket.submitter.id}},
        "requester_id": {{ticket.requester.id}},
        {% if ticket.assignee != blank %}"assignee_id": {{ticket.assignee.id}},{% endif %}
        {% if ticket.group != blank %}"group_id": {{ticket.group.id}},{% endif %}
        "created_at": "{{ticket.created_at_with_timestamp}}",
        "updated_at": "{{ticket.updated_at_with_timestamp}}",
        "type": "{{ticket.ticket_type}}",
        "status": "{{ticket.status}}",
        "comments": [
            {%- for comment in ticket.comments -%}
            {
                "id": {{comment.id}},
                "type": "Comment",
                "author_id": {{comment.author.id}},
                "author_name": "{{comment.author.name}}",
                "body": "{{comment.value}}",
                "plain_body": "{{comment.value}}",
                "public": {{comment.is_public}},
                "attachments": [
                    {%- for attachment in comment.attachments -%}
                    {
                        "file_name": "{{attachment.filename}}",
                        "url": "{{attachment.url}}",
                        "size": {{attachment.size}}
                    }{% unless forloop.last %},{% endunless %}
                    {%- endfor -%}
                ],
                "created_at": "{{comment.created_at_with_time}}"
            }{% unless forloop.last %},{% endunless %}
            {%- endfor -%}
        ]
    }
    }
    

Moveworks Trigger - Ticket Created

  1. Name: Moveworks Trigger - Ticket Created
  2. Condition: Ticket is Created
  3. Action: Notify active webhook Moveworks Webhook Integration
  4. Payload:
    {
        "event_type": "ticket_created",
        "timestamp": "{{ticket.created_at_with_timestamp}}",
        "ticket": {
        "id": {{ticket.id}},
        "subject": "{{ticket.title}}",
        "description": "{{ticket.description}}",
        "submitter_id": {{ticket.submitter.id}},
        "requester_id": {{ticket.requester.id}},
        {% if ticket.assignee != blank %}"assignee_id": {{ticket.assignee.id}},{% endif %}
        {% if ticket.group != blank %}"group_id": {{ticket.group.id}},{% endif %}
        "created_at": "{{ticket.created_at_with_timestamp}}",
        "updated_at": "{{ticket.updated_at_with_timestamp}}",
        "type": "{{ticket.ticket_type}}",
        "status": "{{ticket.status}}",
        "comments": [
            {%- for comment in ticket.comments -%}
            {
                "id": {{comment.id}},
                "type": "Comment",
                "author_id": {{comment.author.id}},
                "author_name": "{{comment.author.name}}",
                "body": "{{comment.value}}",
                "plain_body": "{{comment.value}}",
                "public": {{comment.is_public}},
                "attachments": [
                    {%- for attachment in comment.attachments -%}
                    {
                        "file_name": "{{attachment.filename}}",
                        "url": "{{attachment.url}}",
                        "size": {{attachment.size}}
                    }{% unless forloop.last %},{% endunless %}
                    {%- endfor -%}
                ],
                "created_at": "{{comment.created_at_with_time}}"
            }{% unless forloop.last %},{% endunless %}
            {%- endfor -%}
        ]
    }
    }