diff --git a/zerver/lib/integrations.py b/zerver/lib/integrations.py index 2e2a25624e..75aa9ba771 100644 --- a/zerver/lib/integrations.py +++ b/zerver/lib/integrations.py @@ -174,7 +174,12 @@ WEBHOOK_INTEGRATIONS = [ WebhookIntegration('codeship'), WebhookIntegration('crashlytics'), WebhookIntegration('delighted', display_name='Delighted'), - WebhookIntegration('deskdotcom', logo='static/images/integrations/logos/deskcom.png', display_name='Desk.com'), + WebhookIntegration( + 'deskdotcom', + logo='static/images/integrations/logos/deskcom.png', + display_name='Desk.com', + stream_name='desk' + ), WebhookIntegration('freshdesk'), GithubIntegration( 'github', diff --git a/zerver/webhooks/deskdotcom/doc.html b/zerver/webhooks/deskdotcom/doc.html deleted file mode 100644 index 3918427adc..0000000000 --- a/zerver/webhooks/deskdotcom/doc.html +++ /dev/null @@ -1,120 +0,0 @@ -

- First, create the stream you'd like to use for Desk.com notifications, - and subscribe all interested parties to this stream. We recommend the - stream name desk. Keep in mind you still need to - create the stream first even if you are using this recommendation. -

- -

- Next, in Desk.com, open your Admin view via the top-left corner - dropdown. In the Admin view, click on Apps, then click Install under - "Custom Action": -

- - -

- From there, click "Install Custom Action" and accept the terms. Fill - in the form like this: -

- - - - -

- Click Create to save your settings. From the next screen, click Add - Action add a new action. You'll do this for every action you want a - notification on Zulip for. (To add another action later, look for your - custom action on the Apps page under "Installed Apps." -

- - - -

- Let's say you want a notification each time a case is updated. Put - in a descriptive name like "Announce case update", select "POST a string to a URL" - for Action Type, and copy-paste this to the "Appended URL path": -

-{% raw %} -

?stream=desk&topic={{ case.id }}:+{{ case.subject }}

-{% endraw %} -

- The "appended URL path" will be the same for every notification — - it makes sure the notification goes to the appropriate stream and topic - within Zulip. -

- -

- Next, copy this template Zulip message into "Message to - POST": -

-{% raw %} -
-Case [{{ case.id }}, {{ case.subject }}]({{ case.direct_url }}), was updated.
-
-* Status: {{ case.status.name }}
-* Priority: {{ case.priority }}
-* Customer: {{ customer.name }}
-* Company: {{ customer.company }}
-* Description: {{ case.description }}
-
-

- You don't need to edit that, although you may if you wish. All - the funny-looking stuff inside {{ and }} - will be filled in by Desk.com for each event. The dialog should look - like this: -

-{% endraw %} - - - -

- Click Add Action to save, and then on the next screen click the slider - next to the action to enable it. This is important — actions are turned off - by default! -

- - - -

- Now you need to create a rule that triggers this action. Desk.com's - support center has a - lengthy - article on rules, but in short, click on "Cases" up at the top, - "Rules" on the left side, and then the specific event you want to notify - on — in our example, "Inbound Interaction". -

- - - -

- Select the types of interaction you want your rule to apply to, - such as Chat. Specify the name and click on "Add Rule." -

- - - -

- In the next screen, provide the details. First, click Add Actions to - display the rule actions. Select "Trigger an App Action" in the dropdown, and - then the name of the custom action you created earlier when the second - dropdown appears. You can add additional "All" or "Any" conditions if desired. - Also select when the rule should run (if not "Anytime") and enable it. -

- - - -

Finally, click Update.

- -

- Congratulations! You're done!
When a case is updated, - you'll see a notification like the following, to the stream - desk, with a topic that matches the case's subject name: -

- - diff --git a/zerver/webhooks/deskdotcom/doc.md b/zerver/webhooks/deskdotcom/doc.md new file mode 100644 index 0000000000..53789944c3 --- /dev/null +++ b/zerver/webhooks/deskdotcom/doc.md @@ -0,0 +1,105 @@ +{!create-stream.md!} + +Keep in mind you still need to create the stream first even +if you are using this recommendation. + +Next, on your {{ settings_html|safe }}, create a bot and +note its email and API key. + +Next, in Desk.com, open your **Admin** view via the top-left +corner dropdown. In the **Admin** view, click on **Apps**, then +click **Install** under **Custom Action**: + +![](/static/images/integrations/desk/001.png) + +From there, click **Install Custom Action** and accept the terms. +Fill in the form like this: + +* **Name**: Zulip +* **Authentication Method**: Basic Auth +* **URL**: `{{ external_api_uri_subdomain }}/v1/external/deskdotcom` +* **User name**: *your bot's user name, e.g.* `desk-bot@yourdomain.com` +* **Password**: *your bot's API key* + +![](/static/images/integrations/desk/002.png) + +Click **Create** to save your settings. From the next screen, click +**Add Action** to add a new action. You'll do this for every action +you want a notification on Zulip for. (To add another action later, +look for your custom action on the **Apps** page under +**Installed Apps.** + +![](/static/images/integrations/desk/003.png) + +Let's say you want a notification each time a case is updated. Put +in a descriptive name like **Announce case update**, select +**POST a string to a URL** for **Action Type**, and copy-paste this +to the **Appended URL path**: + +{% raw %} +`?stream=desk&topic={{ case.id }}:+{{ case.subject }}` +{% endraw %} + +The "appended URL path" will be the same for every notification — +it makes sure the notification goes to the appropriate stream and topic +within Zulip. + +Next, copy this template Zulip message into **Message to POST**: + +{% raw %} +``` +Case [{{ case.id }}, {{ case.subject }}]({{ case.direct_url }}), was updated. + +* Status: {{ case.status.name }} +* Priority: {{ case.priority }} +* Customer: {{ customer.name }} +* Company: {{ customer.company }} +* Description: {{ case.description }} +``` +{% endraw %} + +You don't need to edit that, although you may if you wish. All +the funny-looking stuff inside {% raw %}`{{` and `}}`{% endraw %} +will be filled in by Desk.com for each event. The dialog should +look like this: + +![](/static/images/integrations/desk/004.png) + +Click **Add Action** to save, and then on the next screen, click the +slider next to the action to enable it. This is important — actions are +turned off by default! + +![](/static/images/integrations/desk/005.png) + +Now you need to create a rule that triggers this action. Desk.com's +support center has a [lengthy article on rules][1], but in short, +click on **Cases** up at the top, **Rules** on the left side, and +then the specific event you want to notify on — in our example, +**Inbound Interaction**. + +[1]: https://support.desk.com/customer/portal/articles/1376 + +![](/static/images/integrations/desk/006.png) + +Select the types of interaction you want your rule to apply to, +such as **Chat**. Specify the name and click on **Add Rule**. + +![](/static/images/integrations/desk/007.png) + +In the next screen, provide the details. First, click **Add Actions** +to display the rule actions. Select **Trigger an App Action** in the +dropdown, and then the name of the custom action you created earlier +when the second dropdown appears. You can add additional **All** or +**Any** conditions if desired. Also select when the rule should run +(if not **Anytime**) and enable it. + +![](/static/images/integrations/desk/008.png) + +Finally, click **Update**. + +{!congrats.md!} + +![](/static/images/integrations/desk/009.png) + +When a case is updated, you'll see a notification like the one above, +to the stream `desk`, with a topic that matches the case's subject name.