Microsoft Teams 机器人的工作原理

适用于:SDK v4

本文基于机器人工作原理事件驱动对话中学到的内容;在继续之前,应熟悉这些文章。

Microsoft Teams 上开发的机器人的主要的不同是处理活动的方式。 “Teams 活动处理程序”派生自“活动处理程序”,并在处理更多常规活动类型之前处理特定于 Teams 的活动类型。

重要

Bot Framework SDK 和 Bot Framework Emulator 已在 GitHub 上存档。 项目不再更新或维护。 自 2025 年 12 月 31 日起,Bot Framework SDK 的支持票证将不再提供服务。

若要使用所选的 AI 服务、业务流程和知识生成代理,请考虑使用 Microsoft 365 代理 SDK。 代理 SDK 对 C#、JavaScript 或 Python 具有语言支持。 可以在 aka.ms/agents 了解有关代理 SDK 的详细信息。 如果现有的机器人是使用 Bot Framework SDK 生成的,则可以将机器人更新到代理 SDK。 查看 Bot Framework SDK 到代理 SDK 迁移指南的核心更改和更新。

如果要构建设计为在 Microsoft Teams 中工作的协作代理,请考虑使用 Teams SDK。 它为在 Teams 环境中运行的代理提供 Teams 特定的 API、自适应卡支持和内置 AI 协同调度功能。 可以在 Teams SDK(Teams AI 库)中了解详细信息。

如果要查找基于 SaaS 的代理平台,请考虑 Microsoft Copilot Studio

Teams 活动处理程序

若要为 Teams 创建机器人,请从 “Teams 活动处理程序”类派生机器人。 当此类机器人收到活动时,它会通过各种“活动处理程序”路由活动。 初始基处理程序是“轮次处理程序”,它根据活动的类型将活动路由到处理程序。 轮次处理程序调用专门用于处理所接收到的特定活动类型的处理程序。 “Teams 活动处理程序”类派生自“活动处理程序”类。 除了“活动处理程序”可以处理的活动类型外,Teams 活动处理程序类还包括 Teams 特定活动的其他处理程序。

从 Teams 活动处理程序派生的机器人类似于直接从活动处理程序类派生的机器人。 不过,Teams 会在 conversationUpdate 活动中包含其他信息,并发送 Teams 特有的 invokeevent 活动。

当 Teams 活动处理程序机器人收到消息活动时,其轮次处理程序会将传入消息活动路由到其 OnMessageActivityAsync 处理程序,类似于基于活动处理程序的机器人的行事方式。 但是,当 Teams 机器人收到对话更新活动时,Teams 版本的 OnConversationUpdateActivityAsync 处理程序将处理该活动。

大多数特定于 Teams 的活动处理程序都没有基础实现。 需要替代这些处理程序并为机器人提供适当的逻辑。

活动处理部分中在使用活动处理程序的事件驱动型对话一文里介绍的所有活动处理程序,都将继续像在非 Teams 机器人中一样工作;但处理成员添加和删除活动的情况除外,因为在团队上下文中,这些活动有所不同:新成员是被添加到团队中,而不是消息线程中。 有关详细信息,请参阅 Teams 会话更新活动

若要为这些特定于 Teams 的活动处理程序实现逻辑,需要替代机器人中的方法。

Teams 机器人逻辑

机器人逻辑处理来自一个或多个机器人通道的传入活动,并在响应中生成传出活动。 对于派生自 Teams 活动处理程序类的机器人也仍是如此,该处理程序首先检查 Teams 活动,然后将所有其他活动传递给 Bot Framework 的活动处理程序。

Teams 安装和更新活动

安装更新 事件添加处理函数,使您的机器人能够:

  • 在对话线程上安装时发送介绍性消息。
  • 从线程卸载时清理用户和线程数据。

有关详细信息,请参阅 Teams 文档中的安装更新事件

Teams 聊天更新活动

下表列出了可在机器人中生成 对话更新 活动的 Teams 事件。 Microsoft Teams 对话更新事件一文介绍了如何使用每个事件。

下面列出了从 Teams 活动处理程序的 OnConversationUpdateActivityAsync 方法中调用的所有 Teams 活动处理程序。

事件类型 处理程序 条件 Teams 文档
频道已创建 OnTeamsChannelCreatedAsync 每当在已安装此机器人的团队中创建新通道时,都会发送。 创建通道
频道已删除 OnTeamsChannelDeletedAsync 每当在已安装你的机器人的团队中删除某个通道时,都会发送此事件。 通道已删除
channelRenamed OnTeamsChannelRenamedAsync 每当已安装你的机器人的团队中有频道被重命名时,都会发送。 已重命名通道
通道已恢复 OnTeamsChannelRestoredAsync 每当已安装你的机器人的团队中恢复先前已删除的频道时,都会发送此事件。 通道已还原
已添加成员 OnTeamsMembersAddedAsync 默认情况下,调用 ActivityHandler.OnMembersAddedAsync 方法。 首次将你的机器人添加到某个对话中时,以及每次将新用户添加到已安装你的机器人的团队或群聊中时,都会发送。 已添加团队成员
已移除成员 OnTeamsMembersRemovedAsync 默认情况下,调用 ActivityHandler.OnMembersRemovedAsync 方法。 如果您的机器人被从团队中移除,或者每当有用户被从您的机器人所属的团队中移除时,系统都会发送此通知。 已移除团队成员
团队已归档 OnTeamsTeamArchivedAsync 当安装了你的机器人的团队被存档时发送。 团队已存档
teamDeleted OnTeamsTeamDeletedAsync 当你的机器人所在的团队被删除时发送。 团队已删除
teamRenamed OnTeamsTeamRenamedAsync 当你的机器人所在的团队被重命名时发送。 团队已重命名
团队已恢复 OnTeamsTeamRestoredAsync 当你的机器人所在的之前已删除团队被恢复时发送。 团队已恢复
团队已取消存档 OnTeamsTeamUnarchivedAsync 当已安装你的机器人的团队被取消存档时发送。 团队未存档

Teams 事件活动

下表列出了 Teams 发送给机器人的 Teams 特有事件活动。 列出的事件活动适用于 Teams 中的对话机器人。

这些是由 OnEventActivityAsyncTeams 活动处理程序调用的 Teams 特有事件活动处理程序。

事件类型 处理程序 说明
application/vnd.microsoft.meetingEnd OnTeamsMeetingEndAsync 机器人与刚刚结束的会议相关联。
application/vnd.microsoft.meetingStart OnTeamsMeetingStartAsync 机器人与刚刚启动的会议相关联。

Teams 调用活动

下表列出了 Teams 发送给机器人的 Teams 特有调用活动。 列出的调用活动适用于 Teams 中的对话机器人。 Bot Framework SDK 还支持特定于消息传送扩展的调用。 有关详细信息,请参阅 Teams 什么是消息传递扩展一文。

注意

Microsoft Teams 平台文档和 Teams JavaScript 客户端库 (TeamsJS) 将任务模块称为模式“对话”。 有关详细信息,请参阅对话

下面列出了从 Teams 活动处理程序调用的所有 OnInvokeActivityAsyncTeams 活动处理程序:

调用类型 处理程序 说明
可操作消息/执行操作 OnTeamsO365ConnectorCardActionAsync Teams O365 连接器卡操作。
CardAction.Invoke OnTeamsCardActionInvokeAsync Teams 卡片操作调用。
fileConsent/invoke OnTeamsFileConsentAcceptAsync Teams 文件许可接受。
fileConsent/invoke OnTeamsFileConsentAsync Teams 文件许可。
fileConsent/invoke OnTeamsFileConsentDeclineAsync Teams 文件许可。
signin/verifyState OnTeamsSigninVerifyStateAsync Teams 登录状态验证
任务/获取 OnTeamsTaskModuleFetchAsync Teams 任务模块获取。
任务/提交 OnTeamsTaskModuleSubmitAsync Teams 任务模块提交。

后续步骤

有关构建 Teams 机器人的信息,请参阅 Microsoft Teams 开发人员文档