logo
当前页

发送礼物


描述

调用此接口触发弹幕游戏内的送礼事件,会在弹幕游戏客户端产生相应的效果。

注意
  • 送礼事件需要在用户加入游戏之后才能进行,如用户送礼行为发生时未加入游戏,则送礼失败(极少部分游戏有特殊情况,可联系技术支持确定)。
  • 请以房间的维度,合并用户的礼物消息,再请求至此接口,建议每 50-200 ms 整合一次用户的送礼消息。

接口原型

  • 请求方法:POST
  • 请求地址:https://mini-game-api.zego.im/?Action=SendDanmakuGifts
  • 传输协议:HTTPS
  • 调用频率限制:20 次/秒(以房间为维度)

请求参数

以下请求参数列表仅列出了接口请求参数,公共参数列表请参考 调用方式 - 公共请求参数

参数类型是否必选描述
RoomIdString房间 ID,由您定义,长度上限为 64 字符。
MiniGameIdString游戏 ID,请联系 ZEGO 技术支持获取。
GiftListArray of Object整合后的送礼列表。详细请参考 GiftList 参数说明

GiftList 参数说明:

参数类型是否必选描述
UserInfoObject用户信息对象。详细请参考 UserInfo 参数说明
GiftInfoObject送礼信息对象。详细请参考 GiftInfo 参数说明
ReceiverIdString接收礼物用户 ID。当多主播同房间 PK 时,需要此数据,便于记录。
TimestampNumber送礼事件发生时的 Unix 时间戳,单位为 ms。
MsgIdString送礼消息 ID,由您生成,表示单次送礼的消息记录 ID,用于保证礼物消费幂等以及查询送礼结果,需保至少 24 小时内唯一。24 小时内使用重复的 MsgId 会返回第一次的送礼结果,不会重复赠送。长度上限为 64 字符,支持数字、英文和 '_','-'。

GiftInfo 参数说明:

参数类型是否必选描述
GiftIdString礼物 ID。具体礼物 ID,请联系 ZEGO 技术支持。
ValueNumber单个效果所需的礼物数量。 非必填,仅当礼物 ID 需要因一次性送出的礼物数量(Value)不同而触发不同效果时,才为必填。
具体数量与效果的关系,请联系 ZEGO 技术支持进行约定,若未约定则为 1。
说明

用户不能随意送出任意份数的礼物,需要按照游戏规则提前约定的枚举值,送出指定数目的礼物。

例如,当游戏规定 5 份礼物 A,才能召唤一个士兵,则用户送礼时,Value 应该为 5

NumNumber

所需游戏效果份数。

Giftid + Value 对应的触发游戏效果,为提前约定的游戏规则,与具体游戏相关。GiftId、Value 和 Num 的传入说明请见 下文

UserInfo 参数说明:

参数类型是否必选描述
UserIdString参与游戏的用户 ID,由您定义,长度上限为 48 字符,只允许数字和英文。
注意
  • 请保证 UserId 在相同的 appID 下全局唯一。
  • 如果您业务的账号系统中的用户 ID 采用了其他规则,请自行实现映射。
NicknameString用户昵称,由您定义,长度上限为 32 字符。
AvatarString用户头像的地址,必须是有效的 HTTP/HTTPS 地址,且长度在 1024 字节以内。
SexNumber用户性别。
  • 1:男。
  • 2:女。

GiftId、Value 和 Num 的传入说明

Num(游戏效果份数)与 GiftID(礼物)和 Value(每份效果所需礼物份数)有关,且受具体游戏规则影响,详情请联系 ZEGO 技术支持。

例如:游戏 A 规定:

  • “火箭”(礼物)的 GiftId 为 g1。
  • 一次性发送 10 个 “火箭”,即可在游戏中召唤一个“小兵”(效果)。
  • 一次性发送 66 个“火箭”,即可在游戏中召唤一个“大将”(效果)。

游戏过程中可能有以下几种情况:

  • 当观众希望送出 20 个“火箭”在游戏中出两个小兵,则此时传入的 GiftInfo 数值为:

    Untitled
    "GiftInfo": {
        "GiftId": "g1",
        "Value": 10,
        "Num": 2
    }
    
    1
    Copied!
  • 当观众希望送出 66 个火箭在游戏中出一个大将,则此时传入的数值为:

    Untitled
    "GiftInfo": {
        "GiftId": "g1",
        "Value": 66,
        "Num": 1
    }
    
    1
    Copied!
  • 若开发者的数值与 ZEGO 技术支持约定的不符,则此时会返回错误信息,因为与约定的游戏规则不符。

    Untitled
    "GiftInfo": {
        "GiftId": "g1",
        "Value":30, // 30 不等于 10 或 66
        "Num": 1
    }
    
    1
    Copied!

请求示例

  • 请求 URL

    Untitled
    https://mini-game-api.zego.im/?Action=SendDanmakuGifts
    &<公共请求参数>
    
    1
    Copied!
  • 请求消息体

    Untitled
    {
      "RoomId": "room123",
      "MiniGameId": "TinyLoveWar",
      "GiftList": [
        {
          "UserInfo": {
            "UserId": "user1",
            "Nickname": "test1",
            "Avatar": "http://",
            "Sex": 1
          },
          "GiftInfo": {
            "GiftId": "g1",
            "Value": 5,
            "Num": 2
          },
          "Timestamp": 12312312,
          "ReceiverId":"anchor111",
          "MsgId":"445623452643416236"
        }
      ]
    }
    
    1
    Copied!

响应参数

参数类型描述
CodeInt64错误码。
MessageString请求结果的说明信息。
RequestIdString请求 ID。
DataObject返回的具体信息。
ResultsArray of Object礼物弹幕处理结果列表。
ResultNumber处理结果。0 表示成功,其余为失败。
MsgString失败原因。
MsgIdString处理结果对应的礼物唯一 MsgId。

送礼失败分为两种情况:

  • 错误码 code != 0,则全部礼物赠送失败,MsgId 不会被记录,可直接重试,无需重新生成 MsgId。
  • 错误码 code == 0,则礼物请求全部消费成功;但可能存在部分礼物赠送成功、部分礼物赠送失败,具体礼物是否成功以及失败原因见响应体中 Result 参数。若需对赠送失败的礼物重新赠送,则需重新生成 MsgId。

响应示例

Untitled
{
    "Code": 0,
    "Message": "succeed",
    "RequestId": "abcd123",
    "Data": {
        "Results": [
          {
            "Result": 0,
            "Msg": "success",
            "MsgId":"445623452643416236"
          }
        ]
    }
}
1
Copied!

返回码

以下仅列出了接口业务逻辑相关的返回码,完整返回码请参考 全局返回码

返回码描述说明处理建议
7202001

游戏未找到,可能造成的原因包含:

  • MiniGameId 输入错误。
  • 未开通此游戏的权限。
  • 请检查 MiniGameId 是否正确。
  • 请联系 ZEGO 商务人员开通此游戏的权限。
7202002MiniGameId 格式错误。请确认格式是否为 String。
7206001游戏未开始。请确认游戏开始后再送礼。

Result 处理结果码

返回码描述说明处理建议
10003

送礼失败,可能造成的原因包含:

  • 用户未加入游戏。
  • 房间不存在或已结束。未知错误。
请联系 ZEGO 技术人员排查问题。
10004未配置对应礼物。请确认礼物是否已配置。
10005送礼异常。请联系 ZEGO 技术支持排查问题。
10006MsgId 对应的送礼请求正在处理中。请稍后重试。

Previous

发送评论

Next

查询礼物发送结果