如何解决微软团队机器人获取渠道成员
在我们的用例中,我们拥有团队频道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,但错误类似。
解决方法
您可以通过以下两种主要方式进行操作:
-
使用Microsoft Graph,特别是请参见List Members操作。
-
通过在频道中注册一个漫游器,听起来好像您已经拥有了漫游器。您根本不需要“活动”,您可以随时通过访问“对话”对象来执行此操作。实际上,此代码甚至根本不需要在您的“机器人”项目中运行-只要将机器人添加到团队/渠道中,它就可以使用机器人的凭据。您可以在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 举报,一经查实,本站将立刻删除。