This webhook integration for Trello is the recommended way to integrate with Trello, and should support all the features of the legacy Trello cron-based integration.
First, create the stream you'd like to use for Trello notifications,
and subscribe all interested parties to this stream. We recommend the
name trello
.
Your webhook URL is:
{{ external_api_uri_subdomain }}/v1/external/trello?api_key=abcdefgh&stream=trello
where api_key
is the API key of your Zulip bot,
and stream
is the stream name you want the notifications sent to.
Before you create a webhook, you'll need to follow the steps below to get an APPLICATION_KEY, and a UserToken, and to fetch the board's idModel.
To generate the APPLICATION_KEY, open this URL in your web browser:
https://trello.com/1/appkey/generate
.
To generate a read access token, fill in and open this URL in the browser while logged into your Trello account:
https://trello.com/1/authorize?key=<APPLICATION_KEY>&name=Issue+Manager&expiration=never&response_type=token&scope=read
You will receive your UserToken. Note it.
Within the the board URL, you can find the TRELLO_BOARD_SHORT_ID.
The Trello URL format is:
https://trello.com/b/TRELLO_BOARD_SHORT_ID/boardName
.
Now you have the APPLICATION_KEY, UserToken and TRELLO_BOARD_SHORT_ID.
Construct this URL and open it in your web browser:
https://api.trello.com/1/board/<TRELLO_BOARD_SHORT_ID>?key=<APPLICATION_KEY>&token=<UserToken>
You'll receive some JSON. Within that, find the id value. That's your idModel; note it.
Now you have the ingredients to create your webhook.
Send a POST
request to this URL with this data:
https://api.trello.com/1/tokens/<UserToken>/webhooks/?key=<APPLICATION_KEY>
{ "description": "Webhook for Zulip integration", "callbackURL": "<URL_TO_ZULIP_WEBHOOK_FROM_SECOND_STEP>", "idModel": "<ID_MODEL>", }You can use
curl
to do this:curl 'https://api.trello.com/1/tokens/<UserToken>/webhooks/?key=<APPLICATION_KEY>' -H 'Content-Type: application/json' -H 'Accept: application/json' --data-binary $'{\n "description": "Webhook for Zulip integration",\n "callbackURL": "<URL_TO_ZULIP_WEBHOOK_FROM_SECOND_STEP>",\n "idModel": "<ID_MODEL>"\n}' --compressed
The response from Trello should look like:
{ "id": "<WEBHOOK_ID>", "description": "Webhook for Zulip integration", "idModel": "<ID_MODEL>", "callbackURL": "<URL_TO_ZULIP_WEBHOOK_FROM_SECOND_STEP>", "active": true }
Congratulations! You've created a webhook and your integration is live.
When you make changes in on this board in Trello, you will receive Zulip notifications like this: