在 MS Teams 中安装 bot 时获取所有团队成员
Get all team members when bot is installed in MS Teams
我正在尝试使用 MS Teams 机器人实施主动消息传递。根据文档,我必须在向用户发送任何消息之前获得 conversationReference
,因此我按如下方式实现了 onMembersAdded
事件侦听器:
class TeamsBot extends TeamsActivityHandler {
constructor() {
super();
this.onConversationUpdate(async (context, next) => {
this.addConversationReference(context);
});
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) {
this.addConversationReference(context);
}
}
await next();
});
}
问题是即使我的团队(和频道)有很多成员,我也只会收到安装应用程序的用户的通知:
安装机器人后如何获取每个团队成员的对话参考?
请务必注意团队中用户之间的区别以及用户与机器人之间的对话引用。文档 - 试图 - 说的是:
- 当您的机器人被添加到团队中时,您可以获得团队中用户的列表。
- 您可以使用该用户列表在您的自己的数据库中查找您需要的对话引用已经 为这些用户发送消息。这是因为这些是对 separate 对话的引用 - 机器人在 Team/Channel 中并且具有 that 引用,但是 1-1聊天机器人想要用来向用户发送个人消息的聊天是每个单独的聊天。
- 如果您还没有这些用户中any/all的对话参考,您需要获取它们。这意味着用户需要 (a) 自己安装机器人,或者您需要 (b) install it for them via the Graph.
文档,imo,并没有真正解释得那么好 - 他们假设通过枚举用户列表,您将立即获得 - 实际 - 对话参考,and/or 您可能能够使用机器人框架本身发起对话。
要在频道中开始对话 -
我认为您正在寻找这样的东西 - 请参阅 3 点 MessageAllMembers. Try the sample available - Teams Conversation Bot. (see for code snippet)
您可以使用TeamsInfo.getPagedMembers获取团队成员的详细信息
更新 -
要开始 1:1 对话 -
我们在 Company Communicator App template. Company communicator's code snippet 中使用 C# 实现了此应用程序安装。
先安装,参考@Hilton Giesenow分享的文档,JavaScript snippet and follow create authProvider。
看看这个 method where we are creating a 1:1 conversation in Company Communicator. (JavaScript method ref)。
我正在尝试使用 MS Teams 机器人实施主动消息传递。根据文档,我必须在向用户发送任何消息之前获得 conversationReference
,因此我按如下方式实现了 onMembersAdded
事件侦听器:
class TeamsBot extends TeamsActivityHandler {
constructor() {
super();
this.onConversationUpdate(async (context, next) => {
this.addConversationReference(context);
});
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) {
this.addConversationReference(context);
}
}
await next();
});
}
问题是即使我的团队(和频道)有很多成员,我也只会收到安装应用程序的用户的通知:
安装机器人后如何获取每个团队成员的对话参考?
请务必注意团队中用户之间的区别以及用户与机器人之间的对话引用。文档 - 试图 - 说的是:
- 当您的机器人被添加到团队中时,您可以获得团队中用户的列表。
- 您可以使用该用户列表在您的自己的数据库中查找您需要的对话引用已经 为这些用户发送消息。这是因为这些是对 separate 对话的引用 - 机器人在 Team/Channel 中并且具有 that 引用,但是 1-1聊天机器人想要用来向用户发送个人消息的聊天是每个单独的聊天。
- 如果您还没有这些用户中any/all的对话参考,您需要获取它们。这意味着用户需要 (a) 自己安装机器人,或者您需要 (b) install it for them via the Graph.
文档,imo,并没有真正解释得那么好 - 他们假设通过枚举用户列表,您将立即获得 - 实际 - 对话参考,and/or 您可能能够使用机器人框架本身发起对话。
要在频道中开始对话 - 我认为您正在寻找这样的东西 - 请参阅 3 点 MessageAllMembers. Try the sample available - Teams Conversation Bot. (see for code snippet)
您可以使用TeamsInfo.getPagedMembers获取团队成员的详细信息
更新 - 要开始 1:1 对话 - 我们在 Company Communicator App template. Company communicator's code snippet 中使用 C# 实现了此应用程序安装。
先安装,参考@Hilton Giesenow分享的文档,JavaScript snippet and follow create authProvider。
看看这个 method where we are creating a 1:1 conversation in Company Communicator. (JavaScript method ref)。