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 (e.g.,
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 isn’t 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 (e.g.,
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. Don’t 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 don’t 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