Overview
This guide walks you through connecting OpenAI (Standard) to Microsoft Teams using OpenClaw. You'll learn how to configure authentication, set up the channel, and deploy your AI assistant.
OpenAI (Standard) Features
- Standard OpenAI access
- GPT-4o models
- Simple setup
- Wide compatibility
Microsoft Teams Capabilities
- Direct messages
- Group chats
- Media support
- Reactions
- Thread support
- Native commands
Step 1: 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 2: 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 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 the Gateway
# Start the gateway
openclaw gateway start
# Check status
openclaw status
# View 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 OpenAI (Standard) + Microsoft Teams 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 →