Microsoft Teams Notifications
Microsoft Teams is a widely used collaboration platform, and with Coder's integration, you can enable automated notifications directly within Teams using workflows and Adaptive Cards
Administrators can configure Coder to send notifications via an incoming webhook endpoint. These notifications appear as messages in Teams chats, either with the Flow Bot or a specified user/service account.
Requirements
Before setting up Microsoft Teams notifications, ensure that you have the following:
- Administrator access to the Teams platform
- Coder platform with notifications enabled
Build Teams Workflow
The process of setting up a Teams workflow consists of three key steps:
-
Configure the Webhook Trigger.
Begin by configuring the trigger: "When a Teams webhook request is received".
Ensure the trigger access level is set to "Anyone".
-
Setup the JSON Parsing Action.
Next, add the "Parse JSON" action, linking the content to the "Body" of the received webhook request. Use the following schema to parse the notification payload:
{ "type": "object", "properties": { "_version": { "type": "string" }, "payload": { "type": "object", "properties": { "_version": { "type": "string" }, "user_email": { "type": "string" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "url": { "type": "string" } }, "required": ["label", "url"] } } } }, "title": { "type": "string" }, "body": { "type": "string" } } }
This action parses the notification's title, body, and the recipient's email address.
-
Configure the Adaptive Card Action.
Finally, set up the "Post Adaptive Card in a chat or channel" action with the following recommended settings:
Post as: Flow Bot
Post in: Chat with Flow Bot
Recipient:
user_email
Use the following Adaptive Card template:
{ "$schema": "https://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.0", "body": [ { "type": "Image", "url": "https://coder.com/coder-logo-horizontal.png", "height": "40px", "altText": "Coder", "horizontalAlignment": "center" }, { "type": "TextBlock", "text": "**@{replace(body('Parse_JSON')?['title'], '"', '\"')}**" }, { "type": "TextBlock", "text": "@{replace(body('Parse_JSON')?['body'], '"', '\"')}", "wrap": true }, { "type": "ActionSet", "actions": [@{replace(replace(join(body('Parse_JSON')?['payload']?['actions'], ','), '{', '{"type": "Action.OpenUrl",'), '"label"', '"title"')}] } ] }
Notice: The Coder
actions
format differs from theActionSet
schema, so its properties need to be modified: includeAction.OpenUrl
type, renamelabel
totitle
. Unfortunately, there is no straightforward solution forfor-each
pattern.Feel free to customize the payload to modify the logo, notification title, or body content to suit your needs.
Enable Webhook Integration
To enable webhook integration in Coder, ensure the "notifications" experiment is activated (only required in v2.15.X).
Then, define the POST webhook endpoint created by your Teams workflow:
export CODER_NOTIFICATIONS_WEBHOOK_ENDPOINT=https://prod-16.eastus.logic.azure.com:443/workflows/f8fbe3e8211e4b638...`
Finally, go to the Notification Settings in Coder and switch the notifier to Webhook.
Limitations
-
Public Webhook Trigger: The Teams webhook trigger must be open to the public ("Anyone" can send the payload). It's recommended to keep the endpoint secret and apply additional authorization layers to protect against unauthorized access.
-
Markdown Support in Adaptive Cards: Note that Adaptive Cards support a limited set of Markdown tags.