流程
1
签发监控凭证
你的后端使用 API 密钥和用户的
vendor_data 调用 POST /v3/events/sdk-token/。2
从设备提交
应用携带
X-Monitoring-Token 请求头,向 POST /v1/events/(或 POST /v1/events/batch/)发送请求。3
规则照常运行
事件会经过信息补充和汇总处理,并由与评估服务端提交事件时完全相同的规则进行评估。
签发凭证
签发凭证要求应用已开启事件接入。在其关闭期间,该 endpoint 会返回
403 及 {"code": "event_monitoring_disabled"},而不会签发一个永远无法用于写入事件的凭证。提交
服务器端强制执行的约束
- 主体绑定。 凭证在签发时即限定于一个
vendor_data。请求体中的subject块会被覆盖,因此被篡改的客户端无法写入其他用户的时间线。 - 网络上下文。 IP 地址、用户代理、accept-language 和 origin 均从请求中推导得出。在规则评估时,这些由服务器推导的值优先于客户端提供的任何提示。规则证据会以字段来源的形式记录两者之间的差异。
- 类别范围。 限定为
session的凭证无法提交payment事件,此类请求会被拒绝,并返回400。 - 使用次数预算。 批量请求按每个事件消耗一次使用次数,因此 500 个事件的批量请求不能被当作单次使用,从而绕过只有 10 次使用次数的凭证。
- 来源绑定。 设置
bind_to_origin后,Origin不匹配的请求会被拒绝,没有Origin的请求同样会被拒绝。
批量处理
背压时丢弃哪些事件
如果必须舍弃事件,应优先舍弃成本较低的事件。以下事件可以安全丢弃:session.page_view · session.sdk_heartbeat · session.sdk_loaded · session.device_seen · session.bot_signal_observed · bonus.promotion_viewed · affiliate.referral_clicked
以下事件不可丢弃,应优先发送:
所有 security、payment、dispute 和 responsible_gambling 事件,以及 gameplay.bet_placed、gameplay.bet_settled 和 gameplay.p2p_settlement。
列表接口会为每个事件返回相同的分类结果,即 is_droppable 字段。因此客户端可以依据该字段决定丢弃逻辑,而无需硬编码一份副本。
请求头兼容性
标准请求头为X-Monitoring-Token。X-Transaction-Token 作为临时别名被接受,以便已使用交易凭证路径的应用可以逐步迁移。
选择通道
两种通道生成的事件记录完全相同,运行的规则也完全相同。只要不存在终端用户,就应使用服务端通道。
后续步骤
事件接入
包括信封结构、类别、保留期和幂等性。
事件上的规则
包括速率、比率、序列和关联规则。