# 推送直播间消息 (/zh-CN/api-reference/api-ref/danmaku/push-message)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

向直播间推送礼物、评论和点赞消息。

- OpenAPI: /openapi/danmaku/danmaku.zh-CN.yaml
- Operation ID: push-message
- Method: POST
- Path: /bullet-game/api/live-data/games/{gameid}/rooms/${roomid}/msgType/{msg_type}:push
- Endpoint: https://{domain}/v2/projects/{appid}/bullet-game/api/live-data/games/{gameid}/rooms/${roomid}/msgType/{msg_type}:push

## Servers

- https://{domain}/v2/projects/{appid}

:::warning[注意]
- 调用频率限制：单个直播间调用上限为 200 次/秒。
- 建议平台侧对单个用户做消息聚合，以减小请求数。
- 当 QPS 达到容量后建议在服务端做退避策略，例如第一次等待 3 秒，第二次等待 6 秒。
:::

## Parameters

- `Authorization` (header, required, string) - 发送 HTTP 请求时，你需要将用于游戏推流使用的 RTC Token 填入 HTTP 请求头部的 `Authorization` 字段。Token 生成方式请参考[使用 Token 鉴权](/zh-CN/realtime-media/rtc/build/setup-and-access/token-authentication)。
- `Content-Type` (header, required, string) - 数据类型，必须包含 `application/json`。
- `gameid` (path, required, string) - 游戏编号，调用[获取云游戏列表](/zh-CN/api-reference/api-ref/danmaku/get-cloud-game-list)获得。
- `roomid` (path, required, string) - 房间编号，以 `appid` 作为前缀的全局唯一房间 ID。
- `msg_type` (path, required, string) - 消息类型，支持以下三种：

- `live_gift`：礼物消息。
- `live_comment`：评论消息。
- `live_like`：点赞消息。

## Request body

根据推送的消息类型不同，请求包体中的 `payload` 字段内容也有所不同。
> [!CAUTION]
> - 支持单次调用提交多个与路径参数中的 `msg_type` 类型一致的 `payload`。
> - 三种消息类型的 `payload` 字段名均为 `payload`，参数说明中的中文仅作区分用，实际调用时需要删除。

- `items` (object)
  - `items.礼物-payload` (object)
    - `items.礼物-payload.msg_id` (string, required) - 全局唯一的消息 ID，以 APP ID 为前缀。
    - `items.礼物-payload.openid` (string, required) - 主播编号。以 `appid` 作为前缀的全局唯一主播 ID。
    - `items.礼物-payload.gift_id` (number, required) - 礼物 ID，需按约定的礼物编号发送。
    - `items.礼物-payload.gift_num` (integer, required) - 送出的礼物数量。
    - `items.礼物-payload.gift_value` (integer, required) - 礼物的价值，折算成分。
    - `items.礼物-payload.avatar_url` (string, required) - 主播头像 URL 地址，会显示在游戏中。
    - `items.礼物-payload.nickname` (string, required) - 主播昵称，会显示在游戏中。
    - `items.礼物-payload.timestamp` (number, required) - 消息推送时刻的毫秒级时间戳。误差须小于 60 秒，否则即使推送成功业务侧也无响应。
  - `items.评论-payload` (object)
    - `items.评论-payload.msg_id` (string, required) - 全局唯一的消息 ID，以 APP ID 为前缀。
    - `items.评论-payload.openid` (string, required) - 主播编号。以 `appid` 作为前缀的全局唯一主播 ID。
    - `items.评论-payload.content` (string, required) - 评论内容。
    - `items.评论-payload.avatar_url` (string, required) - 主播头像 URL 地址，会显示在游戏中。
    - `items.评论-payload.nickname` (string, required) - 主播昵称，会显示在游戏中。
    - `items.评论-payload.timestamp` (number, required) - 消息推送时刻的毫秒级时间戳。误差须小于 60 秒，否则即使推送成功业务侧也无响应。
  - `items.点赞-payload` (object)
    - `items.点赞-payload.msg_id` (string, required) - 全局唯一的消息 ID，以 APP ID 为前缀。
    - `items.点赞-payload.openid` (string, required) - 主播编号。以 `appid` 作为前缀的全局唯一主播 ID。
    - `items.点赞-payload.like_num` (integer, required) - 点赞数量，上游每 2 秒合并一次数据。
    - `items.点赞-payload.avatar_url` (string, required) - 主播头像 URL 地址，会显示在游戏中。
    - `items.点赞-payload.nickname` (string, required) - 主播昵称，会显示在游戏中。
    - `items.点赞-payload.timestamp` (number, required) - 消息推送时刻的毫秒级时间戳。误差须小于 60 秒，否则即使推送成功业务侧也无响应。

### Request body example

```json
[
  {
    "礼物-payload": {
      "msg_id": "abcxxxxxxxxx321_12345678",
      "openid": "abcxxxxxxxxx321_testopenid",
      "gift_id": 10001,
      "gift_num": 10,
      "gift_value": 10000,
      "avatar_url": "http://127.0.0.1/xxxxx.jpg",
      "nickname": "Player",
      "timestamp": 1699068964
    },
    "评论-payload": {
      "msg_id": "abcxxxxxxxxx321_12345678",
      "openid": "abcxxxxxxxxx321_testopenid",
      "content": "string",
      "avatar_url": "http://127.0.0.1/xxxxx.jpg",
      "nickname": "Player",
      "timestamp": 1699068964
    },
    "点赞-payload": {
      "msg_id": "abcxxxxxxxxx321_12345678",
      "openid": "abcxxxxxxxxx321_testopenid",
      "like_num": 123,
      "avatar_url": "http://127.0.0.1/xxxxx.jpg",
      "nickname": "Player",
      "timestamp": 1699068964
    }
  }
]
```

## Responses

### 200

OK

- `err_no` (integer) - 请求错误码，`0` 表示请求成功，非 `0` 表示请求失败，对应的错误原因和解决方案详见[响应状态码](/zh-CN/realtime-media/danmaku/reference/response-code)。
- `err_msg` (string) - `err_no` 为非 `0` 时附带的错误提示信息。
- `logid` (string) - 请求链路 id, 用于出现未知问题时提供给声网技术支持以便定位问题。
- `data` (object) - 请求成功时返回空对象。

## Response examples

### 200

```json
{
  "err_no": 0,
  "err_msg": "success",
  "logid": "1690000000352",
  "data": {}
}
```
