在团队机器人中获取图形兼容的团队和对话ID

时间:2019-07-23 15:05:39

标签: botframework microsoft-graph microsoft-teams

我正在尝试在我的机器人应用程序的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();

挑战在于,使用TeamID调用此命令,其格式为“ 19:7a81d1b1c0b24ac192de1c3d5cfd5618@thread.skype”不起作用,而是需要将TeamID指定为标准GUID(在这种情况下为d12f244e-fd24-4430 -a58a-1b2650ba8997)。有没有办法在这两种ID格式之间转换?有什么细节可以说明它们为何与众不同吗?

1 个答案:

答案 0 :(得分:2)

可以!

您必须使用Microsoft.Bot.Builder.Teams Package / GitHub

从自述文件中,您可以获得团队ID:

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

该文件将位于teamInfo.AadGroupId中,其格式设置为GUID。