微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决微软团队机器人获取渠道成员

在我们的用例中,我们拥有团队频道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,但错误类似。

解决方法

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

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

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

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

,

您将要使用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;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。