gpt4 book ai didi

c# - 如何使用 MS bot 框架从 Teams 私有(private)消息中获取用户上下文

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:19 25 4
gpt4 key购买 nike

我目前正在实现一个团队机器人,它必须获取用户名(名字和姓氏)以及通过个人聊天与机器人通信的人的用户电子邮件地址。

我正在使用 bot 框架的 SDK v4 并尝试实现此处提到的方法 (https://github.com/OfficeDev/BotBuilder-MicrosoftTeams-dotnet)。获取团队上下文时返回的唯一参数是租户 ID。 channel 和 team 都是空的(我想这是因为我在私聊?)。

既然我现在有来自 Teams 上下文的租户 ID,我该如何使用它来检索用户的信息?

为了检索 Teams 上下文,我调用了以下内容:

ITeamsContext teamsContext = turnContext.TurnState.Get<ITeamsContext>();

最佳答案

使用 ITeamsContext 对象检索 ID 后,您需要使用这些 ID 来完全填充 Teams 对象。您可以使用 Operations.FetchTeamDetailsAsync 方法执行此操作。

要获取对话中的成员名册,您将使用 GetConversationParametersForCreateOrGetDirectConversation() 方法。 #epicmethodname.

using Microsoft.Bot.Builder.Teams;
using Microsoft.Bot.Schema.Teams;
using Microsoft.Bot.Connector.Teams;
...
ConversationList channels = await teamsContext.Operations.FetchChannelListAsync(incomingTeamId);

TeamDetails teamInfo = await teamsContext.Operations.FetchTeamDetailsAsync(incomingTeamId);

var roster = teamsContext.GetConversationParametersForCreateOrGetDirectConversation(turnContext.Activity.From).Members;

List<TeamsChannelAccount> rosterTC = roster.ToList().ConvertAll(member =>
{
return teamsContext.AsTeamsChannelAccount(member);
});

await turnContext.SendActivityAsync($"You have {roster.Count} number of people in this group. You are {from.Name}");

您可以在此处找到一些入门帮助和其他资源:https://developer.microsoft.com/en-us/office/blogs/preview-release-of-net-teams-bot-builder-v4-sdk/

关于c# - 如何使用 MS bot 框架从 Teams 私有(private)消息中获取用户上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54370426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com