# 数据推送接入

# 1. 背景

在特定的业务场景中,平台可能需要接收腾讯游戏来联侧推送的数据。这些数据包括但不限于游戏用户的授权信息、游戏内的击杀事件等。这些数据推送并非必需接口,平台可以根据自身业务需求选择性地接入。

重要提示: 若涉及游戏用户相关数据,必须首先完成账号绑定数据授权步骤,以确保数据的合规性和安全性。

# 2. 使用场景示例

# 平台掉宝活动

想象一个场景,在平台的掉宝活动中,当主播在游戏中的账号触发局内击杀事件时,这个事件数据会被推送到平台。平台接收到数据后,可以触发直播间内的宝箱掉落动画,为观众带来实时的互动体验。这样的数据推送接入,不仅增强了用户的参与感,也提升了直播间的活跃度和观看体验。

通过优化数据推送接入流程,我们可以确保平台能够快速、准确地响应游戏内的事件,从而为用户提供更丰富、更即时的互动体验。同时,这也为平台提供了更多创新营销活动的可能性,有助于提升用户粘性和平台影响力。

gamedata_drop_box

“平台主播撞车”活动旨在通过接收和处理主播游戏账号的开局事件数据,判断是否有多个平台主播在同一局游戏中相遇。这种活动形式不仅增加了观众的观看乐趣,还能为主播间创造更多的互动机会,提升平台的活跃度和用户黏性。

gamedata_hit_on
  1. 数据接收:平台通过之前定义的接口规范,接收来自腾讯游戏来联侧的游戏开局事件数据。
  2. 数据解析:腾讯游戏来联对接收到的数据进行解析,提取出主播的游戏账号、游戏局ID等关键信息,并将主播UID推送给平台。
  3. 撞车判断:对比同一游戏局ID中的主播数量,如果有多于一个主播参与,则判定为“撞车”事件。
  4. 实时通知:一旦检测到“撞车”事件,平台应立即通过内部系统或API通知相关运营人员,以便进行后续的活动策划和推广。
  5. 观众互动:在检测到“撞车”事件后,平台可以通过弹幕系统、礼物系统等方式,引导观众进行互动,提升观看体验。
  6. 数据统计与分析:活动结束后,平台应对活动期间的数据进行统计和分析,包括“撞车”事件的发生频率、参与主播的活跃度、观众互动情况等,以便为未来的活动提供参考。

# 3. 接入步骤

  1. 设立数据接收接口: 平台侧需提供一个统一的HTTP(S) 数据接收接口,此接口将用于接收腾讯游戏来联侧推送的所有游戏数据。重要的是,所有的游戏数据都应通过这个统一接口进行推送。平台侧可以根据请求中的reqType或其他相关字段来判断数据类型,并将数据转发到相应的下游应用进行处理。
  2. 明确数据需求: 平台需要联系腾讯游戏来联侧的运营人员,明确具体的数据需求场景。在这一步中,双方应详细讨论并确定平台所需的游戏数据类型,例如用户授权信息、游戏内击杀事件等。
  3. 获取数据字段文档: 在腾讯游戏来联运营人员评估了平台的数据需求后,他们会提供一份具体的数据字段文档。这份文档将详细描述每个推送数据的字段含义、数据类型和格式等信息,是平台正确解析和处理数据的关键。
  4. 数据解析与处理: 根据腾讯游戏来联提供的数据字段文档,平台需要开发相应的数据解析逻辑。这些逻辑应能够准确地从接收到的数据中提取出所需信息,并将其转化为平台可以理解和使用的格式。解析完成后,数据应被转发到相应的下游应用进行进一步处理或存储。

# 注意事项

  1. 安全性 :在数据推送接入过程中,安全性是至关重要的。平台应确保接口的安全防护措施到位。首先,必须使用HTTPS协议进行数据传输,以确保数据的机密性和完整性。其次,为了验证数据的真实性和防止数据被篡改,腾讯游戏来联侧应对推送的数据进行签名。平台在接收到数据后,需要验证签名的有效性,确保数据来自可信的源并且没有在传输过程中被修改。
  2. 性能与稳定性:考虑到游戏数据的实时性和高频次推送特点,平台的接收接口应具备高性能和稳定性。这包括但不限于使用高性能的服务器和负载均衡技术,以确保数据的及时接收和处理。
  3. 错误处理与日志记录:在数据接入过程中,平台应建立完善的错误处理机制和日志记录系统。这有助于在出现问题时迅速定位和解决,同时也有助于后续的数据分析和优化工作。
  4. 重试机制 :为了确保数据的可靠传输,平台应实现一种重试机制。当数据推送后未收到接收方的正确响应,或者响应不符合预期时,系统会立即尝试重新推送数据,最多重试3次。这种重试机制可以有效应对网络波动、接收方暂时不可用等偶发情况,提高数据传输的成功率和可靠性。

# 4. 接口

# 请求路由

平台需提供一个稳定的HTTP(S)请求路由,用于接收腾讯游戏来联侧的数据推送。请求路由的格式应如下所示:

 `POST http(s)://xxxxx?id=xxx&tm=1569479430&nonce=12345&sign=xxxxxxxx`
1

# 签名计算

为了确保数据传输的安全性,所有请求都需要进行签名验证。签名计算方式如下:

sign = sha1(id + nonce + secret + tm)
1

请注意,加密前的原文是按变量名首字母的字母序拼接而成,中间不使用任何连接符。

  • id: 平台与腾讯游戏来联侧共同约定的标识,例如:tx。
  • nonce: 随机盐值,用于增强签名的安全性,例如:12345。
  • tm: 时间戳(以秒为单位),用于验证请求的时效性,例如:1680058682。
  • secret: 双方约定的加密密钥,用于确保签名的不可伪造性,例如:abctest。

则签名计算示例为:

sign = sha1(tx12345abctest1680058682) = 76c155787b9f1288072b0f3bf6cf661a56268bd4

1
2

# 通用请求参数

所有数据推送请求都应遵循以下JSON格式:

{
     "anchor": "", // 游戏事件触发者对应的平台uid
     "gameCode":"yxzj", // 游戏代号
     "reqType":"VideoPanelCallBackMsg_32_v3", // 数据类型标识
     "data":"{}" // 具体的数据,不同的reqType会填充不同的data,需要联系腾讯游戏来联运营获取对应的数据字段定义
 }
1
2
3
4
5
6
  • anchor: 表示游戏事件触发者在平台上的唯一标识符(UID)。
  • gameCode: 游戏的代号,用于区分不同的游戏。
  • reqType: 数据类型的标识,用于确定data字段中的数据结构。
  • data: 包含具体游戏事件数据的JSON对象,其结构根据reqType的不同而有所差异。

# 平台返回参数

平台在接收到数据推送后,应返回一个JSON格式的响应,以确认数据的成功接收。响应的格式应如下所示:

{
     "ret":0, // 非零表示失败 
     "msg":"ok"
}
1
2
3
4
  • ret: 返回码,0表示成功,非零值表示失败或出错。
  • msg: 返回消息,用于提供额外的处理结果或错误信息。在成功时,通常设置为"ok"。
lastUpdate: 4/15/2024, 3:00:04 PM