您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

Microsoft Teams 机器人的工作原理

适用于: SDK v4

本文介绍了如何在 " bot 工作 " 和 " 事件驱动" 会话中学习的内容:阅读本文之前,应熟悉这些文章。

为 Microsoft Teams 开发的机器人的主要差别在于活动的处理方式。 团队活动处理程序活动处理 程序派生,并处理团队特定的活动类型,然后再处理更常见的活动类型。

团队活动处理程序

若要为团队创建机器人,请从 团队活动处理程序 类中派生机器人。 当这样的机器人接收活动时,它会通过各种 活动处理程序 来路由活动。 初始的基本处理程序是 turn 处理 程序,它将活动路由到基于活动类型的处理程序。 Turn 处理程序 将调用设计用于处理所接收活动的特定类型的处理程序。 团队活动处理程序 类派生自 活动处理程序 类。 除了 活动处理程序 可以处理的活动类型之外,团队活动处理程序类还包括特定于团队的活动的其他处理程序。

派生自团队活动处理程序的机器人类似于直接从活动处理程序类派生的机器人。 但是,团队在活动中包含附加信息 conversationUpdate 并发送特定于团队的 invoke 活动。

当你的团队活动处理程序 – 机器人收到消息活动时,其 turn 处理程序会将传入消息活动路由到其 OnMessageActivityAsync 处理程序,这与基于活动处理程序的机器人的方式类似 – 。 但是,当团队机器人收到会话更新活动时,处理程序的团队版本将 OnConversationUpdateActivityAsync 处理活动。

大多数团队特定的活动处理程序没有基实现。 需要重写这些处理程序,并为机器人提供相应的逻辑。

使用活动处理程序的事件驱动会话 的 "活动处理" 部分中描述的所有活动处理程序将继续工作,就像处理成员添加和删除活动的情况除外,在团队上下文中,将新成员添加到团队,而不是将其添加到消息线程。 有关更多详细信息,请参阅 团队会话更新活动

若要为这些团队特定的活动处理程序实现逻辑,需要覆盖机器人中的方法。

Teams 机器人逻辑

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

Teams 聊天更新活动

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

下面是从 OnConversationUpdateActivityAsync 团队 活动处理程序的方法中调用的所有团队活动处理程序的列表。

EventType Handler 条件 团队文档
channelCreated OnTeamsChannelCreatedAsync 每当在安装机器人的团队中创建新通道时发送。 通道已创建
channelDeleted OnTeamsChannelDeletedAsync 每当在安装机器人的团队中删除通道时发送。 通道已删除
channelRenamed OnTeamsChannelRenamedAsync 每当在安装机器人的团队中重命名通道时发送。 频道已重命名
channelRestored OnTeamsChannelRestoredAsync 每当先前删除的频道在你的 bot 已安装到的团队中还原时发送。 通道已还原
membersAdded OnTeamsMembersAddedAsync 默认情况下,将调用 ActivityHandler.OnMembersAddedAsync 方法。 当你首次将机器人添加到会话中,并在每次将新用户添加到你的机器人安装到的团队或组聊天时发送。 已添加团队成员
membersRemoved OnTeamsMembersRemovedAsync 默认情况下,将调用 ActivityHandler.OnMembersRemovedAsync 方法。 如果你的机器人从团队中删除,并且每次从你的机器人所属的团队中删除任何用户,则发送。 已删除团队成员
teamArchived OnTeamsTeamArchivedAsync 在存档你的 bot 安装到的团队时发送。 团队已存档
teamDeleted OnTeamsTeamDeletedAsync 当你的 bot 已被删除时发送。 团队已删除
teamRenamed OnTeamsTeamRenamedAsync 在重命名 bot 的团队后发送。 团队已重命名
teamRestored OnTeamsTeamRestoredAsync 当你的机器人处于先前删除的团队时发送。 还原团队
teamUnarchived OnTeamsTeamUnarchivedAsync 当安装了机器人的团队时发送 unarchived。 团队 unarchived

团队调用活动

下表列出了团队特定的调用活动团队将其发送到机器人。 列出的调用活动适用于团队中的对话机器人。 Bot Framework SDK 还支持特定于消息传送扩展的调用。 有关详细信息,请参阅 "团队介绍 消息扩展 " 一文。

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

调用类型 Handler 说明
actionableMessage/executeAction OnTeamsO365ConnectorCardActionAsync Teams O365 连接器卡片操作。
CardAction.Invoke OnTeamsCardActionInvokeAsync Teams 卡片操作调用。
fileConsent/invoke OnTeamsFileConsentAcceptAsync Teams 文件许可接受。
fileConsent/invoke OnTeamsFileConsentAsync Teams 文件许可。
fileConsent/invoke OnTeamsFileConsentDeclineAsync Teams 文件许可。
signin/verifyState OnTeamsSigninVerifyStateAsync Teams 登录验证状态。
task/fetch OnTeamsTaskModuleFetchAsync Teams 任务模块提取。
task/submit OnTeamsTaskModuleSubmitAsync Teams 任务模块提交。

后续步骤

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