首页 > 解决方案 > 如何访问 Teams 用户的电子邮件地址?

问题描述

我正在尝试为应用程序构建 Microsoft Teams 集成,但在获取用户的电子邮件地址时遇到了一些问题。

我使用 VS Code 的 Microsoft Teams 扩展来搭建一个基本应用程序。我在我的服务器上使用 BotFramework v4 (NodeJS)。我能够接收来自 Teams 的请求并做出响应。

为了获取用户的电子邮件地址,我使用了TeamsInfo.getMember(context, id)context.activity.fromobject 获取 id 的方法。不幸的是,调用此方法会导致RestError: Unknown状态码为 400。

我不确定我在这里缺少什么。我的应用程序已在 Azure Active Directory 中注册并具有User.Read.All权限。我在这里错过了什么吗?

任何帮助,将不胜感激!

在某些情况下,我正在尝试构建一个消息扩展操作命令。

代码:

import {
      TurnContext,
      TeamsActivityHandler,
      CardFactory,
      MessagingExtensionAction,
      TeamsInfo,
    } from 'botbuilder';

export default class TeamsMessagingExtensionsActionBot extends TeamsActivityHandler {
  constructor() {
    super();
  }

  // @ts-ignore
  handleTeamsMessagingExtensionSubmitAction(
    context: TurnContext,
    action: MessagingExtensionAction,
  ) {
    switch (action.commandId) {
      case 'someCommand':
        return handleCommand(context, action);
      default:
        throw new Error('NotImplemented');
    }
  }
}

async function handleCommand(
  context: TurnContext,
  action: MessagingExtensionAction,
) {
  const card = CardFactory.heroCard(
    'Some Command',
    'We have received your command!',
  );

  const user = await TeamsInfo.getMember(context, context.activity.from.id);
  console.log('User:', user);

  const attachment = {
    contentType: card.contentType,
    content: card.content,
    preview: card,
  };

  return {
    composeExtension: {
      type: 'result',
      attachmentLayout: 'list',
      attachments: [attachment],
    },
  };
}

这是我在调用 TeamsInfo.getMember() 时遇到的错误:JSON

标签: microsoft-graph-apimicrosoft-teamsmicrosoft-graph-teams

解决方案


推荐阅读