【问题标题】:Get all team members when bot is installed in MS Teams在 MS Teams 中安装 bot 时获取所有团队成员
【发布时间】:2021-10-08 19:07:24
【问题描述】:

我正在尝试使用 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:1 消息,您能否提供有关 Graph 及其使用 Bot Framework SDK 实现的更多信息?跨度>

标签: node.js botframework chatbot microsoft-teams


【解决方案1】:

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

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

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

【讨论】:

  • 好的,我明白了,为了开始新的 1:1 对话,我必须使用 Graph 为每个用户单独安装应用程序,但是如何使用 JS 来完成呢?您链接的文档不够清晰
  • “JS”是什么意思?你是说节点吗?还是客户端的东西?
  • 是的,我正在使用带有 NodeJS 的 JavaScript SDK
【解决方案2】:

在频道中开始对话 - 我认为您正在寻找类似的东西 - 请参阅 3 点 MessageAllMembers。试用可用的示例 - Teams Conversation Bot。 (请参阅code snippet

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

更新 - 开始一对一对话 - 我们在Company Communicator App template 中使用 C# 实现了这一点。公司通讯员code snippet 用于安装应用程序。

要先安装它,请参考@Hilton Giesenow 分享的文档,JavaScript snippet 并关注create authProvider

看看这个method,我们正在 Company Communicator 中创建一对一对话。 (JavaScript method ref)。

【讨论】:

  • 这不会开始一对一的对话,而是在频道上继续对话
  • 您好,要开始对话,您需要先安装它,参考@Hilton Giesenow分享的文档JavaScript snippet并关注create authProvider。更新了我的答案。
  • 与您的问题类似 - link.
猜你喜欢
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多