mirror of
https://github.com/zulip/zulip.git
synced 2025-11-23 07:52:35 +00:00
The "subdomain" label is redundant, to the extent it's even accurate -- this is really just the URL we want to display, which may or may not involve a subdomain. Similarly "external". The former `external_api_path_subdomain` was never a path -- it's a host, followed by a path, which together form a scheme-relative URL. I'm not quite convinced that value is actually the right thing in 2 of the 3 places we use it, but fixing that can start by giving an accurate name to the thing we have.
143 lines
5.9 KiB
Markdown
143 lines
5.9 KiB
Markdown
See customer support interactions right in Zulip, with our Freshdesk
|
|
integration! Note that this integration must be set up by an
|
|
administrator for your Freshdesk instance.
|
|
|
|
{!create-stream.md!}
|
|
|
|
Next, on your {{ settings_html|safe }}, create a Freshdesk bot.
|
|
|
|
Now we can set up the Freshdesk events that will trigger Zulip's.
|
|
Freshdesk provides separate triggering mechanisms for ticket
|
|
creation and ticket changes, so we'll set up these triggers in two
|
|
parts.
|
|
|
|
### Part 1: Zulip notifications for new Freshdesk tickets
|
|
|
|
1. Visit your Freshdesk admin page. Under the **Helpdesk Productivity**
|
|
section, click the **Dispatch'r** icon:
|
|

|
|
|
|
2. Click the **New rule** button to create a new Dispatch'r rule that
|
|
will send notifications to Zulip when Freshdesk tickets are opened.
|
|
|
|
3. On the Dispatch'r rule creation page, give the rule a name and
|
|
description. Next, we need to specify the conditions under which to
|
|
trigger Zulip notifications. There isn't a shortcut for "always
|
|
generate a notification on ticket creation", so we'll instead fake it
|
|
by picking two complementary conditions: when the source **is email**,
|
|
and when the source **is not email**:
|
|

|
|
|
|
4. In the **Action** section, add a new action of type **Trigger Webhook**.
|
|
Set the **Request Type** to **POST**. Set the following **Callback URL**,
|
|
replacing the Zulip stream with your desired stream:
|
|
`{{ api_url }}/v1/external/freshdesk?stream=freshdesk`
|
|
|
|
5. Check the **Requires Authentication** box, and supply the bot email
|
|
address and API key. The **Action** section should look like this so
|
|
far:
|
|

|
|
|
|
6. Select **JSON** for the **Encoding**. Under the encoding, select
|
|
**Advanced**. Paste the following JSON into the **Content** box:
|
|
```
|
|
{"freshdesk_webhook":
|
|
{
|
|
"triggered_event":"{{triggered_event}}",
|
|
"ticket_id":"{{ticket.id}}",
|
|
"ticket_url":"{{ticket.url}}",
|
|
"ticket_type":"{{ticket.ticket_type}}",
|
|
"ticket_subject":"{{ticket.subject}}",
|
|
"ticket_description":"{{ticket.description}}",
|
|
"ticket_status":"{{ticket.status}}",
|
|
"ticket_priority":"{{ticket.priority}}",
|
|
"requester_name":"{{ticket.requester.name}}",
|
|
"requester_email":"{{ticket.requester.email}}",
|
|
}
|
|
}
|
|
```
|
|
|
|
These ticket details are what will be forwarded to Zulip. The
|
|
pasted JSON should look like this:
|
|
|
|

|
|
|
|
Lastly, save your new Dispatch'r rule. The next time a Freshdesk ticket
|
|
is opened, the team will get a notification in Zulip!
|
|
|
|
If you only want to receive Zulip notifications on ticket creation,
|
|
stop here, you're done! If you also want notifications on important ticket
|
|
changes, please continue to the next section.
|
|
|
|
### Part 2: Zulip notifications on ticket changes
|
|
|
|
1. Visit your Freshdesk admin page. Under the **Helpdesk Productivity**
|
|
section, click the **Observer** icon:
|
|

|
|
|
|
2. Click the **New rule** button to create a new Observer rule that will
|
|
send notifications to Zulip when Freshdesk tickets are updated.
|
|
|
|
3. On the Observer rule creation page, give the rule a name and
|
|
description. Under **When Any Of These Events Occur**, create
|
|
these new rules:
|
|
* Priority is changed, from Any Priority, to Any Priority
|
|
* Status is changed, from Any Status, to Any Status
|
|
* Note is added, Type Any
|
|
|
|
4. If you do not want to receive Zulip notifications on one or more of
|
|
these events, leave out the rule for that event.
|
|
|
|
5. Under **And The Events Are Performed By**, select **Anyone**.
|
|
So far, the rule should look like this:
|
|

|
|
|
|
6. Next, we need to specify the types of tickets that will trigger
|
|
Zulip notifications. There isn't a shortcut for "always generate a
|
|
notification on ticket update", so as before we'll instead fake it by
|
|
picking two complementary conditions: when the source **is email**,
|
|
and when the source **is not email**:
|
|

|
|
|
|
7. Under **Perform These Actions**, add a new action of type
|
|
**Trigger Webhook**. Set the **Request Type** to **POST**. Set the
|
|
following **Callback URL**, replacing the Zulip stream with your
|
|
desired stream:
|
|
`{{ api_url }}/v1/external/freshdesk?stream=freshdesk`
|
|
|
|
8. Check the **Requires Authentication** box, and supply the bot e-mail
|
|
address and API key. The Action section should look like this so far:
|
|

|
|
|
|
9. Select **JSON** for the **Encoding**. Under the encoding, select
|
|
**Advanced**. Paste the following JSON into the **Content** box:
|
|
|
|
```
|
|
{"freshdesk_webhook":
|
|
{
|
|
"triggered_event":"{{triggered_event}}",
|
|
"ticket_id":"{{ticket.id}}",
|
|
"ticket_url":"{{ticket.url}}",
|
|
"ticket_type":"{{ticket.ticket_type}}",
|
|
"ticket_subject":"{{ticket.subject}}",
|
|
"ticket_description":"{{ticket.description}}",
|
|
"ticket_status":"{{ticket.status}}",
|
|
"ticket_priority":"{{ticket.priority}}",
|
|
"requester_name":"{{ticket.requester.name}}",
|
|
"requester_email":"{{ticket.requester.email}}",
|
|
}
|
|
}
|
|
```
|
|
|
|
These ticket details are what will be forwarded to Zulip. The
|
|
pasted JSON should look like this:
|
|
|
|

|
|
|
|
Finally, save your new Observer rule. The next time a Freshdesk
|
|
ticket is updated, the team will get a notification in Zulip!
|
|
|
|
{!congrats.md!}
|
|
|
|

|