Skip to main content

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

  1. Navigate to CrewAI AMP Integrations
  2. Find Microsoft Teams in the Authentication Integrations section
  3. Click Connect and complete the OAuth flow
  4. Grant the necessary permissions for Teams access
  5. Copy your Enterprise Token from Integration Settings

2. Install Required Package

uv add crewai-tools

Available Actions

Description: Get all teams the user is a member of.Parameters:
  • No parameters required.
Description: Get channels in a specific team.Parameters:
  • team_id (string, required): The ID of the team.
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 is text.
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 is 20.
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).
Description: Search online meetings by Join Web URL.Parameters:
  • join_web_url (string, required): The join web URL of the meeting to search for.

Usage Examples

Basic Microsoft Teams Agent Setup

from crewai import Agent, Task, Crew

# Create an agent with Microsoft Teams capabilities
teams_agent = Agent(
    role="Teams Coordinator",
    goal="Manage Teams communication and meetings efficiently",
    backstory="An AI assistant specialized in Microsoft Teams operations and team collaboration.",
    apps=['microsoft_teams']  # All Teams actions will be available
)

# Task to list teams and channels
explore_teams_task = Task(
    description="List all teams I'm a member of and then get the channels for the first team.",
    agent=teams_agent,
    expected_output="List of teams and channels displayed."
)

# Run the task
crew = Crew(
    agents=[teams_agent],
    tasks=[explore_teams_task]
)

crew.kickoff()

Messaging and Communication

from crewai import Agent, Task, Crew

# Create an agent focused on messaging
messenger = Agent(
    role="Teams Messenger",
    goal="Send and retrieve messages in Teams channels",
    backstory="An AI assistant skilled in team communication and message management.",
    apps=['microsoft_teams/send_message', 'microsoft_teams/get_messages']
)

# Task to send a message and retrieve recent messages
messaging_task = Task(
    description="Send a message 'Hello team! This is an automated update from our AI assistant.' to the General channel of team 'your_team_id', then retrieve the last 10 messages from that channel.",
    agent=messenger,
    expected_output="Message sent successfully and recent messages retrieved."
)

crew = Crew(
    agents=[messenger],
    tasks=[messaging_task]
)

crew.kickoff()

Meeting Management

from crewai import Agent, Task, Crew

# Create an agent for meeting management
meeting_scheduler = Agent(
    role="Meeting Scheduler",
    goal="Create and manage Teams meetings",
    backstory="An AI assistant that handles meeting scheduling and organization.",
    apps=['microsoft_teams/create_meeting', 'microsoft_teams/search_online_meetings_by_join_url']
)

# Task to create a meeting
schedule_meeting_task = Task(
    description="Create a Teams meeting titled 'Weekly Team Sync' scheduled for tomorrow at 10:00 AM lasting for 1 hour (use proper ISO 8601 format with timezone).",
    agent=meeting_scheduler,
    expected_output="Teams meeting created successfully with meeting details."
)

crew = Crew(
    agents=[meeting_scheduler],
    tasks=[schedule_meeting_task]
)

crew.kickoff()

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.
Team and Channel Access
  • 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_teams and get_channels actions.
Message Sending Issues
  • Ensure team_id, channel_id, and message are provided for send_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.
Meeting Creation
  • Ensure subject, startDateTime, and endDateTime are 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.
Message Retrieval Limitations
  • The get_messages action can retrieve a maximum of 50 messages per request.
  • Messages are returned in reverse chronological order (newest first).
Meeting Search
  • 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.
I