首页 > 解决方案 > 在 Teams 机器人中获取图形兼容的团队和对话 ID

问题描述

我正在尝试在我的机器人应用程序中使用 Teams 中的新消息操作功能。我可以调用任务模块,但我想让机器人读取完整消息线程的内容(不仅仅是传递到上下文中的第一条消息)。但是,当我检查 ChannelData 时,我得到了这个:

ChannelData {{
  "channel": {
    "id": "19:5e4ce488280b467198400257473cfd4e@thread.skype"
  },
  "team": {
    "id": "19:7a81d1b1c0b24ac192de1c3d5cfd5618@thread.skype"
  },
  "tenant": {
    "id": "8c6ae172-a3ea-4f50-994d-a0256822697f"
  },
  "source": {
    "name": "compose"
  }
}}

看起来您应该能够使用beta API在频道中获取消息,如下所示:

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var replies = await graphClient.Teams["303d2c1c-f1c5-40ce-b68e-544343d7f42b"].Channels["19:fec4b0f2825d4c8c82abc09027a64184@thread.skype"].Messages["1555375673184"].Replies
    .Request()
    .GetAsync();

挑战在于,使用格式为“19:7a81d1b1c0b24ac192de1c3d5cfd5618@thread.skype”的 TeamID 调用它不起作用,而是需要将 TeamID 指定为标准 GUID(在本例中为 d12f244e-fd24-4430-a58a- 1b2650ba8997)。有没有办法在这两种 ID 格式之间进行转换?有什么可以详细说明它们为什么不同的原因吗?

标签: botframeworkmicrosoft-graph-apimicrosoft-teams

解决方案


你可以!

你必须使用Microsoft.Bot.Builder.TeamsPackage / GitHub

从 README 中,您可以获得团队 ID:

var teamInfo = await teamsContext.Operations.FetchTeamDetailsAsync(incomingTeamId);

这将在teamInfo.AadGroupId其中并被格式化为 GUID。


推荐阅读