簡體   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