在我们的用例中,我们拥有团队频道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,但错误类似。
答案 0 :(得分:1)
您可以通过以下两种主要方式进行操作:
使用Microsoft Graph,特别是请参见List Members操作。
通过在频道中注册一个漫游器,听起来好像您已经拥有了漫游器。您根本不需要“活动”,您可以随时通过访问“对话”对象来执行此操作。实际上,此代码甚至根本不需要在您的“机器人”项目中运行-只要将机器人添加到团队/渠道中,它就可以使用机器人的凭据。您可以在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;
}