Microsoft Teams
Deploy Snippbot as a Microsoft Teams bot to let users interact with agents directly inside Teams channels and one-on-one chats.
Prerequisites
Section titled “Prerequisites”- A Microsoft 365 account with Teams
- Azure subscription (free tier works)
- A publicly accessible Snippbot URL with HTTPS
- Permissions to register Azure AD applications in your tenant
-
Register an Azure Bot
Go to portal.azure.com → Create a resource → Azure Bot.
- Bot handle: choose a unique name
- Subscription: select your Azure subscription
- Resource group: create or select one
- Pricing tier: F0 (free)
- Microsoft App ID: Create new Microsoft App ID
After creation, note your App ID from the bot resource.
-
Generate an App Password
In the Azure Bot resource → Configuration → Manage (next to Microsoft App ID) → Certificates & secrets → New client secret.
Copy the secret value — this is your App Password.
-
Configure the messaging endpoint
In the Azure Bot resource → Configuration:
- Messaging endpoint:
https://your-snippbot-url.com/webhook/teams
- Messaging endpoint:
-
Enable the Teams channel
In Azure Bot → Channels → Microsoft Teams → Apply.
-
Store credentials in Snippbot
Go to Settings → Channels → Teams and enter:
- App ID
- App Password
Or via CLI:
Terminal window snippbot channel set teams \--app-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \--app-password "your-client-secret-value" -
Start the adapter
Terminal window snippbot channel start teams -
Create a channel binding
In Settings → Channels → Teams → Bindings, click Add Binding:
- Channel ID: Teams channel ID (from the Teams URL or Teams Admin Center)
- Agent: which agent handles messages
- Access mode:
open/allowlist/admin_only
-
Install the bot in Teams
- In Teams, go to Apps → Manage your apps → Upload a custom app
- Or have an admin deploy via Teams Admin Center for organization-wide installation
How it works
Section titled “How it works”The Teams adapter uses the Bot Framework protocol. When a user sends a message:
- Teams delivers the activity to your endpoint via HTTPS POST
- The adapter validates the inbound Bearer token (JWT structure check)
- The message is normalized and routed to the bound agent
- The response is sent back via the Bot Framework Connector API using credentials obtained with the App ID and App Password
Supported message types
Section titled “Supported message types”- Text messages in channels and group chats
- Direct messages (one-on-one with the bot)
- @mentions in channels (bot responds only when mentioned)
- Adaptive Cards for rich formatted responses
Access modes
Section titled “Access modes”| Mode | Who can use the bot |
|---|---|
open | Any Teams user in bound channels |
allowlist | Only approved users (by email or UPN) |
admin_only | Only admin users in the binding |
Mention behavior
Section titled “Mention behavior”In channel contexts, the bot only responds when @mentioned:
@SnippBot what's the status of the deployment pipeline?In direct messages, all messages are processed without @mention.
Troubleshooting
Section titled “Troubleshooting”Bot not receiving messages
Section titled “Bot not receiving messages”- Verify the messaging endpoint is reachable:
curl https://your-url.com/webhook/teams - Check Azure Bot → Activity Log for delivery errors
- Ensure the Teams channel is enabled in Azure Bot → Channels
OAuth authentication errors
Section titled “OAuth authentication errors”The App Password may have expired (Azure secrets expire after 1–2 years). Rotate the secret in Azure AD and update Snippbot:
snippbot channel set teams --app-password "new-secret"snippbot channel restart teamsBot installed but not responding
Section titled “Bot installed but not responding”Ensure the channel adapter is running:
snippbot channel status teamssnippbot channel logs teams