Microsoft Teams Notifications
Reoclo posts to Microsoft Teams as Adaptive Cards via an Incoming Webhook. The card title shows the severity and event summary. The body shows the event details. Severity drives the title color: red (critical), yellow (warn), default (info).
Prerequisites
Section titled “Prerequisites”- A Microsoft Teams team and channel where you can configure connectors
- Permission to add connectors (channel owner, or admin policy allows members to add)
Option A: Incoming Webhook connector (classic)
Section titled “Option A: Incoming Webhook connector (classic)”- In Teams, open the destination channel.
- Click the ⋯ menu next to the channel name → Connectors.
- Find Incoming Webhook and click Add (then Add again on the dialog).
- Give the webhook a name (for example,
Reoclo) and optionally upload an icon. - Click Create.
- Copy the URL that appears. It looks like
https://yourtenant.webhook.office.com/webhookb2/...@.../IncomingWebhook/.../.... - Click Done.
Option B: Workflows (Power Automate, recommended for new setups)
Section titled “Option B: Workflows (Power Automate, recommended for new setups)”- In Teams, install the Workflows app from the app catalog if it is not already available.
- Open the destination channel, click ⋯ → Workflows.
- Pick the template Post to a channel when a webhook request is received.
- Sign in if prompted, confirm the team and channel, and click Create flow.
- Copy the HTTP POST URL that the workflow generates.
Reoclo’s Adaptive Card payload works with both webhook types without modification.
Step 2: Create the channel in Reoclo
Section titled “Step 2: Create the channel in Reoclo”Dashboard
Section titled “Dashboard”- Open Settings → Notification Channels.
- Click Add Channel → Microsoft Teams.
- Give it a name (for example,
eng-team-alerts). - Paste the webhook URL into Webhook URL.
- Click Send Test. An Adaptive Card titled
INFO — [TEST] Reoclo notification channel testshould appear in the Teams channel. - Pick which events this channel receives.
- Save.
reoclo channels create microsoft_teams \ --name "eng-alerts" \ --secret "https://yourtenant.webhook.office.com/webhookb2/..." \ --events deploy_failed,monitoring_uptime_down,incident_createdOr via YAML:
kind: microsoft_teamsname: eng-alertsconfig: {}secret: ${env:TEAMS_WEBHOOK_URL}events: deploy_failed: true monitoring_uptime_down: true incident_created: trueMessage format
Section titled “Message format”Reoclo sends an Adaptive Card v1.4 with two text blocks: a bold title combining severity and subject, and a wrapped body block:
{ "type": "message", "attachments": [{ "contentType": "application/vnd.microsoft.card.adaptive", "content": { "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextBlock", "size": "Medium", "weight": "Bolder", "text": "CRITICAL — Deployment failed", "color": "attention" }, { "type": "TextBlock", "wrap": true, "text": "Deployment of MyApp to prod-1 failed: exit code 137 (OOM)" } ] } }]}| Severity | Adaptive Card color |
|---|---|
critical | attention (red) |
warn | warning (yellow) |
info | default |
Reoclo treats HTTP 200 and 202 as success. Teams uses 202 for the Workflows webhook path.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Cause | Fix |
|---|---|---|
400 Webhook message delivery failed | Channel deleted the connector or the workflow was deactivated | Recreate the webhook/workflow and update the channel secret |
404 Not Found | URL truncated when copying | Re-copy the full webhook URL (they’re long — make sure you got everything) |
| Card shows but title color is gray | Severity is null | Expected for non-alert events; only alert-driven events carry severity |
| Cards arrive without formatting | Connector/workflow expects message cards | The format Reoclo sends is correct for both classic connectors and Workflows — if you see plain text, the receiving endpoint is something else entirely (e.g., a webhook trigger expecting a custom schema) |
| Test passes, real events silent | Event toggles disabled | Open the channel and enable the events you want |
Routing tips
Section titled “Routing tips”- One channel per team. Do not share a Teams channel between unrelated services. Adaptive Cards are visually dense and clutter quickly.
- Pair with email or PagerDuty for off-hours. Teams notifications do not page. Use PagerDuty or OpsGenie for actual on-call.
Next Steps
Section titled “Next Steps”- Add a PagerDuty channel for after-hours incident routing
- Configure Alert Rules to wire monitor thresholds into this channel