如何在 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();
        });