Skip to the content.

GraphAPI 1.0中新增加的Teams API

这篇继续介绍BUILD大会里的内容:两个新加入GraphAPI 1.0的关于Teams的API。

这两个新增api是关于在频道Channel里发送消息和回复消息的。实际上这两个api在beta版本中早就已经加入,上个月build大会中公布的只是把这两个api正式发布到1.0版本,这意味着微软官方会对这两个api作长期的支持,这也意味着大家在生产环境可以使用了。 :)

我们先来看一下如何在一个channel里发送消息,使用如下的rest api。

POST /teams/{team-id}/channels/{channel-id}/messages

其中 team-id 就是channel所属的team的id, channel-id 就新消息要发送到的channel的id。

大家要注意的是这个rest api目前只是支持Delegated permission,并不支持Application permission,也就是说你以当前登入用户的身份来发送消息。需要申请的权限是:ChannelMessage.Send, Group.ReadWrite.All

发送的内容(HTTP body)可以是一个简单的纯文字内容,如下:

{
  "body": {
    "content": "Hello!"
  }
}

还可以发送一个 @ 某人的富文本消息,http body内容如下:

{
  "body": {
    "contentType": "html",
    "content": "Hello <at id=\"0\">Tony</at>"
  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "Tony",
      "mentioned": {
        "user": {
          "displayName": "Tony",
          "id": "a01a899c-3e5f-4f0e-85b9-d75e24166e1a",
          "userIdentityType": "aadUser"
        }
      }
    }
  ]
}

还可以发送更加复杂的互动卡片,具体的内容,大家可以参考官方api文档。

回复一条消息的api和上面发送消息的api的权限一样ChannelMessage.Send, Group.ReadWrite.All,它目前也只是支持Delegated permission,并不支持Application permission。url是:

POST /teams/{team-id}/channels/{channel-id}/messages/{message-id}/replies

message-id就是你需要回复的那条消息的id。

http body的内容和上面发送消息的body格式一样。api返回的内容如下。它实际上是一个message结构,具体内容可以参考这里

{
    "id": "message-id",
    "messageType": "message",
    "createdDateTime": "2020-01-01T00:11:22.333Z",
    "lastModifiedDateTime": null,
    "subject": null,
    "summary": null,
    "importance": "normal",
    "locale": "en-us",
    "policyViolation": null,
    "from": {
        "application": null,
        "device": null,
        "conversation": null,
        "user": {
            "displayName": "Tony",
            "userIdentityType": "aadUser"
        }
    },
    "body": {
        "contentType": "html",
        "content": "Hello!"
    },
    "attachments": [],
    "mentions": [],
    "reactions": []
}

参考:

Written on July 5, 2020