微软团队机器人获取渠道成员

时间:2020-11-01 06:44:53

标签: botframework microsoft-teams

在我们的用例中,我们拥有团队频道ID。在以下情况下,将其捕获并存储到数据库中

this.onTeamsChannelCreatedEvent(async (channelInfo: any, teamInfo: any, turnContext: any, next: () => Promise<void>): Promise<void> => {
}

我们正在执行一项定期工作,需要找出渠道成员来执行某些操作。那么,如何从频道ID中找到会员信息?

我已经看到了使用context或context.activity的示例。但是在这种情况下,将无法使用。我们正在使用nodejs v4。

我的代码在这里

var client = new ConnectorClient(credentials, { baseUri: channel.serviceUrl });

            client.fetchMembers(channel.serviceUrl, channel.channelId,
                (err, result) => {
                  if (err) {
                      functions.logger.log("failed to fetch team members")
                  }
                  else {
                    functions.logger.log("Team members are", result)
                  }
                }
              );

现在抛出错误

TypeError: client.fetchMembers is not a function

我也尝试过client.fetchMembers,但错误类似。

2 个答案:

答案 0 :(得分:1)

您可以通过以下两种主要方式进行操作:

  1. 使用Microsoft Graph,特别是请参见List Members操作。

  2. 通过在频道中注册一个漫游器,听起来好像您已经拥有了漫游器。您根本不需要“活动”,您可以随时通过访问“对话”对象来执行此操作。实际上,此代码甚至根本不需要在您的“机器人”项目中运行-只要将机器人添加到团队/渠道中,它就可以使用机器人的凭据。您可以在Microsoft文档中看到示例代码here,而我有一个最近的会议示例,该示例是通过here上的控制台应用程序在dotnet中完成的。

值得注意的是,频道的成员和团队的成员基本相同(仅不包括私人频道),因此这就是其中一些选项引用团队或小组的原因。

答案 1 :(得分:0)

您将要使用teamsInfo.getTeamMembers()teamsInfo.getPagedMembers()(如果要使用分页列表),如this sample所示:

    async getPagedMembers(context) {
        var continuationToken;
        var members = [];
        do {
            var pagedMembers = await TeamsInfo.getPagedMembers(context, 100, continuationToken);
            continuationToken = pagedMembers.continuationToken;
            members.push(...pagedMembers.members);
        } while (continuationToken !== undefined);
        return members;
    }