【问题标题】:Getting graph-compatible Team and conversation IDs in a Teams bot在 Teams 机器人中获取图形兼容的团队和对话 ID
【发布时间】:2019-07-23 15:05:39
【问题描述】:

我正在尝试在我的机器人应用程序中使用 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 格式之间进行转换?有什么详细说明它们不同的原因吗?

【问题讨论】:

    标签: botframework microsoft-graph-api microsoft-teams


    【解决方案1】:

    你可以!

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

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

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

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

    【讨论】:

    • 谢谢,这让我获得了团队 ID,这是一个障碍,但获取消息回复的方法调用仍然引发异常。看起来这些被标记为受保护的 API,这就是我首先得到异常的原因。对于其他想要做同样事情的人,即使您拥有 Group.ReadWrite.All,您仍然需要额外的权限才能访问这些 API。
    • 哦,看起来在该软件包的 v4.3 测试版中,FetchTeamDetailsAsync 方法已被删除。需要改用 FetchTeamDetailsWithHttpMessagesAsync
    • 有趣。不知道我有什么版本,但 FetchTeamDetailsAsync 昨天为我工作。很高兴你成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多