microsoft-teams-send-as-workflow

Send messages and Adaptive Cards to Microsoft Teams via Incoming Webhook. Use when user requests to send notifications, alerts, or formatted cards to Teams channels. Triggers include requests to post to Teams, Teams webhook, Teams notification, Teams card, or any request to send messages to Microsoft Teams channels.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "microsoft-teams-send-as-workflow" with this command: npx skills add nocoo/microsoft-teams-send-as-workflow/nocoo-microsoft-teams-send-as-workflow-microsoft-teams-send-as-workflow

Microsoft Teams Post

Send messages and Adaptive Cards to Microsoft Teams channels using Incoming Webhook URLs.

Prerequisites

Users need a Webhook URL from Teams. Guide them to create one if missing:

  1. In Teams, go to the target channel
  2. Open Workflows app (search from Apps or click three dots below input)
  3. Find template: "Post to a channel when a webhook request is received"
  4. Name the workflow (e.g., "CLI Notification Bot")
  5. Select target Team and Channel
  6. Copy the generated HTTP POST URL

Quick Start

The bundled script scripts/send_teams.py handles all message types.

python3 scripts/send_teams.py <WEBHOOK_URL> --text "Hello Teams!"

Message Types

Simple Text Message

For basic notifications and alerts.

python3 scripts/send_teams.py <WEBHOOK_URL> -t "🚀 Deployment completed successfully"

Adaptive Card

For rich formatted cards with titles, facts, images, and buttons. Pass JSON as string or file.

Inline JSON:

python3 scripts/send_teams.py <WEBHOOK_URL> -c '{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "body": [
    {
      "type": "TextBlock",
      "text": "Build Report",
      "weight": "Bolder",
      "size": "Medium"
    },
    {
      "type": "FactSet",
      "facts": [
        {"title": "Project", "value": "Backend API"},
        {"title": "Status", "value": "✅ Success"},
        {"title": "Duration", "value": "45s"}
      ]
    }
  ]
}'

From JSON file:

python3 scripts/send_teams.py <WEBHOOK_URL> -c card.json

Raw Payload

For custom message structures not covered by text or card modes.

python3 scripts/send_teams.py <WEBHOOK_URL> -r '{"type": "message", "text": "Custom"}'

Common Patterns

Build/Deployment Notification

python3 scripts/send_teams.py <WEBHOOK_URL> -c '{
  "type": "AdaptiveCard",
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.4",
  "body": [
    {"type": "TextBlock", "text": "Deployment Notification", "weight": "Bolder", "size": "Medium"},
    {"type": "TextBlock", "text": "Project: my-app deployed to production", "wrap": true}
  ],
  "actions": [
    {"type": "Action.OpenUrl", "title": "View Logs", "url": "https://ci.example.com/logs/123"}
  ]
}'

Alert with Facts

python3 scripts/send_teams.py <WEBHOOK_URL> -c '{
  "type": "AdaptiveCard",
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.4",
  "body": [
    {"type": "TextBlock", "text": "⚠️ Alert Summary", "weight": "Bolder"},
    {
      "type": "FactSet",
      "facts": [
        {"title": "Severity", "value": "High"},
        {"title": "Service", "value": "api-gateway"},
        {"title": "Time", "value": "2026-01-23 09:45:00 UTC"}
      ]
    }
  ]
}'

Script Reference

scripts/send_teams.py

ArgumentDescription
webhook_urlTeams Incoming Webhook URL (required positional)
-t, --text TEXTSend simple text message
-c, --card CARDSend Adaptive Card (JSON string or .json file)
-r, --raw RAWSend raw custom payload (JSON string or .json file)
-v, --verboseEnable verbose output

Exit codes: 0 on success, 1 on failure.

Error Handling

The script reports errors clearly:

  • ❌ HTTP Error: 401 - Invalid webhook URL
  • ❌ HTTP Error: 400 - Malformed JSON or invalid card schema
  • ❌ URL Error - Network connectivity issue
  • ✅ Message sent successfully - Confirmed delivery

For 4xx errors, the response body is printed to help diagnose schema issues.

Suspended Workflow

If you receive errors indicating the workflow is "suspended" or "inactive":

  1. Open Power Automate in your browser:

  2. Go to My flows / Workflows

  3. Find your workflow (look for "Suspended" status)

  4. Click → Resume / Activate / Turn on

  5. Retry sending your message

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

image-stitch

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

clinic-visit-prep

帮助患者整理就诊前问题、既往记录、检查清单与时间线,不提供诊断。;use for healthcare, intake, prep workflows;do not use for 给诊断结论, 替代医生意见.

Archived SourceRecently Updated
Automation

changelog-curator

从变更记录、提交摘要或发布说明中整理对外 changelog,并区分用户价值与内部改动。;use for changelog, release-notes, docs workflows;do not use for 捏造未发布功能, 替代正式合规审批.

Archived SourceRecently Updated
Automation

klaviyo

Klaviyo API integration with managed OAuth. Access profiles, lists, segments, campaigns, flows, events, metrics, templates, catalogs, and webhooks. Use this skill when users want to manage email marketing, customer data, or integrate with Klaviyo workflows. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).

Archived SourceRecently Updated