关于 microsoft-teams-automation
面向 Microsoft Teams 自动化的技能,通过 Rube MCP 与 Composio 工具包执行团队协作操作,涵盖消息、会议及团队管理。
主要功能
- 01发布频道和聊天消息
- 02创建在线会议
- 03管理团队与频道
- 04搜索 Teams 消息
- 05管理成员和聊天
适用场景
- 01向指定频道发布通知
- 02发送一对一或群组消息
- 03查找历史消息
- 04安排 Teams 在线会议
MCP 相关
通过 Rube MCP 调用 Composio 的 Microsoft Teams 工具包;需连接 Rube MCP 并启用 Microsoft Teams 授权。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill microsoft-teams-automation安装后在 Claude Code 中输入/microsoft-teams-automation确认已加载。
详细介绍
通过 Rube MCP 自动化 Microsoft Teams
通过 Rube MCP 使用 Composio 的 Microsoft Teams 工具包,自动化 Microsoft Teams 操作。
工具包文档:composio.dev/toolkits/microsoft_teams
前提条件
- 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
- 通过
RUBE_MANAGE_CONNECTIONS建立有效的 Microsoft Teams 连接,并使用工具包microsoft_teams - 始终先调用
RUBE_SEARCH_TOOLS,以获取当前工具架构
设置
获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥——只需添加端点即可使用。
- 确认
RUBE_SEARCH_TOOLS能够响应,以验证 Rube MCP 是否可用 - 使用工具包
microsoft_teams调用RUBE_MANAGE_CONNECTIONS - 如果连接状态不是 ACTIVE,请按照返回的授权链接完成 Microsoft OAuth
- 确认连接状态显示为 ACTIVE 后,再运行任何工作流
核心工作流
1. 发送频道消息
适用场景:用户想要在 Teams 频道中发布消息
工具调用顺序:
MICROSOFT_TEAMS_TEAMS_LIST- 列出团队以查找目标团队 [前置步骤]MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS- 列出团队中的频道 [前置步骤]MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE- 发布消息 [必需]
关键参数:
team_id:团队的 UUID(来自 TEAMS_LIST)channel_id:频道 ID(来自 LIST_CHANNELS,格式:'19:[email protected]')content:消息文本或 HTMLcontent_type:'text' 或 'html'
注意事项:
- team_id 必须是有效的 UUID 格式
- channel_id 必须采用 thread 格式(例如,'19:[email protected]')
- TEAMS_LIST 可能会分页(每页约 100 项);请通过 @odata.nextLink 查找所有团队
- 如果用户无权访问团队,LIST_CHANNELS 可能返回 403
- 超过约 28KB 的消息可能触发 400/413 错误;请拆分长内容
- 限流可能返回 429;请使用指数退避(1 秒/2 秒/4 秒)
2. 发送聊天消息
适用场景:用户想要发送一对一或群组聊天消息
工具调用顺序:
MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS- 列出现有聊天 [可选]MICROSOFT_TEAMS_LIST_USERS- 查找新聊天所需的用户 [可选]MICROSOFT_TEAMS_TEAMS_CREATE_CHAT- 创建新聊天 [可选]MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE- 发送消息 [必需]
关键参数:
chat_id:聊天 ID(来自 GET_ALL_CHATS 或 CREATE_CHAT)content:消息内容content_type:'text' 或 'html'chatType:'oneOnOne' 或 'group'(用于 CREATE_CHAT)members:成员对象数组(用于 CREATE_CHAT)
注意事项:
- CREATE_CHAT 要求已通过身份验证的用户是成员之一
- 如果两个用户之间已存在一对一聊天,oneOnOne 聊天会返回现有聊天
- 群组聊天要求至少有一名成员具有 'owner' 角色
- 成员的 user_odata_bind 必须使用完整的 Microsoft Graph URL 格式
- 聊天筛选支持非常有限;必要时请在客户端进行筛选
3. 创建在线会议
适用场景:用户想要安排 Microsoft Teams 会议
工具调用顺序:
MICROSOFT_TEAMS_LIST_USERS- 查找参与者用户 ID [可选]MICROSOFT_TEAMS_CREATE_MEETING- 创建会议 [必需]
关键参数:
subject:会议标题start_date_time:ISO 8601 开始时间(例如,'2024-08-15T10:00:00Z')end_date_time:ISO 8601 结束时间(必须晚于开始时间)participants:包含 user_id 和 role 的用户对象数组
注意事项:
- end_date_time 必须严格晚于 start_date_time
- 参与者必须使用有效的 Microsoft 用户 user_id(GUID),不能使用电子邮件地址
- 此操作会创建独立会议,不会关联日历事件
- 如需关联日历的会议,请使用 OUTLOOK_CALENDAR_CREATE_EVENT 并设置 is_online_meeting=true
4. 管理团队和频道
使用场景:用户希望列出、创建或管理团队和频道
工具调用顺序:
MICROSOFT_TEAMS_TEAMS_LIST- 列出所有可访问的团队 [必需]MICROSOFT_TEAMS_GET_TEAM- 获取特定团队的详细信息 [可选]MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS- 列出团队中的频道 [可选]MICROSOFT_TEAMS_GET_CHANNEL- 获取频道详细信息 [可选]MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL- 创建新频道 [可选]MICROSOFT_TEAMS_LIST_TEAM_MEMBERS- 列出团队成员 [可选]MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM- 将成员添加到团队 [可选]
关键参数:
team_id:团队 UUIDchannel_id:采用 thread 格式的频道 IDfilter:OData 筛选字符串(例如,"startsWith(displayName,'Project')")select:以逗号分隔的要返回的属性
注意事项:
- TEAMS_LIST 分页:大型租户中请跟进 @odata.nextLink
- 如果权限不匹配,可能不会显示专用频道或共享频道
- 如果 team_id 或 channel_id 不正确,GET_CHANNEL 会返回 404
- 始终从列表操作中获取 ID;不要猜测 ID 格式
5. 搜索消息
使用场景:用户希望在 Teams 聊天和频道中查找消息
工具调用顺序:
MICROSOFT_TEAMS_SEARCH_MESSAGES- 使用 KQL 语法搜索 [必需]
关键参数:
query:KQL 搜索查询(支持 from:、sent:、attachments 和布尔逻辑)
注意事项:
- 新发布的消息可能需要 30-60 秒才会出现在搜索结果中
- 搜索最终一致;不要依赖它来即时确认消息是否送达
- 使用消息列表工具实时验证消息
常见模式
团队和频道 ID 解析
1. Call MICROSOFT_TEAMS_TEAMS_LIST
2. Find team by displayName
3. Extract team id (UUID format)
4. Call MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS with team_id
5. Find channel by displayName
6. Extract channel id (19:[email protected] format)
用户解析
1. Call MICROSOFT_TEAMS_LIST_USERS
2. Filter by displayName or email
3. Extract user id (UUID format)
4. Use for meeting participants, chat members, or team operations
分页
- 团队/用户:跟进 @odata.nextLink URL 获取下一页
- 聊天:自动分页,最多达到 limit;使用 top 设置页面大小(最大为 50)
- 使用
top参数控制页面大小 - 持续获取,直到 @odata.nextLink 不再存在
已知注意事项
身份验证和权限:
- 不同操作需要不同的 Microsoft Graph 权限
- 403 错误表示权限不足或无权访问团队
- 某些操作需要在 Azure AD 租户中获得管理员同意
ID 格式:
- 团队 ID:UUID 格式(例如,'87b0560f-fc0d-4442-add8-b380ca926707')
- 频道 ID:Thread 格式(例如,'19:[email protected]')
- 聊天 ID:多种格式(例如,'19:[email protected]')
- 用户 ID:UUID 格式
- 切勿猜测 ID;始终从列表操作中解析
速率限制:
- Microsoft Graph 会实施请求限制
- 429 响应中包含 Retry-After 标头
- 每秒请求数控制在几次以内
- 批量操作有助于减少请求总数
消息格式:
- HTML content_type 支持富文本格式
- 自适应卡片需要额外处理
- 消息大小限制约为 28KB
- 将较长内容拆分为多条消息
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List teams | MICROSOFT_TEAMS_TEAMS_LIST | filter, select, top |
| Get team details | MICROSOFT_TEAMS_GET_TEAM | team_id |
| List channels | MICROSOFT_TEAMS_TEAMS_LIST_CHANNELS | team_id, filter |
| Get channel | MICROSOFT_TEAMS_GET_CHANNEL | team_id, channel_id |
| Create channel | MICROSOFT_TEAMS_TEAMS_CREATE_CHANNEL | team_id, displayName |
| Post to channel | MICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGE | team_id, channel_id, content |
| List chats | MICROSOFT_TEAMS_CHATS_GET_ALL_CHATS | user_id, limit |
| Create chat | MICROSOFT_TEAMS_TEAMS_CREATE_CHAT | chatType, members, topic |
| Post to chat | MICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGE | chat_id, content |
| Create meeting | MICROSOFT_TEAMS_CREATE_MEETING | subject, start_date_time, end_date_time |
| List users | MICROSOFT_TEAMS_LIST_USERS | filter, select, top |
| List team members | MICROSOFT_TEAMS_LIST_TEAM_MEMBERS | team_id |
| Add team member | MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAM | team_id, user_id |
| Search messages | MICROSOFT_TEAMS_SEARCH_MESSAGES | query |
| Get chat message | MICROSOFT_TEAMS_GET_CHAT_MESSAGE | chat_id, message_id |
| List joined teams | MICROSOFT_TEAMS_LIST_USER_JOINED_TEAMS | (none) |
Powered by Composio
评论
支持 Markdown