# Microsoft Teams Plugin ## Overview The Microsoft Teams integration for OpenClaw operates as a plugin (not included in core), enabling bot conversations via Teams DMs, group chats, and channels. This setup involves Azure Bot registration, Teams app manifest creation, and webhook configuration. ## Installation ```bash openclaw plugins install @openclaw/msteams ``` Configuration is stored in `~/.openclaw/openclaw.json`. ## Key Setup Requirements ### Essential Credentials - App ID and client secret from Azure Bot registration - Tenant ID (single-tenant recommended) - Webhook exposure via public URL or tunnel (port 3978 default) ## Access Control Defaults - **DMs**: Use a "pairing" policy by default, requiring approval for unknown senders - **Group chats and channels**: Default to "allowlist" mode - blocked unless explicitly configured Configuration options support both user IDs and display names. ## Technical Capabilities ### What Works Without Graph API - Real-time text messaging via webhook - Personal DM file attachments - Channel message receiving (RSC permissions only) ### What Requires Microsoft Graph Permissions - Channel/group image and file downloads - Message history retrieval - Per-user file sharing links ## Limitations - Teams markdown support is more limited than Slack or Discord - Complex formatting may render incorrectly - Webhook timeouts can cause duplicate processing if LLM responses exceed Teams' timeout threshold - Private channels have inconsistent bot support across Microsoft's infrastructure ## File Sharing Architecture ### DMs Use the built-in FileConsentCard flow. ### Group Chats and Channels Require SharePoint site integration with Graph API permissions (`Sites.ReadWrite.All`). Files upload to `/OpenClawShared/` within the configured SharePoint site. ## Configuration Flexibility The system supports per-team and per-channel overrides for: - Reply style - Mention requirements - Tool policies Reply style configuration addresses Teams' dual UI paradigms (Posts vs. Threads), with "thread" as the default setting.