消息表情回复 Reaction REST API

更新时间:2022-06-06

消息表情回复(下文统称 “Reaction” )支持用户在单聊和群聊场景中对单条消息回复表情,从而增加用户聊天时的互动方式。本文主要介绍 Reaction 相关 REST API 接口。

请求参数

参数 类型 是否必需 描述
host String 必需 你在环信即时通讯云控制台注册项目时所在的集群服务器地址。
org_name String 必需 即时通讯服务分配给每个企业(组织)的唯一标识。你可以通过控制台获取该字段。
app_name String 必需 你在环信即时通讯云控制台注册项目时填入的应用名称。
userId String 必需 用户 ID。

响应参数

参数 描述
data 实际取到的数据详情。
username 用户 ID。
groupname 群组名。
timestamp 请求响应的时间,Unix 时间戳,单位为 ms。

环信即时通讯 REST API 要求 Bearer HTTP 认证。每次发送 HTTP 请求时,都必须在请求头部填入如下 Authorization 字段:

Authorization:Bearer ${YourAppToken}

为提高项目的安全性,环信使用 Token(动态密钥)对即将登录即时通讯系统的用户进行鉴权。即时通讯 REST API 仅支持使用 app token 的鉴权方式,详见 使用 app token 鉴权

在单聊和群聊场景中在单条消息上创建或追加 Reaction。

HTTP 请求

POST https://{host}/{org_name}/{app_name}/reaction/user/{userId}

路径参数

参数及说明详见公共参数

请求 header

参数 类型 是否必需 描述
Content-Type String 必需 内容类型:application/json
Authorization String 必需 Bearer ${token} Bearer 是固定字符,后面加英文空格,再加上获取到的 app token 的值。

请求 body

参数 类型 是否必需说明
msgId String必需 消息 ID。
messageString必需 表情 ID。长度不可超过 128 个字符。与客户端一致。允许的字符集包括:
- 26 个大写字母 (A-Z);
- 26 个小写字母(a-z);
- 10 个数字(0-9);
- 特殊字符(建议不使用,如需使用需要你自行在查询和删除接口进行 URL 编码)。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

参数 类型 说明
requestStatusCodeString 接口相应 code 状态。OK 表示操作成功。
id String Reaction ID。
msgId String 消息 ID。
msgType String 消息类型:
- chat:单聊;
- groupchat:群聊。
groupId Long 群组 ID(单聊时为 null)。
reaction String 表情 ID,与客户端一致。同请求参数中 “message”。
createAt Instant创建时间。
updateAt Instant修改时间。

其他字段及说明详见公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考响应状态码了解可能的原因。

示例

请求示例

curl -g -X POST 'http://localhost:8089/easemob-demo/easeim/reaction/user/e1' -H 'Authorization: Bearer <YourAppToken>' -H 'Content-Type: application/json' --data-raw '{
    "msgId":"997625372793113144",
    "message":"emoji_40"
}'

响应示例

{
    "requestStatusCode": "ok",
    "timestamp": 1645774821181,
    "data": {
        "id": "946481033434607420",
        "msgId": "msg3333",
        "msgType": "chat",
        "groupId": null,
        "reaction": "message123456",
        "createdAt": "2022-02-24T10:57:43.138934Z",
        "updatedAt": "2022-02-24T10:57:43.138939Z"
    }
}

该方法根据单聊或群聊中的消息 ID 获取指定消息的 Reaction 信息,包括 Reaction ID、使用的表情 ID、以及使用该 Reaction 的用户 ID 及用户人数。获取的 Reaction 的用户列表只展示最早三个添加 Reaction 的用户。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/reaction/user/{userId}

路径参数

参数及说明详见公共参数

请求 header

参数 类型 是否必需 描述
Content-Type String 必需 内容类型:application/json
Authorization String 必需 Bearer ${token} Bearer 是固定字符,后面加英文空格,再加上获取到的 app token 的值。

请求 body

参数 类型 是否必需 描述
msgIdList Array 必需 需要查询的消息 ID 列表。
msgType String 必需 消息类型(单聊:chat; 群聊:groupchat)。
groupId String 非必需 群组 ID(若要拉取群中的 Reaction,需要传当前群组的 ID)。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

参数 类型 说明
requestStatusCodeString接口相应 code 状态。OK 表示操作成功。
msgId String消息 ID。
reactionId StringReaction ID。
reaction String表情 ID,与客户端一致。同请求参数中 “message”。
count Number添加该 Reaction 的用户人数。
state Bool 当前请求用户是否添加过该 Reaction。
- true: 是;
- false:否。
userList Array 追加 Reaction 的用户 ID 列表。只返回最早操作 Reaction 的三个用户的 ID。

其他字段及说明详见公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考响应状态码了解可能的原因。

示例

请求示例

curl -g -X GET 'http://localhost:8089/easemob-demo/easeim/reaction/user/{{userId}}?msgIdList=msgId1&msgType=chat' -H 'Authorization: Bearer <YourAppToken>'

响应示例

{
    "requestStatusCode": "ok",
    "timestamp": 1645774821181,
    "data": [
        {
            "msgId": "msg123",
            "reactionList": [
                {
                    "reactionId": "944330310986837168",
                    "reaction": message123456,
                    "count": 0,
                    "state": false,
                    "userList": [
                        "test123",
                        "test456",
                        "test1"
                    ]
                }
            ]
        },
        {
            "msgId": "msg1234",
            "reactionList": [
                {
                    "reactionId": "945272584050659838",
                    "reaction": message123456,
                    "count": 0,
                    "state": false,
                    "userList": [
                        "test5"
                    ]
                }
            ]
        }
    ]
}

删除当前用户对该 Reaction 的追加操作。

HTTP 请求

DELETE https://{host}/{org_name}/{app_name}/reaction/user/{userId}

路径参数

参数及说明详见公共参数

请求 header

参数 类型 是否必需 描述
Content-Type String 必需 内容类型:application/json
Authorization String 必需 Bearer ${token} Bearer 是固定字符,后面加英文空格,再加上获取到的 app token 的值。

请求 body

参数 类型 是否必需 描述
msgId String 必需 消息 ID。
message String 必需 表情 ID。长度不可超过 128 个字符。与客户端一致。允许的字符集包括:
- 26 个大写字母 (A-Z);
- 26 个小写字母(a-z);
- 10 个数字(0-9);
- 特殊字符(建议不使用,如需使用需要你自行在查询和删除接口进行 URL 编码)。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

参数 类型 说明
requestStatusCodeString接口相应 code 状态。OK 表示操作成功。
timestamp long 请求响应的时间,Unix 时间戳,单位为毫秒。

其他字段及说明详见公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考响应状态码了解可能的原因。

示例

请求示例

curl -g -X DELETE 'http://localhost:8089/easemob-demo/easeim/reaction/user/wz?msgId=997625372793113144&message=emoji_40' -H 'Authorization: Bearer <YourAppToken>'

响应示例

{
    "requestStatusCode": "ok",
    "timestamp": 1645774821181
}

该方法根据指定的消息的 ID 和表情 ID 获取对应的 Reaction 信息,包括使用了该 Reaction 的用户名及用户人数。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/reaction/user/{userId}/detail

路径参数

参数及说明详见公共参数

请求 header

参数 类型 是否必需 描述
Content-Type String 必需 内容类型:application/json
Authorization String 必需 Bearer ${token} Bearer 是固定字符,后面加英文空格,再加上获取到的 app token 的值。

请求 body

参数 类型 是否必需说明
msgId String 必需 消息 ID。
messageString 必需 表情 ID。长度不可超过 128 个字符。与客户端一致。允许的字符集包括:
- 26 个大写字母 (A-Z);
- 26 个小写字母(a-z);
- 10 个数字(0-9);
- 特殊字符(建议不使用,如需使用需要你自行在查询和删除接口进行 URL 编码)。
limit Integer非必需 分页获取时使用,每页显示的 Reaction 条数(默认值和最大值都为 50)。
cursor String 非必需 分页获取时使用,传入游标后便从游标起始的地方进行查询,类似于数据库 limit 1,5 中 1 的作用,可以理解为页码。

HTTP 响应

响应 body

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中包含以下字段:

参数 类型 说明
requestStatusCodeString接口相应 code 状态。OK 表示操作成功。
reactionId StringReaction ID。
reaction String表情 ID,与客户端一致。同请求参数中 “message”。
count Number添加该 Reaction 的用户人数。
state Bool 当前请求用户是否添加过该 Reaction。
- true:是;
- false:否。
userList Array 追加 Reaction 的用户 ID 列表。只返回最早操作 Reaction 的三个用户的 ID。
cursor String分页获取时使用,传入游标后便从游标起始的地方进行查询,类似于数据库 limit 1,5 中 1 的作用,可以理解为页码。

其他字段及说明详见公共参数

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考响应状态码了解可能的原因。

示例

请求示例(第一页)

curl -g -X GET 'http://localhost:8089/easemob-demo/easeim/reaction/user/wz/detail?msgId=997627787730750008&message=emoji_40&limit=50' -H 'Authorization: Bearer <YourAppToken>'

请求示例(第 N 页)

curl -g -X GET 'http://localhost:8089/easemob-demo/easeim/reaction/user/wz/detail?msgId=997627787730750008&message=emoji_40&cursor=944330529971449164&limit=50' -H 'Authorization: Authorization: Bearer <YourAppToken>'

响应示例

{
    "requestStatusCode": "ok",
    "timestamp": 1645776986146,
    "data": {
        "reactionId": "946463470818405943",
        "reaction": "message123456",
        "count": 1,
        "state": true,
        "userList": [
            "wz1"
        ],
        "cursor": "946463471296555192"
    }
}