# 获取消息表情回复

获取指定消息内的表情回复列表，支持仅获取特定类型的表情回复。

## 前提条件

- 应用需要开启[机器人能力](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-enable-bot-ability)。
- 调用当前接口的机器人或者用户，需要在待查询的消息所属的会话内。

## 使用限制

已被撤回的消息无法获取表情回复列表。

## 请求

基本 | &nbsp;
---|---
HTTP URL | https://open.feishu.cn/open-apis/im/v1/messages/:message_id/reactions
HTTP Method | GET
接口频率限制 | [1000 次/分钟、50 次/秒](https://open.feishu.cn/document/ukTMukTMukTM/uUzN04SN3QjL1cDN)
支持的应用类型 | Custom App、Store App
权限要求<br>**调用该 API 所需的权限。开启其中任意一项权限即可调用**<br>开启任一权限即可 | 查看消息表情回复(im:message.reactions:read)<br>获取单聊、群组消息(im:message:readonly)
字段权限要求 | **注意事项**：该接口返回体中存在下列敏感字段，仅当开启对应的权限后才会返回；如果无需获取这些字段，则不建议申请<br>获取用户 user ID(contact:user.employee_id:readonly)

### 请求头

名称 | 类型 | 必填 | 描述
---|---|---|---
Authorization | string | 是 | `tenant_access_token`<br>或<br>`user_access_token`<br>**值格式**："Bearer `access_token`"<br>**示例值**："Bearer u-7f1bcd13fc57d46bac21793a18e560"<br>[了解更多：如何选择与获取 access token](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-choose-which-type-of-token-to-use)

### 路径参数

名称 | 类型 | 描述
---|---|---
message_id | string | 待查询的消息ID。ID 获取方式：<br>- 调用[发送消息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/create)接口后，从响应结果的 `message_id` 参数获取。<br>- 监听[接收消息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/events/receive)事件，当触发该事件后可以从事件体内获取消息的 `message_id`。<br>- 调用[获取会话历史消息](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/list)接口，从响应结果的 `message_id` 参数获取。<br>**示例值**："om_8964d1b4*********2b31383276113"

### 查询参数

名称 | 类型 | 必填 | 描述
---|---|---|---
reaction_type | string | 否 | 待查询的表情类型，支持的枚举值参考[表情文案说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message-reaction/emojis-introduce)中的 emoji_type 值。<br>**注意**：该参数为可选参数，不传入该参数时将查询消息内所有的表情回复。<br>**示例值**：LAUGH
page_token | string | 否 | 分页标记，第一次请求不填，表示从头开始遍历；分页查询结果还有更多项时会同时返回新的 page_token，下次遍历可采用该 page_token 获取查询结果<br>**示例值**：YhljsPiGfUgnVAg9urvRFd-BvSqRL20wMZNAWfa9xXkud6UKCybPuUgQ1vM26dj6
page_size | int | 否 | 分页大小，用于限制一次请求返回的数据条目数。<br>**默认值**：20<br>**示例值**：10<br>**数据校验规则**：<br>- 最大值：`50`
user_id_type | string | 否 | 用户 ID 类型<br>**示例值**：open_id<br>**可选值有**：<br>- open_id：标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多：如何获取 Open ID](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid)<br>- union_id：标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多：如何获取 Union ID？](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id)<br>- user_id：标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多：如何获取 User ID？](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id)<br>**默认值**：`open_id`<br>**当值为 `user_id`，字段权限要求**：<br>获取用户 user ID(contact:user.employee_id:readonly)

## 响应

### 响应体

名称 | 类型 | 描述
---|---|---
code | int | 错误码，非 0 表示失败
msg | string | 错误描述
data | \- | \-
items | message.reaction\[\] | 表情回复列表。
reaction_id | string | 表情回复 ID。
operator | operator | 添加表情回复的操作人
operator_id | string | 操作人 ID，具体的取值与 `operator_type` 相关：<br>- 当 `operator_type` 取值 `app` 时返回机器人的应用 ID（app_id）。<br>- 当 `operator_type` 取值 `user` 时返回用户的 ID（ID 类型与查询参数 `user_id_type` 的取值一致）。
operator_type | string | 操作人身份。<br>**可选值有**：<br>- app：应用<br>- user：用户
action_time | string | 添加消息表情回复的时间。Unix 时间戳，单位：ms
reaction_type | emoji | 表情类型
emoji_type | string | emoji 类型。emoji_type 值对应的表情参考[表情文案说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message-reaction/emojis-introduce)。
has_more | boolean | 是否还有更多项
page_token | string | 分页标记，当 has_more 为 true 时，会同时返回新的 page_token，否则不返回 page_token

### 响应体示例
```json
{
    "code": 0,
    "msg": "success",
    "data": {
        "items": [
            {
                "reaction_id": "ZCaCIjUBVVWSrm5L-3ZTw****",
                "operator": {
                    "operator_id": "ou_ff0b7ba35fb****",
                    "operator_type": "user"
                },
                "action_time": "1626086391570",
                "reaction_type": {
                    "emoji_type": "SMILE"
                }
            }
        ],
        "has_more": true,
        "page_token": "YhljsPiGfUgnVAg9urvRFd-BvSqRL****"
    }
}
```

### 错误码

HTTP状态码 | 错误码 | 描述 | 排查建议
---|---|---|---
400 | 230110 | Action unavailable as the message has been deleted. | 消息被删除，无法进行操作。
400 | 231001 | reaction type is invalid. | 表情类型不合法。请参考[表情文案说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message-reaction/emojis-introduce)，设置正确的 emoji_type 值。
400 | 231003 | The message is not found, maybe not exist or deleted. | 找不到目标消息，可能因为传入的消息 ID 有误或者消息已经被撤回。
400 | 231008 | The operator has no access to the message. | 操作人对该消息没有访问权限，通常是因为操作人不在消息所在会话内。
400 | 231012 | The request has an invalid pageToken. | page_token 参数不合法。请根据 page_token 参数描述，设置正确的值。
400 | 231013 | The request has an invalid AuthType. | 请求的授权方式不合法。没有使用 tenant_access_token 或者 user_access_token 进行授权。
400 | 231014 | user_id_type is invalid. | user_id_type 不合法。未使用 open_id，union_id，user_id 三者之一。
400 | 231018 | The message is invisible to the operator. | 该消息对于操作者不可见，无法进行本操作。

更多错误码信息，参见[通用错误码](https://open.feishu.cn/document/ukTMukTMukTM/ugjM14COyUjL4ITN)。

