Skip to content

Microsoft Teams

Teams integration uses the Microsoft Bot Framework — the same infrastructure that powers enterprise bots on Teams, Outlook, and Skype for Business.

  • Direct messages and channel mentions
  • Adaptive Card rich replies (when needed)
  • Works across Teams, Outlook, and Office 365 Groups
  • Enterprise SSO-friendly (tied to Azure AD)
  1. Sign in to the Azure Portal with a work or school account
  2. Create a new Azure Bot resource:
    • Bot handle: e.g. aibutler-yourorg
    • Subscription and Resource group: pick any
    • Type of App: Multi Tenant
  3. In Configuration, copy the Microsoft App ID
  4. Click Manage → Certificates & secrets → create a new Client secret and copy the value (shown once only)
  1. In the bot resource, go to Channels
  2. Click Microsoft Teams → agree to the terms → Apply
  3. Under Messaging endpoint in Configuration, enter:
    https://your-host/webhook/teams
Terminal window
aibutler vault set teams_app_id YOUR_APP_ID
aibutler vault set teams_app_password YOUR_CLIENT_SECRET
configurations:
channels:
active:
- teams

You need an app manifest to install the bot in a Teams workspace:

  1. Use Developer Portal for Teams or Teams Toolkit
  2. Create a new app with the App ID from step 1
  3. Upload the app package (.zip) to your Teams tenant via Apps → Manage your apps → Upload a custom app
Terminal window
aibutler run

You should see teams: tools registered in the logs.

FeatureSupported
1:1 chatsYes
Group chatsYes
Team channelsYes (@mentions required)
Adaptive CardsYes
File attachmentsYes
Voice messagesNo
Streaming repliesNo
SSOInherited from Azure AD

Bot doesn’t show up in Teams. Double-check the app manifest matches the Azure Bot App ID, and that the tenant admin has approved custom app uploads (Teams admin center → Teams apps → Setup policies).

401 Unauthorized in logs. The client secret expired or was copied incorrectly. Regenerate it in Azure → Certificates & secrets.

Messages delivered but no reply. Teams requires HTTPS for the messaging endpoint. Self-signed certs won’t work — use a real cert via Let’s Encrypt or place the bot behind a reverse proxy like Caddy.