在微软Bot Framework的App Id(Teams)中,"28 "前缀代表什么?

问题描述 投票:1回答:1

我正在使用微软机器人框架,当我从团队中删除机器人时,我收到的信息是 teamMemberRemoved 事件中,而当我试图将用户从 activity.MembersRemoved 有以下ID的用户 - 28:<appId>.

我也在GitHub上找到了一些处理僵尸用户这样的解决方案。new ChannelAccount("28:" + botCredentials.MicrosoftAppId);

所以,我想知道什么是 28 代表什么?

c# .net botframework microsoft-teams
1个回答
2
投票

如果你看看你的机器人从Teams接收到的任何东西,比如用户的消息,或者teamMemberRemoved事件等等,有各种id "类型 "在发挥作用。作为一个例子,这里有一个对话Update事件的例子。

{
    "membersAdded": [
        {
            "id": "28:[bot app id]"
        }
    ],
    "type": "conversationUpdate",
    "timestamp": "2019-10-31T12:20:31.483Z",
    "id": "f:[event id]",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/emea/",
    "from": {
        "id": "29:[conversation id]",
        "aadObjectId": "[user AAD Id]"
    },
    "conversation": {
        "isGroup": true,
        "conversationType": "channel",
        "tenantId": "[Tenant Id]",
        "id": "19:[group or channel id]@thread.skype"
    },
    "recipient": {
        "id": "28:[bot app id]",
        "name": "[bot name]"
    },
    "channelData": {
        "team": {
            "id": "19:[some id]@thread.skype",
            "name": "Indoor Soccer",
            "aadGroupId": "[AAD Group Id]"
        },
        "eventType": "teamMemberAdded",
        "tenant": {
            "id": "[Tenant Id again]"
        }
    }
}

在上面的例子中,你可以看到一大堆 "Id",比如租户Id,对话Id,用户的Azure AD Id,等等。不过Teams对其中一些有特定的前缀格式,比如 "29: "是普通用户的 "Teams "Id的开头,"19 "是Channel或group Id等。而Bots则是以 "28: "开头,然后它们有一个唯一的Guid,但对于Bot来说,它的Guid与它在Azure Bot注册中的App Id是一样的,所以是可以预测的。这意味着,例如,如果你要发送一条主动消息,你需要设置 "From "用户的Id,你可以用 "28:" +你的App Id,你很可能在配置文件里有,以便处理你的机器人消息的加密解密。

© www.soinside.com 2019 - 2024. All rights reserved.