即时通讯 REST API
概览
请求的 Base URL 可以在开发者中心 > 你的游戏 > 游戏服务 > 云服务 > 即时通讯 > 设置查看。
对于 POST 和 PUT 请求,请求的主体必须是 JSON 格式,而且 HTTP Header 的 Content-Type 需要设置为 application/json
。
请求的鉴权是通过 HTTP Header 里面包含的键值对来进行的,详见数据存储 REST API 使用详解中《请求格式》一节的说明。
_Conversation
表包含一些内置的关键字段定义了对话的属性、成员等,单聊、群聊、聊天室、服务号均在此表中,详见即时通讯总览的《对话》一节。
不过为了避免出现数据不一致问题,我们不推荐调用数据存储相关的 API 直接操作 _Conversation
表中的数据。
当前的 API 版本为 1.2
:
- 单聊、群聊相关 API 以
rtm/conversations
标示 - 聊天室相关 API 以
rtm/chatrooms
标示,在_Conversation
表内用字段tr
为 true 标示。 - 服务号相关 API 以
rtm/service-conversations
标示,在_Conversation
表内用字段sys
为 true 标示。
除此之外,与 client 相关的请求以 rtm/clients
标示。
最后,一些全局性质的 API 直接以 rtm/{function}
标示,如 rtm/all-conversations
可查询所有类型的对话。
单聊、群聊
创建对话
在 _Conversation
表默认 ACL 权限下本接口要求使用 master key。
curl -X POST \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{masterkey}},master" \
-H "Content-Type: application/json" \
-d '{"name":"My First Conversation", "m": ["BillGates", "SteveJobs"], "unique": true}' \
https://{{host}}/1.2/rtm/conversations
上面的例子会创建一个最简单的对话,包括两个 client ID 为 BillGates 和 SteveJobs 的初始成员。对话创建成功会返回 objectId,即即时通讯中的对话 ID,客户端就可以通过这个 ID 发送消息了。新创建的对话可以在 _Conversation
表内找到。
对话的字段可参考即时通讯总览的《对话》一节。
传入 "unique": true
参数可以保证对话的唯一性。
返回
{
"unique": true,
"updatedAt": "2020-05-26T06:42:31.492Z",
"name": "My First Conversation",
"objectId": "5eccba570d3a42c5fd4e25c3",
"m": ["BillGates", "SteveJobs"],
"createdAt": "2020-05-26T06:42:31.482Z",
"uniqueId": "6c7b0e5afcae9aa1139a0afa25833dec"
}
需要注意,群聊与单聊的唯一区别是 client 数量,API 层面是一致的。
查询对话
在 _Conversation
表默认 ACL 权限下本接口要求使用 master key。
curl -X GET \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{masterkey}},master" \
-G \
--data-urlencode 'where={"name": "first conversation"}' \
--data-urlencode 'skip=1' \
--data-urlencode 'limit=20' \
https://{{host}}/1.2/rtm/conversations
参数 | 约束 | 说明 |
---|---|---|
skip | 可选 | |
limit | 可选 | 与 skip 联合使用实现分页 |
where | 可选 | 参见数据存储 REST API 使用详解的《查询》一节 |
返回
{
"results": [
{
"name": "test conv1",
"m": ["tom", "jerry"],
"createdAt": "2018-01-17T04:15:33.386Z",
"updatedAt": "2018-01-17T04:15:33.386Z",
"objectId": "5a5ecde6c3422b738c8779d7"
}
]
}
更新对话
在 _Conversation
表默认 ACL 权限下本接口要求使用 master key。
curl -X PUT \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{masterkey}},master" \
-H "Content-Type: application/json" \
-d '{"name":"Updated Conversation"}' \
https://{{host}}/1.2/rtm/conversations/{conv_id}
_Conversation
表除 m 字段均可通过这个接口更新。
返回
{
"updatedAt": "2018-01-16T03:40:37.683Z",
"objectId": "5a5d7433c3422b31ed845e76"
}
删除对话
在 _Conversation
表默认 ACL 权限下本接口要求使用 master key。
curl -X DELETE \
-H "X-LC-Id: {{appid}}" \
-H "X-LC-Key: {{masterkey}},master" \
https://{{host}}/1.2/rtm/conversations/{conv_id}
返回
{}