![](/img/trans.png)
[英]MS Teams - fetch the team Ids and channel Ids in which the bot is installed
[英]How to get team id when the bot is installed in personal scope(MS Teams)?
我有一個用例,我需要在我的個人應用程序中顯示以下信息。
我正在探索相同的連接器客戶端並提出以下代碼:-
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
。
現在,我得到球隊的內線對象channelData
在onConversationUpdate
並且此流程運行完美。
{
"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
在每一個場景,即無論我選擇添加或添加到團隊?
這是它應該如何表現還是我錯過了什么。 很想聽聽對此的一些想法。 提前致謝。
可能是你想多了——這里有一個更簡單的觀點:
如果您將機器人安裝到Team 中,您將獲得一個 Team Id(以及安裝它的任何相關頻道)。
如果您為機器人設置了“個人”范圍,那么用戶還可以選擇將機器人安裝到“個人”范圍中。 這意味着,他們沒有將機器人安裝到實際的團隊中 - 這就是您沒有收到團隊 ID 的原因。 它沒有壞掉 - 這是完全正確的。
如果您不希望您的機器人能夠安裝在個人范圍內,只需在您的清單(“個人”范圍)中刪除該選項 - 您可以選擇,因為這取決於您希望用戶做什么能夠用你的機器人做。 一些機器人只在團隊內部有意義,其他只在個人范圍內有意義,其他只在群聊或會議中 - 您可以允許您的機器人安裝在任何/所有這些相關的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.