Microsoft Bot Framework 的 App Id (Teams) 中的“28”前缀代表什么
What does "28" prefix stands for in Microsoft Bot Framework's App Id (Teams)
我正在使用 Microsoft Bot 框架,当我从团队中删除机器人时,我收到了 teamMemberRemoved
事件,当我试图从 activity.MembersRemoved
中删除用户时,有一个用户具有以下 ID - 28:<appId>
.
我还在 GitHub 上找到了一些解决方案,这些解决方案正在处理像这样的机器人用户:
new ChannelAccount("28:" + botCredentials.MicrosoftAppId);
那么,我想知道28
代表什么?
如果您查看机器人从 Teams 收到的任何内容,例如来自用户的消息或 teamMemberRemoved 事件等,就会发现有各种 id "types" 在起作用。例如,这里是一个示例 conversationUpdate 事件:
{
"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”是频道或组 Id 等。机器人以“28:”开头,然后它们有一个唯一的 Guid Id,但在对于 Bot,它的 Guid Id 与 Azure Bot Registration 中的 App Id 相同,因此它是可预测的。这意味着,例如,如果您要发送主动消息并且需要设置 "From" 用户的 ID,则可以使用“28:”+ 您的应用程序 ID 组合它,您可能在配置文件中拥有该 ID为了处理 encryption/decryption 您的机器人消息。
我正在使用 Microsoft Bot 框架,当我从团队中删除机器人时,我收到了 teamMemberRemoved
事件,当我试图从 activity.MembersRemoved
中删除用户时,有一个用户具有以下 ID - 28:<appId>
.
我还在 GitHub 上找到了一些解决方案,这些解决方案正在处理像这样的机器人用户:
new ChannelAccount("28:" + botCredentials.MicrosoftAppId);
那么,我想知道28
代表什么?
如果您查看机器人从 Teams 收到的任何内容,例如来自用户的消息或 teamMemberRemoved 事件等,就会发现有各种 id "types" 在起作用。例如,这里是一个示例 conversationUpdate 事件:
{
"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”是频道或组 Id 等。机器人以“28:”开头,然后它们有一个唯一的 Guid Id,但在对于 Bot,它的 Guid Id 与 Azure Bot Registration 中的 App Id 相同,因此它是可预测的。这意味着,例如,如果您要发送主动消息并且需要设置 "From" 用户的 ID,则可以使用“28:”+ 您的应用程序 ID 组合它,您可能在配置文件中拥有该 ID为了处理 encryption/decryption 您的机器人消息。