如何使用 MS 机器人框架从团队私人消息获取用户上下文



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

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

由于我现在拥有 Teams 上下文中的租户 ID,因此如何使用它来检索用户的信息?

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

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/

最新更新