首页 > 解决方案 > 如何在 Bot Framework 中获取用户详细信息

问题描述

我正在构建一个需要向用户发送自适应卡片的团队机器人。

安装机器人后,我将向用户发送欢迎消息。从欢迎消息中,我可以使用 activity.from.id 获取用户的团队 ID。

From ID::29:1O_abckkskldjflkjfslxxxxxxxx

使用此 ID,我尝试使用以下方式获取用户详细信息 const member=TeamsInfo.getMember(context, context.activity.from.id);

但是我仍然无法获取用户详细信息。

如何获取用户的电子邮件 ID,以便将来我可以向用户发送通知?

标签: botframeworkmicrosoft-teams

解决方案


根据文档,您仅为 dotnet 库将“id”传递给 getMember。对于 Node,它看起来需要电子邮件/UPN - 请参阅此处,而您正在发送 activity.from.id。或许尝试调用getPagedMembers - 如果只有一个用户(即,这是一个 1-1 聊天),它实际上与 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();
        });

推荐阅读