Connect a channel in Slack, Mattermost or Microsoft Teams and Continuous Translations posts a short message there when something happens in your projects. You create a webhook address in the chat tool, paste it into Continuous Translations, and choose what you want to hear about.
Only organization owners and admins can see and change the channels.
What triggers a message #
| Event | Message |
|---|---|
| A translation is ready for review | Translation ready for review: the key, the language, the project and the branch. |
| A translation is approved | Translation approved: the same details. |
| Strings are pushed (new, changed or removed) | Strings pushed: the project, the branch and how many strings were added, changed and removed. A push that changes nothing, and a dry run, send no message. |
| A tag is created | Tag created: the tag, the project, the branch and the number of strings. |
Every message ends with a link that opens the project in Continuous Translations. Messages are written in English. They are sent just after the action finished: a channel that is down never slows down or breaks what caused the message. A message that the channel does not take because it is unreachable or overloaded is tried again, up to 5 attempts in all, with waits of 1 minute, 5 minutes, 30 minutes and 2 hours. A message that the channel refuses for good, such as an address that was deleted in the chat tool, is not tried again. The result in the list is that of the latest attempt.
What is sent #
Only what the table above shows. Never the text of a translation or of a source string, and no names or email addresses of people. Project names and key names are cleaned first: they are shown as plain text, so a key called @channel does not ping anybody and a key that looks like a link does not become one.
Connect a channel #
- In the chat tool, create a webhook for the channel:
- Slack: create an app for your workspace at api.slack.com/apps, turn on Incoming Webhooks, choose Add New Webhook to Workspace and pick the channel. The address starts with
https://hooks.slack.com/services/. - Mattermost: open Integrations, then Incoming Webhooks, and add one for the channel. A system admin may have to switch incoming webhooks on first. The address ends in
/hooks/and an ID. - Microsoft Teams: in Workflows, create a workflow from the template Post to a channel when a webhook request is received and choose the team and channel. Use the URL of the workflow’s HTTP trigger, which is on
logic.azure.comorapi.powerplatform.com.
- Slack: create an app for your workspace at api.slack.com/apps, turn on Incoming Webhooks, choose Add New Webhook to Workspace and pick the channel. The address starts with
- In Continuous Translations open Organization → Integrations. Under Communication, choose Manage on the tool.
- Under Add a channel fill in:
- Name: for you to recognise the channel, such as
#translations. - Webhook address: the address you copied.
- Project: one project, or All projects.
- Send a message when: the events you want. A translation is ready for review and Strings are pushed are selected to begin with.
- Name: for you to recognise the channel, such as
- Choose Check and add. A test message is sent to the channel first; if the tool refuses it, nothing is saved and you see why.
You can add up to 20 channels per organization, also several for the same tool, for example a review channel and a releases channel with different events.
Manage channels #
Each channel in the list shows its name, the host and last four characters of its address, its events, its project and the result of the last message (Last message delivered or Last message failed, with the answer of the tool). From there you can:
- Send test message to see that it still arrives. A webhook that was deleted or switched off in the chat tool shows up as Last message failed.
- Edit the name, events or project. Fill in a new address to replace the old one; it is checked with a test message again. Leave it empty to keep the address.
- Remove the channel. Nothing is sent to it again. The webhook stays in the chat tool: delete it there too if you no longer need it.
Keeping the address secret #
Anyone who has a webhook address can post in your channel, so the address is treated like a password. It is stored encrypted and never shown again, not even to admins: the list only shows the host and the last four characters. It is never written to logs or the audit log. We only accept addresses that belong to the tool: hooks.slack.com for Slack, logic.azure.com, api.powerplatform.com or webhook.office.com for Teams, and an address ending in /hooks/ and an ID for Mattermost, always over https. Addresses on private networks are refused, so a Mattermost server has to be reachable from the internet.
Adding, changing and removing channels is recorded in the audit log as chat.connected, chat.updated and chat.removed.