Overview
Microsoft Teams bots use Selenium WebDriver to control a Chrome browser instance that joins the meeting. This approach provides access to meeting features while appearing as a standard participant. Platform Type: Web-based (Chrome automation)Capabilities
Microsoft Teams bots support the following features:- Join and leave meetings
- Audio and video recording
- Real-time transcription via closed captions
- Send and receive chat messages
- Audio and video input/output
- Screen sharing capture
- Custom participant name
- Video playback into meetings
Technical Implementation
Microsoft Teams integration is built on top of Attendee’sWebBotAdapter class:
Key Components:
teams_bot_adapter.py- Main adapter implementationteams_ui_methods.py- UI interaction methodsteams_chromedriver_payload.js- Browser-side JavaScript
Setup Requirements
Attendee API Key
Create an account in your Attendee instance and obtain an API key from Settings → API Keys.
Chrome/Chromium Browser
Ensure Chrome or Chromium is installed. This is included by default in Attendee Docker images.
No Microsoft-specific API credentials are required for basic functionality. Bots can join as guest participants by default.
Meeting Access
Guest Access (Default)
By default, Teams bots join as guest participants. This works for:- Meetings with guest access enabled
- Public meetings shared via link
- External collaboration meetings
Authenticated Access
For meetings requiring Microsoft account login:Closed Captions & Transcription
Microsoft Teams provides native closed captions for transcription:Language Configuration
Specify the closed captions language when creating a bot:- English (en-US, en-GB, en-AU, etc.)
- Spanish (es-ES, es-MX, etc.)
- French (fr-FR, fr-CA)
- German (de-DE)
- Portuguese (pt-BR, pt-PT)
- And more - any language supported by Teams live captions
Teams’ transcription quality and language support may vary based on the meeting organizer’s license and region.
Chat Messages
Microsoft Teams bots can send and receive chat messages with special formatting support:Sending Messages
Rich Text Formatting
The Teams adapter supports HTML formatting in chat messages:<b>- Bold text<i>- Italic text<br>- Line breaks- Spaces are automatically converted to
 for proper rendering
Video Recording
Enable video recording by modifying the DOM:DOM modification optimizes video capture but may alter the meeting UI appearance during recording.
Sending Media
Video Playback
Play video files into Teams meetings:Platform-Specific Settings
Configure Microsoft Teams-specific behavior:Known Limitations
- No Official SDK: Microsoft Teams doesn’t provide a public bot SDK for external developers, requiring browser automation
- Login Required Meetings: Meetings requiring Microsoft account login need authenticated bot access
- Organization Policies: Some organizations disable guest access or external participants
- Performance: Chrome automation uses more resources than native SDK implementations
- UI Dependencies: Bot functionality depends on Teams web UI structure
Authentication Retry Behavior
Attendee automatically handles login requirements:- Bot attempts to join as guest
- If login is required and credentials are available:
- Bot sets
use_bot_login = true - Retries joining with authentication
- Bot sets
- If credentials are not available, bot fails with error
Automatic Leave Configuration
Configure when bots should automatically leave meetings:meeting_empty_timeout_seconds- Leave when no participants remainmeeting_only_bots_timeout_seconds- Leave when only bots are presentauthorized_user_not_in_meeting_timeout_seconds- Wait time for authorized usersilence_timeout_seconds- Leave after period of no audio activity
Best Practices
- Use clear bot names - Help participants identify the bot’s purpose (e.g., “Recording Bot”, “Transcription Assistant”)
- Configure appropriate timeouts - Prevent bots from lingering in empty meetings
- Test guest access - Verify meeting settings allow guest participants before deployment
- Handle formatting carefully - Use supported HTML tags when sending formatted chat messages
- Monitor bot health - Use webhooks to track bot state and handle failures
- Respect privacy - Clearly communicate when recording or transcription is active
Troubleshooting
Bot Cannot Join Meeting
Possible causes:- Meeting requires Microsoft account login
- Organization has disabled guest access
- Meeting link has expired
- Meeting has reached participant limit
- Enable
use_bot_loginwith valid credentials - Contact meeting organizer to enable guest access
- Verify meeting URL is current and valid
Chat Messages Not Sending
Possible causes:- Chat input element not found
- Meeting has disabled chat
- Bot doesn’t have permission to send messages
- Verify chat is enabled in meeting settings
- Check bot has successfully joined the meeting
- Review browser console logs for errors
Captions Not Working
Possible causes:- Language not supported in meeting region
- Captions not enabled by meeting organizer
- Incorrect language code specified
- Verify language code matches Teams-supported languages
- Ask meeting organizer to enable live captions
- Use alternative transcription via Deepgram
Video Quality Issues
Solutions:- Enable
modify_dom_for_video_recording - Increase browser window size for higher resolution capture
- Check network bandwidth and stability
- Verify video codec compatibility