Overview
This guide shows you how to connect OpenAI (Standard) to Microsoft Teams using OpenClaw. You'll configure the messaging channel, set up AI provider authentication, and deploy your assistant.
Microsoft Teams Capabilities
- Direct messages
- Group chats
- Media support
- Reactions
- Thread support
- Native commands
OpenAI (Standard) Features
- Standard OpenAI access
- GPT-4o models
- Simple setup
- Wide compatibility
Step 1: Configure Microsoft Teams
- Register an app in Azure Portal
- Create a Bot Channel Registration
- Configure Teams channel in Azure
- Set app credentials in openclaw.json
- Deploy and add bot to Teams
Step 2: Configure OpenAI (Standard)
Standard API key only
- Create account at platform.openai.com
- Generate API key
- Set OPENAI_API_KEY environment variable
Environment variable: OPENAI_API_KEY
Step 3: Combined Configuration
Add both configurations to your openclaw.json:
{
"agents": {
"defaults": {
"model": {
"primary": "openai/gpt-4o"
}
}
},
"models": {
"providers": {
"openai": {
"models": {
"providers": {
"openai": {
"apiKey": "${OPENAI_API_KEY}
}
},
"channels": {
"msteams": {
"appId": "${MSTEAMS_APP_ID}",
"appPassword": "${MSTEAMS_APP_PASSWORD}"
}
}
}
} Step 4: Start and Test
# Start the gateway
openclaw gateway start
# Check connection status
openclaw status
# View real-time logs
openclaw logs --follow Access Control
Microsoft Teams supports the following access control policies:
DM Policies
| Policy | Description |
|---|---|
allowlist | Only senders in allowFrom list are processed |
open | All DMs are processed (requires allowFrom: ["*"]) |
Group Policies
| Policy | Description |
|---|---|
allowlist | Only groups in groupAllowFrom are processed |
open | All groups are processed |
Deploy Options
Choose how to deploy your Microsoft Teams + OpenAI (Standard) setup:
Local Deployment
Run on your personal machine with local-only access
View Guide →VPS Deployment
Always-on deployment on a Linux VPS
View Guide →Cloud Deployment
Managed container deployment on Fly.io or similar
View Guide →Docker Deployment
Containerized deployment with Docker
View Guide →