一、功能概述
事件回调功能用于当用户在你的应用内触发指定事件时,系统自动将事件数据及用户归因信息回传到你配置的服务器地址。
适用场景
-
实时获取用户行为事件数据
-
与自有 BI/数据系统进行打通
-
基于事件数据进行二次营销或分析
二、配置步骤
1.开启事件回调开关
在后台应用管理页面找到事件回调配置模块,打开开关以启用功能。
2.选择回调事件
在回调事件下拉框中,选择需要监听的事件类型(如激活、付费等)。
3.配置回调地址
注意:请确保该地址为可公网访问的域名,且服务稳定。
在回调地址输入框中,填写你的服务端接收数据的 URL。
4.配置回调参数(可选)
点击新增按钮,添加回调宏参数
系统会将这些参数追加到回调请求中,方便你在服务端进行识别。
| 参数类型 | 说明 | 示例 |
| 自定义参数 | 你自己定义的参数名 | turbo_app_id |
| 宏参数 | 系统预置宏参数变量,如引力 APPID | 引力 APPID |
5.设置请求方式
回调方法:固定为
POST6.设置超时与重试
| 配置项 | 默认值 | 说明 |
| 超时时长 | 2000 毫秒 | 服务端需在此时限内响应,否则视为超时 |
| 重试次数 | 1 次 | 请求失败后会自动重试的次数 |
三、签名生成
引力在触发事件回调时,会携带签名参数,您可以考虑校验该值来避免接口被滥用,计算签名的步骤如下
def get_sign(params: dict , access_token: str) -> str:
"""
@param params: 请求体参数
@param access_token: 引力 App 的 access_token(该参数在应用管理界面可以获取)
"""
param_list = []
for k, v in params.items():
if k == "sign":
continue
param_list.append(f"{k}={json.dumps(v,sort_keys=True)}")
param_list.sort()
sb = "&".join(param_list) + access_token
current_str = sb.replace("\"", "").replace(" ", "")
return hashlib.md5(current_str.encode("utf-8")).hexdigest()
四、回调数据结构说明
当事件触发后,引力服务端会以
POST 方式向你配置的回调地址发送以下 JSON 格式数据:请求体格式
{
"app_id": "your_app_id",
"client_id": "your_client_id",
"sign":"8bf4b8a9abadab70009b3f84cdd14eba",
"events": [{
"event": "eventname",
"time": 1779439377000,
"properties": {}
}],
"callback_params":{
"key1": "value1",
"key2": "value2"
}
}
字段说明
| 字段 | 类型 | 必填 | 说明 |
| app_id | String | 是 | 引力平台分配的应用 ID |
| client_id | String | 是 | 客户唯一标识 ID |
| sign | String | 是 | 签名,生成规则参考上方的签名生成 |
| events | Array | 是 | 事件列表,可同时包含多个事件 |
| events[].event | String | 是 | 事件名称(如 $UserAttribution,$PayEvent) |
| events[].time | Number | 是 | 事件发生时的毫秒级时间戳(Unix timestamp) |
| events[].properties | Object | 是 | 事件的事件属性,根据事件类型动态变化 |
| callback_params | Object | 是 | 你在配置界面添加的宏参数和自定义参数 |
五、接入示例
回调请求示例
curl -X POST "https://your-server.com/callback" \
-H "Content-Type: application/json" \
-d '{
"app_id": "your_app_id", // 引力的appID
"client_id": "your_client_id", // 客户ID
"sign":"8bf4b8a9abadab70009b3f84cdd14eba",//签名
"events": [ //事件列表
{
"event": "eventname", //事件名称
"time":1779439377000, //事件发生时的毫秒时间戳
"properties": { //事件属性
}
}
],
//配置的宏参数和自定义参数
"callback_params": {
"key1" :"value1",
"key2" :"value2"
}
}'
服务端响应要求
您的服务端收到回调后,应在超时时间内返回 HTTP
200 状态码且响应结果为json格式{"code":0}表示成功。 若返回非 200状态码或响应结果不为json格式{"code": 0}或超时,系统将按照配置的重试次数进行重试。