消息回调设置 vip
如果需要获得一条消息对于所有目标的发送状态,可以在高级功能-回调设置中配置一个回调地址,勾选所需回调的状态类型,开启回调即可。
此功能仅针对极光 VIP 用户提供,提供「目标有效/无效、提交成功/失败、送达成功/失败、点击、撤回成功/失败」9 种消息状态,需在官网控制台设置所需回调的状态。
如需要开通此功能,请联系:商务客服
控制台配置操作说明
添加的第一个回调地址将自动被设置为默认地址,默认地址不允许删除。详细说明见控制台操作指南
在调用 rest API 发送消息时可以设置临时的 callback 地址,该地址必须在控制台进行配置才有效,控制台允许添加最多 5个回调地址。当发送消息未设置临时 callback 地址时,回调消息将回调给默认地址。 当关闭回调开关后,将不再进行消息回调。
可以对回调地址进行有效性测试、删除、设为默认地址。
回调地址的有效性验证
回调地址必须以 http:// 或 https:// 开头,不支持自定义端口。填写后点击测试,校验通过后才可以使用。
校验规则:极光将给回调 URL 发起一个 GET 请求并附带一个随机字符串的参数 echostr,开发者需要在 Response Body 里原样输出 echostr 的值。
请求示例:curl -X GET http://callback2pc.com/my/callback/api/sd\?echostr\=571fd1bfaadc4919a652d56d13925e0f -u 'channelkey:MasterSecret'
测试通过后将自动添加进回调地址列表。
回调方式
当有回调消息时,将采用 HTTP POST 的方式向开发者填写的回调 URL 提交通知消息。需要注意的是,如果回调失败,那么极光将会在一定的时间间隔后重试,重试回调的时间间隔为 50 秒,最多重试 3 次,3 次均失败则丢弃
如果开发者的回调服务返回了 HTTP code 200,则表示回调成功,否则认为回调失败。
数据将采取批量回调的方式:每 100个数据回调一次,如果超过 10 秒没有 100 个数据也回调。
回调的安全校验
如果需要校验回调信息是否来自于极光,开发者服务器可以校验极光请求头(HTTP Header)中的Authorization信息,详细说明如下:
1、格式:Authorization: Basic ${base64_auth_string}。
2、base64_auth_string 的生成算法为:base64(Channelkey:MasterSecret)
3、Channelkey 和 MasterSecret 可以在渠道信息中获取到,开发者将接收到的 Authorization 和自己本地代码按照同样规则生成的 Authorization 作对比,如果一致,则可以认定此回调来自极光。
回调参数
字段名 | 字段类型 | 字段说明 |
---|---|---|
type | int | 类型,取值为0:目标有效/1:目标无效/2:提交成功/3:提交失败/4:送达成功/5:送达失败/6:点击/7:撤回成功/8:撤回失败 |
channelkey | String | 该条记录所对应的渠道的channelKey |
msgid | String | 该条记录所对应的msgid |
userid | String | 该条记录所对应的用户userid,使用自定义通道ID发送时值为空 |
sender_id | String | 该条记录所对应的通道注册ID。向通道下发消息后产生的所有记录,以及使用自定义通道ID发送时有值。举例:如果是App通道,则sender_id就是App的registrationID |
sender | int | 该条记录所对应的下发通道/处理模块,取值:0:UMS系统/1:App/2:微信公众号/3:微信小程序/4:邮件/5:短信/6:钉钉/7:支付宝生活号/9:5G消息 |
wechatwk_sender | int | 企业微信通道的通道类别,sender=10(企业微信)时有值,取值 :0:企业微信内部接口(默认),1:企业微信互联企业发送接口 |
app_platform | int | App消息下发所对应的设备的操作系统,取值:sender=1(App)时有值,0:Android/1:iOS/2:Web/3:QuickApp |
app_sender | int | App厂商通道,取值:sender=1(App)时有值,0:极光/1:华为/2:OPPO/3:vivo/4:小米/5:魅族/6:FCM/8:APNS |
sent_time | long | 产生该记录的时间点,秒级时间戳 |
error | JSON Object | 无效/提交失败/送达失败原因,当type=1、3、5、8时有值,{"code":,"message":""} |
params | JSON Object | 自定义参数,用户在发送消息请求时在 callback 里自行指定的参数 |
回调消息体示例:
[{
"type": 3,
"channelkey":"xxxxxxx",
"msgid": "11111",
"userid": "xxxxxxx",
"sender": 1,
"app_platform": 0,
"app_sender": 0,
"sent_time": 1557133599,
"error": {"code":1014,"message":""},
"params": {
"name":"joe",
"age":26
}
},{
"type": 3,
"channelkey":"xxxxxxx",
"msgid": "11111",
"user_id": "xxxxxxx",
"sender": 1,
"app_platform": 0,
"app_sender": 0,
"sent_time": 1557133599,
"error": {"code":1014,"message":""},
"params": {
"name":"joe",
"age":26
}
}]
测试 demo
对于回调的安全性、有效性校验,极光提供了一个demo,可以使用该工具在企业的服务器上实现校验,或参考代码自行实现。