gpt4 book ai didi

node.js - 在 MS Bot Framework 机器人中获取 Azure Active Directory 用户的数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:34 26 4
gpt4 key购买 nike

我在我的 Azure 帐户上部署了一个用 Node.js 编写的 Cortana 机器人。该机器人使用 Cortana channel 并打开“连接服务”(因此我可以使用 Azure Active Directory 中的帐户登录机器人)。登录工作正常。

我的问题是,现在我不知道如何在我的机器人中获取有关登录用户的信息(例如电子邮件地址)。

我猜我需要从 session 数据中获取一些 token ,然后发送 API 请求向 Azure 询问用户的数据?

有这个botauth Node.js 的示例,但运行它的说明已过时。

最佳答案

虽然我没有关于如何使用 Node 执行此操作的示例,但也许 C# 中的解决方案会有所帮助?

执行此操作的方法是检查从 Activity 对象传入 Controller 的 entities 集合。由于这是对机器人的每个请求的一部分,因此您可以随时执行此操作。

entities 集合中,Cortana 放置一个authorization 条目,其中包含由连接服务的身份验证流程生成的 token 。如果您使用连接服务来访问 Microsoft 服务(也称为登录 Live、MSA 等),您可以翻转此 token 并从 Microsoft Graph 请求有关用户的信息。

在 C# 中,它看起来像这样:

// auth token from cortana's connected service stored as Entity object of type 'authorization' with child property 'token' holding the actual value
var token = activity.Entities.Single(e => e.Type == @"authorization").Properties.Value<string>(@"token");
using (var client = new HttpClient())
{
// The token can be used to query the Graph, but only because we know that it is from MS Identity. We couldn't query the Graph like this if we were using our own Identity provider (eg: Contoso Identity)
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(@"Bearer", token);
try
{
var response = await client.GetAsync(@"https://graph.microsoft.com/v1.0/me").ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
var resultString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

/* Response from /me looks like:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"givenName": "Brandon",
"surname": "H",
"displayName": "Brandon H",
"id": "<unique user id!>",
"userPrincipalName": "<E-MAIL ADDRESS!!>",
"businessPhones": [],
"jobTitle": null,
"mail": null,
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null
}
*/
}
}
catch { }
}

希望有帮助!如果您想玩一下从图表的各个租户返回的内容,Graph Explorer这是一个很好的方法。

关于node.js - 在 MS Bot Framework 机器人中获取 Azure Active Directory 用户的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46586486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com