๐Ÿ”—Integration & Channels

How to Connect OpenClaw to Microsoft Teams

Advanced2-4 hoursUpdated 2025-01-12

Microsoft Teams integration requires navigating Azure Bot Service, Bot Framework, and Teams app manifests. This advanced guide walks you through registering an Azure Bot, creating a Teams app package, configuring OpenClaw for Bot Framework compliance, and deploying a production-ready Teams bot.

Why This Is Hard to Do Yourself

These are the common pitfalls that trip people up.

โ˜๏ธ

Azure Bot Service setup

Teams requires an Azure Bot registration, app service deployment, and Bot Framework authentication before your bot can send a single message

๐Ÿ“ฆ

Teams app manifest complexity

The manifest.json file has strict schema requirements, icon dimensions, and capability declarations. One error blocks the entire install.

๐Ÿ”

Bot Framework authentication

Teams uses Microsoft Identity for bot authentication. Token validation, tenant ID verification, and audience claims must all be correct.

๐ŸŽฏ

Activity types and attachments

Teams uses Bot Framework's activity schema with unique message types, adaptive cards, and attachment formats that differ from other platforms

๐Ÿ“‹

Admin approval requirements

Enterprise Teams tenants often require admin approval before users can install third-party apps

Step-by-Step Guide

Step 1

Register an Azure Bot

# 1. Go to portal.azure.com
# 2. Create Resource โ†’ Azure Bot
# 3. Set:
#    - Bot handle: openclaw-ai
#    - Pricing tier: F0 (free)
#    - Microsoft App ID: Create new
# 4. Save:
#    - Microsoft App ID
#    - App Password (client secret)

Warning: The App Password is shown only once. Save it immediately or you'll need to generate a new one.

Step 2

Configure messaging endpoint

# In Azure Bot โ†’ Configuration:
# Messaging endpoint: https://your-domain.com/api/messages
#
# This endpoint must:
# - Be publicly accessible over HTTPS
# - Respond to Bot Framework activity schema
# - Validate JWT tokens from Microsoft
Step 3

Create Teams app manifest

# manifest.json:
{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
  "manifestVersion": "1.16",
  "version": "1.0.0",
  "id": "YOUR_MICROSOFT_APP_ID",
  "packageName": "com.openclaw.teams",
  "developer": {
    "name": "Your Company",
    "websiteUrl": "https://yourcompany.com",
    "privacyUrl": "https://yourcompany.com/privacy",
    "termsOfUseUrl": "https://yourcompany.com/terms"
  },
  "name": {
    "short": "OpenClaw AI",
    "full": "OpenClaw AI Assistant"
  },
  "description": {
    "short": "AI assistant for your team",
    "full": "OpenClaw brings AI capabilities directly to Microsoft Teams."
  },
  "icons": {
    "color": "color-192x192.png",
    "outline": "outline-32x32.png"
  },
  "accentColor": "#FF4D4D",
  "bots": [
    {
      "botId": "YOUR_MICROSOFT_APP_ID",
      "scopes": ["personal", "team", "groupchat"],
      "supportsFiles": true,
      "isNotificationOnly": false,
      "commandLists": [
        {
          "scopes": ["personal", "team", "groupchat"],
          "commands": [
            {
              "title": "ask",
              "description": "Ask a question"
            },
            {
              "title": "help",
              "description": "Show help"
            }
          ]
        }
      ]
    }
  ],
  "permissions": ["identity", "messageTeamMembers"],
  "validDomains": ["your-domain.com"]
}
Step 4

Configure OpenClaw for Teams

# In config/channels/teams.yaml:
teams:
  enabled: true
  app_id: "YOUR_MICROSOFT_APP_ID"
  app_password: "YOUR_APP_PASSWORD"
  tenant_id: "YOUR_TENANT_ID"  # Optional, for single-tenant bots
  endpoint: "/api/messages"
  adaptive_cards: true  # Use Teams-native rich cards
Step 5

Package and deploy the Teams app

# Create app package (zip file containing):
# - manifest.json
# - color-192x192.png (192x192 color icon)
# - outline-32x32.png (32x32 outline icon)
#
# In Teams:
# Apps โ†’ Manage your apps โ†’ Upload an app โ†’ Upload a custom app
# Select the .zip file

Warning: Icon dimensions must be exact. Teams rejects the package if icons are the wrong size or format (must be PNG).

Step 6

Test the bot

# In Teams, find your bot in the Apps section
# Start a chat or add it to a channel
# Try: @OpenClaw AI What's on the team calendar?
#
# Check OpenClaw logs:
tail -f ~/.openclaw/logs/channels.log | grep teams

Teams Integration Is an Azure Project

Azure Bot Service, Bot Framework authentication, Teams app manifests, adaptive cards, admin approval โ€” our Teams integration experts handle every step. Most Teams integrations are live within 2-3 days.

Get matched with a specialist who can help.

Sign Up for Expert Help โ†’

Frequently Asked Questions