繁体   English   中英

在 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();
    });
  }

问题是我只收到安装应用程序的用户的通知,即使我的团队(和频道)有很多成员:

团队成员

安装机器人后,如何获取每个团队成员的对话参考?

请务必注意团队中用户之间的区别以及用户与机器人之间的对话引用。 文档 - 试图 - 说的是:

  1. 将机器人添加到团队后,您可以获得团队中的用户列表。
  2. 您可以使用该用户列表在您自己的数据库中查找您需要已经为这些用户提供消息的对话参考。 这是因为这些是对单独对话的引用 - 机器人在团队/频道中并且具有引用,但是机器人想要用来向用户发送个人消息的 1-1 聊天是每个单独的单独聊天。
  3. 如果您还没有任何/所有这些用户的对话参考,则需要获取它们。 这意味着用户需要 (a) 自己安装机器人,或者您需要 (b) 通过 Graph 为他们安装机器人。

文档,imo,并没有真正解释得那么好 - 他们假设通过枚举用户列表你会立即获得 - 实际 - 对话参考,和/或你可能能够使用机器人发起对话框架本身。

要在频道中开始对话- 我想你正在寻找这样的东西 - 请参阅 3 点MessageAllMembers 试用可用的示例 - Teams Conversation Bot (请参阅代码片段

您可以使用TeamsInfo.getPagedMembers获取团队成员的详细信息

更新 -开始 1:1 对话- 我们在Company Communicator App 模板中使用 C# 实现了这一点。 公司通讯员的应用程序安装代码片段

要首先安装它,请参考@Hilton Giesenow 共享的文档, JavaScript 片段并按照创建 authProvider 进行操作

看看我们在 Company Communicator 中创建 1:1 对话的方法 JavaScript 方法参考)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM