如何在 Bot Framework 中获取用户详细信息
How to get user details in Bot Framework
我正在构建一个需要向用户发送自适应卡片的 Teams Bot。
安装机器人后,我会向用户发送欢迎消息。从欢迎消息中,我可以使用 activity.from.id.
获取用户的 Teams ID
From ID::29:1O_abckkskldjflkjfslxxxxxxxx
有了这个 ID,我尝试使用以下方法获取用户详细信息
const member=TeamsInfo.getMember(context, context.activity.from.id);
但是我仍然无法获取用户详细信息。
如何获取用户的电子邮件 ID,以便将来我可以向用户发送通知?
根据文档,您仅为 dotnet 库将“id”传递给 getMember。对于 Node,它看起来需要 email/UPN - 请参阅 here, whereas you're sending activity.from.id. Perhaps try call getPagedMembers - 如果只有一个用户(即一对一聊天),它实际上与 getMember 相同。
工作代码段::
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded;
for (let cnt = 0; cnt < membersAdded.length; ++cnt) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
var continuationToken;
var members = [];
do {
var pagedMembers = await TeamsInfo.getPagedMembers(context, 100, continuationToken);
continuationToken = pagedMembers.continuationToken;
members.push(...pagedMembers.members);
} while (continuationToken !== undefined);
members.forEach(member => {
const userEmail=member.userPrincipalName;
});
const card = CardFactory.adaptiveCard(welcomeCard);
const message = {
attachments: [card],
summary: 'Welcome'
};
await context.sendActivity(message);
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});
我正在构建一个需要向用户发送自适应卡片的 Teams Bot。
安装机器人后,我会向用户发送欢迎消息。从欢迎消息中,我可以使用 activity.from.id.
获取用户的 Teams IDFrom ID::29:1O_abckkskldjflkjfslxxxxxxxx
有了这个 ID,我尝试使用以下方法获取用户详细信息
const member=TeamsInfo.getMember(context, context.activity.from.id);
但是我仍然无法获取用户详细信息。
如何获取用户的电子邮件 ID,以便将来我可以向用户发送通知?
根据文档,您仅为 dotnet 库将“id”传递给 getMember。对于 Node,它看起来需要 email/UPN - 请参阅 here, whereas you're sending activity.from.id. Perhaps try call getPagedMembers - 如果只有一个用户(即一对一聊天),它实际上与 getMember 相同。
工作代码段::
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded;
for (let cnt = 0; cnt < membersAdded.length; ++cnt) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
var continuationToken;
var members = [];
do {
var pagedMembers = await TeamsInfo.getPagedMembers(context, 100, continuationToken);
continuationToken = pagedMembers.continuationToken;
members.push(...pagedMembers.members);
} while (continuationToken !== undefined);
members.forEach(member => {
const userEmail=member.userPrincipalName;
});
const card = CardFactory.adaptiveCard(welcomeCard);
const message = {
attachments: [card],
summary: 'Welcome'
};
await context.sendActivity(message);
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});