【问题标题】:How to get user context from Teams private message using MS bot framework如何使用 MS bot 框架从 Teams 私人消息中获取用户上下文
【发布时间】:2019-06-19 14:13:00
【问题描述】:

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

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

由于我现在从 Teams 上下文中获得了租户 ID,我该如何使用它来检索用户的信息?

要检索 Teams 上下文,我调用以下命令:

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

【问题讨论】:

    标签: c# botframework microsoft-teams


    【解决方案1】:

    使用 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/

    【讨论】:

    • 你好安德鲁。谢谢你回到我身旁。我会试一试,让你知道它是否有效。
    • 你好安德鲁,谢谢你的回复。你知道为什么我的teamsContext.Team.Id == teamsContext.Channel.Id 并且从FetchChannelListAsync() 得到结果后它有ChannelInfo.Name == null?
    • 哦,我找到原因了。主要通用 Channel 有 name == null 和 Id == TeamsId
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2020-11-10
    • 2016-10-20
    相关资源
    最近更新 更多