【问题标题】:Post message to MS Teams channel using Graph API使用 Graph API 将消息发布到 MS Teams 频道
【发布时间】:2019-12-23 06:51:54
【问题描述】:

我正在尝试使用 Graph API 向 MS Teams 发送消息。我正在传递访问令牌(AAD 令牌),但它仍然给我以下错误。我已在 Azure API 权限中授予了所有必需的权限。 错误:

{
  "error": {
    "code": "UnknownError",
    "message": "",
    "innerError": {
      "request-id": "53a5aaff-3d39-42ce-bdc6-74d02a756be2",
      "date": "2019-12-23T06:42:27"
    }
  }
}

API:https://graph.microsoft.com/beta/teams/{group-id-for-Teams}/channels/{channel-id}/messages/{message-id}/replies

【问题讨论】:

  • 获取访问令牌和 POST 的请求标头和正文是什么 graph.microsoft.com/beta/teams{group-id-for-teams}/channels/{channel-id}/messages/{message-id} /回复?你在 Azure AD 应用程序中添加了什么权限。请分享更多细节。最好提供已分配权限的屏幕截图。您可以先在 Microsoft Graph Explorer 中测试此 API,以确定问题是否出在访问令牌上。
  • 我看到你添加了botframework 标签。您使用 Graph API 而不是机器人的任何原因?如果您尝试作为 bot 发送消息,您仍需要将 bot 安装到您要发送到的频道。
  • Bot 将安装到我将发送消息的频道。我使用图形 api 作为我发送消息的解决方案,而不是在团队环境中,而是一个独立的天蓝色函数。

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


【解决方案1】:

哦,如果这是来自机器人(最初的问题不清楚,但在您以后的评论中澄清了),那么您根本不需要使用 Graph API - 还有另一种使用机器人发送消息的方法取而代之的是框架工具。您可以在您的机器人中执行此操作,也可以从完全不同的应用程序执行此操作。我有一些机器人,用户可以在其中安排一些事情,例如 when 他们想要发送消息,机器人将其保存到数据库中,而我有另一个应用程序(我现在主要使用 Azure Functions)按该时间表发送项目。

您需要存储一些重要的信息,您可以在用户向您的机器人发送消息时随时获取这些信息 - 这是您需要存储的信息,以便您知道如何直接连接到 用户和 那个 对话。它被称为主动消息传递,要了解如何执行此操作,请参阅我在Programmtically sending a message to a bot in Microsoft Teams 发布的答案

如果您与该用户没有任何对话历史记录(因为他们以前从未与您的机器人交谈过,而您正尝试发送第一条消息),那么它会变得更加复杂......让我知道如果是这样的话。

【讨论】:

  • 这种方法对我来说很清楚,但在我的情况下,我必须首先阅读消息中的回复,如果没有回复,那么我只需将回复(消息)发送到现有消息。所以为了阅读消息回复,我需要图形 api 或者这可以使用 bot 框架来完成?
  • 所以:(1)您是否已经在对话中注册了机器人(例如,机器人是否已添加到频道中)和(2)机器人必须同时直接回复消息,或者只是稍后,例如每天一次)?
  • 1.是的,机器人已经注册到对话中 2. 每天(午夜)将发送一次对消息的回复
  • 在这种情况下,请查看我在上面的主要答案中添加的链接 - 这应该是您所需要的。让我知道你是否正确(或只是“标记为答案”)
  • 我认为您忽略了我的第一条评论,我需要先阅读对消息的回复,然后仅对没有正文回复的消息发送回复。那么我如何阅读消息的回复。
【解决方案2】:

使用 graph api 向频道发送消息是受保护的 api,它需要 Microsoft 的访问权限。 可以向 Microsoft access reuqest form 请求访问权限。 一旦从 Microsoft 授予访问权限,请在您的 Web 应用程序的 api 权限中添加图形 api,然后宾果游戏您可以获得响应。

【讨论】:

  • 我不认为这是原因。请参阅此文档:docs.microsoft.com/en-us/graph/teams-protected-apis。它说发送消息不是受保护的 API。只有 GET API 是受保护的 API。而且我没有填写申请表,我仍然可以使用 Microsoft Graph API 发布消息:docs.microsoft.com/en-us/graph/api/…
  • @AllenWu 你是对的,但在我的要求中,我首先需要阅读一个消息线程,如果没有回复,那么我必须发送消息,如果你看到文档 api 与只是读写消息的方法不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
相关资源
最近更新 更多