BotFramework中的onMembersAdded、onMembersAddedActivity、onTeamsMembersAdded有啥区别?

Posted

技术标签:

【中文标题】BotFramework中的onMembersAdded、onMembersAddedActivity、onTeamsMembersAdded有啥区别?【英文标题】:What's the difference of onMembersAdded, onMembersAddedActivity, and onTeamsMembersAdded in BotFramework?BotFramework中的onMembersAdded、onMembersAddedActivity、onTeamsMembersAdded有什么区别? 【发布时间】:2021-09-16 19:28:33 【问题描述】:

BotFramework中的onMembersAdded、onMembersAddedActivity、onTeamsMembersAdded有什么区别?

我重写了这三个函数,但是只能触发onMembersAdded。而且onMembersAdded函数中不能通过member.name获取用户名,在member对象中,它只包含id。

【问题讨论】:

【参考方案1】:

请找出以下差异:

当成员加入团队对话时,会调用 OnMembersAdded 和 OnTeamsMembersAdded。 但是 OnTeamsMembersAdded 是 TeamsActivityHandler 类的一种方法,仅特定于 Microsoft Teams。

OnTeamsMembersAdded 采用 IList 的对象,其中包含其他详细信息,如电子邮件、UserPrincipalName、Surname 等,这些信息在 OnMembersAdded 中使用的 IList 对象中不存在。

根据最新的 bot 框架 SDK 4.0,我们没有可用的 onMembersAddedActivity() 方法。 请参考以下文档: https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.teams.teamsactivityhandler?view=botbuilder-dotnet-stable#methods

参考链接: 渠道账户 https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.schema.channelaccount?view=botbuilder-dotnet-stable

TeamsChannelAccount https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.schema.teams.teamschannelaccount?view=botbuilder-dotnet-stable

第一次安装 bot 时,成员对象仅包含 id 和 name 值为 null,因为我们没有添加任何成员。 在团队频道中添加机器人后,如果您添加任何成员,您可以在成员对象中获取成员详细信息。

您可以从以下链接参考代码示例: https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-send-welcome-message?view=azure-bot-service-4.0&tabs=csharp

【讨论】:

以上是关于BotFramework中的onMembersAdded、onMembersAddedActivity、onTeamsMembersAdded有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

BotFramework-WebChat - 自适应卡片

无法使用 C# 将 AdaptiveCard Json 呈现为 BotFramework 消息

MS BotFramework 数据保存,BotState

出了点问题,请从 BotFramework MessagingExtesion 重试

[BotFramework]:如何在瀑布对话框中捕获/提取通过 C# 网络聊天机器人中呈现的自适应卡片提交的值?

为啥我从File not a built-in function in botframework 得到错误