为什么用户在bot框架中的Microsoft Graph API和UserID之间有不同的ID格式?

问题描述 投票:1回答:1

我使用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/[email protected]').then(response => {
    user = response.data;
});

这将返回ID = 9422e847-0000-1111-2222-d39d550a4fb6的用户

但是当我使用Botbuilder团队获取获取成员时,返回的用户信息具有不同的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 = "[email protected]";

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;
                    }
                });
            }
        }
    }
);

这将返回ID = 29的用户:1zJXjlM7ifjqawGVxXx_4xxx56BFCCIJWfPbWrVDSdxsKUhi9IXyXXYNLOKCLHodN7WgEzz31lBKcZwtWvMzoUw

我的问题是为什么同一个用户以不同的方式检索数据的方法返回不同的ID格式?

此外,我的目的是我将使用botbuilder的地址中的用户ID向用户发送个人消息。

node.js botframework microsoft-graph microsoft-teams
1个回答
3
投票

用户ID在图表服务中的定义与Botbuilder中的相同。 botbuilder userID是给定用户连接到机器人内部对话的密钥(并且仅在与机器人的对话的上下文中相关),并且Graph Service中的userID是Azure用户的唯一身份密钥。广告。

它们不是相同的API或通用连接器的一部分,因此这些ID不会相互交叉。许多人创建某种用户字典,以便可以在应用程序中查找和使用2。

© www.soinside.com 2019 - 2024. All rights reserved.