是否有 API 来检索用户的所有别名电子邮件?

Is there an API to retrieve all alias emails of a user?

我有一个用例,我想在 Microsoft bot 中检索特定用户的所有电子邮件别名。是否有 API 来检索用户的所有别名电子邮件?

背景故事:

我们正在将 Microsoft Teams 的用户映射到我们产品的用户。当用户与机器人交互时,Microsoft Teams 从不同的用户 ID(这是同一用户的别名电子邮件)发送这些消息。我想要一种方法来检索特定用户的所有电子邮件别名,以便我可以在开始时映射所有 ID。

所以我不是电子邮件方面的专家,但希望我至少能给你一些有用的指导。

  1. 您所说的 "Alias" 实际上是用户的 Office 365 帐户的主要 UPN。您可能知道的 other 地址很可能实际上是 "aliases",仅供参考
  2. 从您的 Bot,您需要能够使用 Graph API 或(我猜)Exchange API 回叫 Office 365 以获取实际的电子邮件别名。为此,您的用户需要授予您的机器人这样做的权利。如果您想从 在机器人本身 中执行此操作,您很可能需要使用 Signin Card 以便用户可以为您的机器人提供所需的权限
  3. 另一种可能的选择是在用户注册您的服务时从 Office 365 请求 UPN(但是您首先收到了电子邮件 - 我猜可能来自某种网站)

希望对您有所帮助

更新:此线程的另一个答案是关于使用图表 API - 这就是我在上面第 2 点中提到的内容。为此,您需要:

  1. 获取用户的 ID,以便能够查找他们的电子邮件地址,您将从 Bot 对话中获得该地址(来自 "From" 属性)

  2. 以某种方式对图 API 进行身份验证,以便像其他人在此线程上建议的那样进行调用。如果您代表用户进行调用(称为 "delegated" 调用),您将调用其他答案中建议的“/me/”端点。如果您改为尝试使用 "application" id,您宁愿调用 /users/,如 here. But either way I think you'll need to register an Azure AD Application, so that you have the ability to call the Graph API. To do that, if you've not used Graph before, you'll need to do a bit of "getting started" reading - I'd suggest starting here.

  3. 所述

您可以使用 Microsoft Graph API 检索用户信息。

对于您的情况,您可以使用查询过滤器选项,因为它支持特定的查询选择(对于您 Email)。

看下面的例子:

索取样品:

https://graph.microsoft.com/v1.0/me/?$select=mail 

响应样本:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(mail)/$entity",
    "mail": "sample@microsoft.com"
}

更多细节优化请参考this official docs