Overview
Enable your agents to access Teams data, send messages, create meetings, and manage channels. Automate team communication, schedule meetings, retrieve messages, and streamline your collaboration workflows with AI-powered automation.Prerequisites
Before using the Microsoft Teams integration, ensure you have:- A CrewAI AMP account with an active subscription
- A Microsoft account with Teams access
- Connected your Microsoft account through the Integrations page
Setting Up Microsoft Teams Integration
1. Connect Your Microsoft Account
- Navigate to CrewAI AMP Integrations
- Find Microsoft Teams in the Authentication Integrations section
- Click Connect and complete the OAuth flow
- Grant the necessary permissions for Teams access
- Copy your Enterprise Token from Integration Settings
2. Install Required Package
3. Environment Variable Setup
To use integrations with
Agent(apps=[]), you must set the
CREWAI_PLATFORM_INTEGRATION_TOKEN environment variable with your Enterprise
Token..env file:
Available Actions
microsoft_teams/get_teams
microsoft_teams/get_teams
Description: Get all teams the user is a member of.Parameters:
- No parameters required.
microsoft_teams/get_channels
microsoft_teams/get_channels
Description: Get channels in a specific team.Parameters:
team_id(string, required): The ID of the team.
microsoft_teams/send_message
microsoft_teams/send_message
Description: Send a message to a Teams channel.Parameters:
team_id(string, required): The ID of the team.channel_id(string, required): The ID of the channel.message(string, required): The message content.content_type(string, optional): Content type (html or text). Enum:html,text. Default istext.
microsoft_teams/get_messages
microsoft_teams/get_messages
Description: Get messages from a Teams channel.Parameters:
team_id(string, required): The ID of the team.channel_id(string, required): The ID of the channel.top(integer, optional): Number of messages to retrieve (max 50). Default is20.
microsoft_teams/create_meeting
microsoft_teams/create_meeting
Description: Create a Teams meeting.Parameters:
subject(string, required): Meeting subject/title.startDateTime(string, required): Meeting start time (ISO 8601 format with timezone).endDateTime(string, required): Meeting end time (ISO 8601 format with timezone).
microsoft_teams/search_online_meetings_by_join_url
microsoft_teams/search_online_meetings_by_join_url
Description: Search online meetings by Join Web URL.Parameters:
join_web_url(string, required): The join web URL of the meeting to search for.
microsoft_teams/search_online_meetings_by_meeting_id
microsoft_teams/search_online_meetings_by_meeting_id
Description: Search online meetings by external Meeting ID.Parameters:
join_meeting_id(string, required): The meeting ID (numeric code) that attendees use to join. This is the joinMeetingId shown in meeting invitations, not the Graph API meeting id.
microsoft_teams/get_meeting
microsoft_teams/get_meeting
Description: Get details of a specific online meeting.Parameters:
meeting_id(string, required): The Graph API meeting ID (a long alphanumeric string). Obtain from create_meeting or search_online_meetings actions. Different from the numeric joinMeetingId.
microsoft_teams/get_team_members
microsoft_teams/get_team_members
Description: Get members of a specific team.Parameters:
team_id(string, required): The unique identifier of the team. Obtain from get_teams action.top(integer, optional): Maximum number of members to retrieve per page (1-999). Default is100.skip_token(string, optional): Pagination token from a previous response. When the response includes @odata.nextLink, extract the $skiptoken parameter value and pass it here to get the next page of results.
microsoft_teams/create_channel
microsoft_teams/create_channel
Description: Create a new channel in a team.Parameters:
team_id(string, required): The unique identifier of the team. Obtain from get_teams action.display_name(string, required): Name of the channel as displayed in Teams. Must be unique within the team. Max 50 characters.description(string, optional): Optional description explaining the channel’s purpose. Visible in channel details. Max 1024 characters.membership_type(string, optional): Channel visibility. Enum:standard,private. “standard” = visible to all team members, “private” = visible only to specifically added members. Default isstandard.
microsoft_teams/get_message_replies
microsoft_teams/get_message_replies
Description: Get replies to a specific message in a channel.Parameters:
team_id(string, required): The unique identifier of the team. Obtain from get_teams action.channel_id(string, required): The unique identifier of the channel. Obtain from get_channels action.message_id(string, required): The unique identifier of the parent message. Obtain from get_messages action.top(integer, optional): Maximum number of replies to retrieve per page (1-50). Default is50.skip_token(string, optional): Pagination token from a previous response. When the response includes @odata.nextLink, extract the $skiptoken parameter value and pass it here to get the next page of results.
microsoft_teams/reply_to_message
microsoft_teams/reply_to_message
Description: Reply to a message in a Teams channel.Parameters:
team_id(string, required): The unique identifier of the team. Obtain from get_teams action.channel_id(string, required): The unique identifier of the channel. Obtain from get_channels action.message_id(string, required): The unique identifier of the message to reply to. Obtain from get_messages action.message(string, required): The reply content. For HTML, include formatting tags. For text, plain text only.content_type(string, optional): Content format. Enum:html,text. “text” for plain text, “html” for rich text with formatting. Default istext.
microsoft_teams/update_meeting
microsoft_teams/update_meeting
Description: Update an existing online meeting.Parameters:
meeting_id(string, required): The unique identifier of the meeting. Obtain from create_meeting or search_online_meetings actions.subject(string, optional): New meeting title.startDateTime(string, optional): New start time in ISO 8601 format with timezone. Example: “2024-01-20T10:00:00-08:00”.endDateTime(string, optional): New end time in ISO 8601 format with timezone.
microsoft_teams/delete_meeting
microsoft_teams/delete_meeting
Description: Delete an online meeting.Parameters:
meeting_id(string, required): The unique identifier of the meeting to delete. Obtain from create_meeting or search_online_meetings actions.
Usage Examples
Basic Microsoft Teams Agent Setup
Messaging and Communication
Meeting Management
Troubleshooting
Common Issues
Authentication Errors- Ensure your Microsoft account has the necessary permissions for Teams access.
- Required scopes include:
Team.ReadBasic.All,Channel.ReadBasic.All,ChannelMessage.Send,ChannelMessage.Read.All,OnlineMeetings.ReadWrite,OnlineMeetings.Read. - Verify that the OAuth connection includes all required scopes.
- Ensure you are a member of the teams you’re trying to access.
- Double-check team IDs and channel IDs for correctness.
- Team and channel IDs can be obtained using the
get_teamsandget_channelsactions.
- Ensure
team_id,channel_id, andmessageare provided forsend_message. - Verify that you have permissions to send messages to the specified channel.
- Choose appropriate
content_type(text or html) based on your message format.
- Ensure
subject,startDateTime, andendDateTimeare provided. - Use proper ISO 8601 format with timezone for datetime fields (e.g., ‘2024-01-20T10:00:00-08:00’).
- Verify that the meeting times are in the future.
- The
get_messagesaction can retrieve a maximum of 50 messages per request. - Messages are returned in reverse chronological order (newest first).
- For
search_online_meetings_by_join_url, ensure the join URL is exact and properly formatted. - The URL should be the complete Teams meeting join URL.
Getting Help
Need Help?
Contact our support team for assistance with Microsoft Teams integration setup
or troubleshooting.
