使用节点 sdk v4 通过 MS Teams 频道在 Bot 中获取用户配置文件

Fetching user profile in Bot with MS Teams channel using node sdk v4

我正在为 node.js 使用 Microsoft Bot Framework SDK v3 和 v4。我有一个 v3 机器人和一个 v4 机器人,都有 MS 团队频道,但我无法在 v4 机器人的机器人代码中获取用户的个人资料详细信息。 (正是在寻找 userprincipalname

在 v3 中,我使用的是 TeamsChatConnector,它具有 fetchMembers() 来获取用户详细信息,但在 v4 中情况发生了变化。它也被称为 'Fetching the team roster'。 这里是 documentation

在 v4 机器人中,有 BotFrameworkAdapter,它不特定于 MS 团队或任何其他渠道。如果我检查 activity 对象,我可以从 'from' 属性 中看到,它只有用户名:'lastName,First name' 和 AAD 对象 ID,但不是通常为电子邮件地址的用户主体名称。

如果用户使用的是 MS 团队频道,我如何才能在 v4 BOT 代码中访问用户的电子邮件地址或用户主体名称?

  connector.fetchMembers(
    (<builder.IChatConnectorAddress>session.message.address).serviceUrl,
    conversationId,
    (err, result) => {
      if (err) {
        session.endDialog('There is some error');
      }
      else {
        session.endDialog('%s', JSON.stringify(result));
      }
    }
);

如果有人像我一样迷路了,就把它留在这里吧。您可以向 REST API 发出请求,获取该信息。 Here you can see the endpoint

在这里您可以看到如何设置 headers:Link

结合两者,进行 GET 将 return 团队聊天或 1:1 聊天中的用户上下文。