簡體   English   中英

在個人范圍(MS Teams)中安裝機器人時如何獲取團隊ID?

[英]How to get team id when the bot is installed in personal scope(MS Teams)?

我有一個用例,我需要在我的個人應用程序中顯示以下信息。

  1. 安裝機器人的團隊中的頻道列表。
  2. 安裝了 bot 的團隊中的用戶列表。

我正在探索相同的連接器客戶端並提出以下代碼:-

   const credentials = new MicrosoftAppCredentials(appId, appPassword);
   const connectorClient = new ConnectorClient(credentials, {
        baseUri: serviceUrl
    });
   const token = await credentials.getToken();
   axios.defaults.headers.common.Authorization = `Bearer ${ token }`;

   # To get channels
   const response = await axios.get(
        'https://smba.trafficmanager.net/in/v3/teams/{teamId}/conversations'
    );

    # To get members
   const users = await connectorClient.conversations.getConversationPagedMembers(teamId);

只要我有 teamId,這就完美了。

但我在這里面臨的問題是在個人范圍內查找teamId 我通過選擇“添加”選項來安裝我的機器人應用程序,如下所示。

在此處輸入圖片說明

據我了解,以上將機器人安裝在用戶的個人范圍內。 現在,在這種情況下, conversationUpdate事件中根本不存在團隊 ID 信息。 請注意,這是我第一次在團隊中安裝機器人,因此根據 Microsoft 文檔,數據應該可用,但通道對象中唯一可用的信息是租戶。

{
    "membersAdded": [
        {
            "id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0"
        }
    ],
    "type": "conversationUpdate",
    "timestamp": "2017-02-23T19:38:35.312Z",
    "localTimestamp": "2017-02-23T12:38:35.312-07:00",
    "id": "f:5f85c2ad",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
    "from": {
        "id": "29:1I9Is_Sx0OIy2rQ7Xz1lcaPKlO9eqmBRTBuW6XzkFtcjqxTjPaCMij8BVMdBcL9L_RwWNJyAHFQb0TRzXgyQvA"
    },
    "conversation": {
        "isGroup": true,
        "conversationType": "channel",
        "id": "19:efa9296d959346209fea44151c742e73@thread.skype"
    },
    "recipient": {
        "id": "28:f5d48856-5b42-41a0-8c3a-c5f944b679b0",
        "name": "SongsuggesterBot"
    },
    "channelData": {
        // for me this object is empty
        "team": {
            "id": "19:efa9296d959346209fea44151c742e73@thread.skype"
        },
        "eventType": "teamMemberAdded",
        "tenant": {
            "id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
        }
    }
}

接下來,我還嘗試使用“添加到團隊”選項在團隊范圍內安裝機器人。 在這種情況下,它會提示我選擇要安裝的頻道,我在其中選擇了general

在此處輸入圖片說明

現在,我得到球隊的內線對象channelDataonConversationUpdate並且此流程運行完美。

{
    "membersAdded": [
        {
            "id": "28:64564f44-dd7c-441a-b427-efcd662f21b5"
        }
    ],
    "type": "conversationUpdate",
    "timestamp": "2021-10-14T13:22:01.6072361Z",
    "id": "f:4ebc9a41-5140-7621-33f5-31d97275ce00",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/in/",
    "from": {
        "id": "29:17ZGff4Pvqz_zSNqEexg-86uBFcB6vnOBZzCwu4_puGdDsrYWCW_DdlB15PrcjC--nLlqD5CwtLMJyzXPY5OSsg",
        "aadObjectId": "eac26e98-104a-4785-87aa-bcf77ea1d7c1"
    },
    "conversation": {
        "isGroup": true,
        "conversationType": "channel",
        "tenantId": "c8fef0de-e240-4456-b523-3285ecc62087",
        "id": "19:y7qDBfGH2jE_Ze6G8mJS_CiWiqCaRFfH77jFZvJ1xgU1@thread.tacv2"
    },
    "recipient": {
        "id": "28:64564f44-dd7c-441a-b427-efcd662f21b5",
        "name": "Trick"
    },
    "channelData": {
        "team": {
            "aadGroupId": "5bc77aa9-9487-49ae-958f-b37b2191e64d",
            "name": "test 5",
            "id": "19:y7qDBfGH2jE_Ze6G8mJS_CiWiqCaRFfH77jFZvJ1xgU1@thread.tacv2"
        },
        "eventType": "teamMemberAdded",
        "tenant": {
            "id": "c8fef0de-e240-4456-b523-3285ecc62087"
        }
    }
}

所以我在這里想理解的是,如果機器人安裝在個人范圍內,為什么信息不會出現?

我問這個主要是因為沒有為 bot 添加個人范圍(即如果我只將范圍保留為team ),應用程序不會在應用程序內部向用戶顯示。 但是,如果我允許將范圍擴展到personal則用戶可能會在安裝應用程序時選擇該范圍,並且我的teamId信息將無法用於獲取我需要的數據。

這使我的下一個問題,那就是,有沒有在其中默認的任何add的按鈕add app屏幕安裝在這樣的機器人,我得到team內部對象channelData ,在conversationUpdate在每一個場景,即無論我選擇添加或添加到團隊?

這是它應該如何表現還是我錯過了什么。 很想聽聽對此的一些想法。 提前致謝。

可能是你想多了——這里有一個更簡單的觀點:

  1. 如果您將機器人安裝到Team 中,您將獲得一個 Team Id(以及安裝它的任何相關頻道)。

  2. 如果您為機器人設置了“個人”范圍,那么用戶可以選擇將機器人安裝到“個人”范圍中。 這意味着,他們沒有將機器人安裝到實際的團隊中 - 這就是您沒有收到團隊 ID 的原因。 它沒有壞掉 - 這是完全正確的。

如果您不希望您的機器人能夠安裝在個人范圍內,只需在您的清單(“個人”范圍)中刪除該選項 - 您可以選擇,因為這取決於您希望用戶做什么能夠用你的機器人做。 一些機器人只在團隊內部有意義,其他只在個人范圍內有意義,其他只在群聊或會議中 - 您可以允許您的機器人安裝在任何/所有這些相關的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM