为什么用户在 Microsoft Graph API 和 bot 框架中的 UserIDs 之间有不同的 ID 格式?
Why do users have different ID formats between the Microsoft Graph API and UserIDs in bot framework?
我已经使用Graph Service通过电子邮件获取用户信息。这是我的示例代码:
var user = null;
const GraphService = require('graph-service');
const ClientCredentials = require('client-credentials');
const tenant = 'my-company.com';
const clientId = '0b13aa29-ca6b-42e8-a083-89e5bccdf141';
const clientSecret = 'lsl2isRe99Flsj32elwe89234ljhasd8239jsad2sl=';
const credentials = new ClientCredentials(tenant, clientId, clientSecret);
const service = new GraphService(credentials);
service.get('/users/tnguyen482@my-company.com').then(response => {
user = response.data;
});
这会 return ID = 9422e847-0000-1111-2222-d39d550a4fb6
的用户
但是当我使用 Botbuilder-teams 获取成员时,其中的用户信息 return 具有不同格式的 ID。这是我的示例代码:
var user = null;
var teams = require("botbuilder-teams");
var connector = new teams.TeamsChatConnector({
appId: process.env.MICROSOFT_APP_ID,
appPassword: process.env.MICROSOFT_APP_PASSWORD
});
let conversationId = session.message.address.conversation.id;
var userEmail = "tnguyen482@my-company.com";
connector.connector.fetchMembers(
"https://smba.trafficmanager.net/amer-client-ss.msg/",
conversationId,
(err, result) => {
if (err) {
console.log('Cannot get member of current conversation');
}
else {
if (result.length > 0){
result.forEach(function(item) {
if (item.email == userEmail){
user = item;
}
});
}
}
}
);
这将 return 具有 ID = 29:1zJXjlM7ifjqawGVxXx_4xxx56BFCCIJWfPbWrVDSdxsKUhi9IXyXXYNLOKCLHodN7WgEzz31lBKcZwtWvMzoUw
的用户
我的问题是为什么同一个用户用不同的方法检索数据return不同的 ID 格式?
此外,我的目的是使用地址中的用户ID,供botbuilder向用户发送个人消息。
用户 ID 在图形服务中的定义与在 Botbuilder 中的定义不同。 botbuilder userID 是连接到机器人对话的给定用户的密钥(并且仅在与机器人对话的上下文中相关),Graph Service 中的 userID 是 Azure 用户的唯一身份密钥AD.
这些 ID 不同 API 或通用连接器的一部分,因此这些 ID 不会相互交叉。许多人创建某种类型的用户字典,以便可以在他们的应用程序中相应地查找和使用 2。
我已经使用Graph Service通过电子邮件获取用户信息。这是我的示例代码:
var user = null;
const GraphService = require('graph-service');
const ClientCredentials = require('client-credentials');
const tenant = 'my-company.com';
const clientId = '0b13aa29-ca6b-42e8-a083-89e5bccdf141';
const clientSecret = 'lsl2isRe99Flsj32elwe89234ljhasd8239jsad2sl=';
const credentials = new ClientCredentials(tenant, clientId, clientSecret);
const service = new GraphService(credentials);
service.get('/users/tnguyen482@my-company.com').then(response => {
user = response.data;
});
这会 return ID = 9422e847-0000-1111-2222-d39d550a4fb6
的用户但是当我使用 Botbuilder-teams 获取成员时,其中的用户信息 return 具有不同格式的 ID。这是我的示例代码:
var user = null;
var teams = require("botbuilder-teams");
var connector = new teams.TeamsChatConnector({
appId: process.env.MICROSOFT_APP_ID,
appPassword: process.env.MICROSOFT_APP_PASSWORD
});
let conversationId = session.message.address.conversation.id;
var userEmail = "tnguyen482@my-company.com";
connector.connector.fetchMembers(
"https://smba.trafficmanager.net/amer-client-ss.msg/",
conversationId,
(err, result) => {
if (err) {
console.log('Cannot get member of current conversation');
}
else {
if (result.length > 0){
result.forEach(function(item) {
if (item.email == userEmail){
user = item;
}
});
}
}
}
);
这将 return 具有 ID = 29:1zJXjlM7ifjqawGVxXx_4xxx56BFCCIJWfPbWrVDSdxsKUhi9IXyXXYNLOKCLHodN7WgEzz31lBKcZwtWvMzoUw
的用户我的问题是为什么同一个用户用不同的方法检索数据return不同的 ID 格式?
此外,我的目的是使用地址中的用户ID,供botbuilder向用户发送个人消息。
用户 ID 在图形服务中的定义与在 Botbuilder 中的定义不同。 botbuilder userID 是连接到机器人对话的给定用户的密钥(并且仅在与机器人对话的上下文中相关),Graph Service 中的 userID 是 Azure 用户的唯一身份密钥AD.
这些 ID 不同 API 或通用连接器的一部分,因此这些 ID 不会相互交叉。许多人创建某种类型的用户字典,以便可以在他们的应用程序中相应地查找和使用 2。