【问题标题】:How to get user details in Bot Framework如何在 Bot Framework 中获取用户详细信息
【发布时间】:2021-02-23 00:09:18
【问题描述】:

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

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

From ID::29:1O_abckkskldjflkjfslxxxxxxxx

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

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

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

【问题讨论】:

    标签: botframework microsoft-teams


    【解决方案1】:

    根据文档,您仅为 dotnet 库将“id”传递给 getMember。对于 Node,它看起来需要电子邮件/UPN - 请参阅here,而您正在发送 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();
            });
    

    【讨论】:

    • 太棒了!这是其中一种方式
    • 我在 Emulatorv- /v3/conversations/43652220-a984-11ea-a2a8-85520dca06e7%7Clivechat/pagedmembers 中不断收到错误消息。这可能仅在 Teams 聊天中运行时有效,但也会导致 Teams 出错
    • 模拟器很可能不支持这一点 - 老实说,使用 ngrok 直接在 Teams 中进行测试非常容易,而且这两种技术支持的差异如此之大,以至于我'd 建议尽可能多地使用 Teams。因此,考虑到这一点,您会从 Teams 中得到什么错误(如果有)?
    • @AhmedVali 你能解决这个问题吗?如果是,您能分享一下方法吗?
    • @AliNauman ,使用 member.userPrincipalName 可以获取用户详细信息。我在答案中添加了工作 sn-p。
    猜你喜欢
    • 2016-08-10
    • 2014-11-30
    • 2018-09-20
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多