即时通信 IM IM 消息推送回调

开启推送插件后,IM 消息触发的离线推送结果可以通过配置基础回调的方式,将结果转发给 App 后台。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、注意事项

·要启用回调,必须配置回调 URL,并打开本回调对应的开关,配置方法详见 第三方回调配置 文档。

·回调的方向是即时通信 IM 后台向 App 后台发起 HTTP POST 请求。

·App 后台在收到回调请求之后,务必校验请求 URL 中的参数 SDKAppID 是否是自己的 SDKAppID。

·其他安全相关事宜请参见 第三方回调简介:安全考虑 文档。

二、请求 URL 示例

以下示例中 App 配置的回调 URL 为 https://www.example.com
示例:

https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json

三、请求参数说明

字段 说明
https 请求协议为 HTTPS。请求方式为 POST。
www.example.com 回调 URL。
SdkAppid 创建应用时在即时通信 IM 控制台分配的 SDKAppID。
CallbackCommand 固定为:Push.OfflinePush。
contenttype 请求包体固定为 json。

四、请求包示例

{ "Events": [ // events数组长度范围为1~100 { "CallbackCommand":"Push.OfflinePush", "EventType": 1, // 事件类型,EventType=1表示单聊 "EventTime": 1557481127, // 事件发生时间戳, 单位为秒 "From_Account": "user1", // 发送者 "To_Account": "user2", // 接受者 "PushPlatform": 1, // 推送厂商 "PushStage": 1, // 推送阶段 "VendorInfo": { "FCM": { // 消息推送到FCM,这里包含了FCM厂商信息 "PushID": "xxxx", // 推送到FCM后,FCM推送返回的FCM厂商推送ID "ChannelID": "xxxx" // 发起推送时设置的FCM通知渠道字段值 }, }, "MsgKey": "48374_2837546_1557481126", // 单聊消息的唯一标识 "MsgSeq": 48374, // 消息序列号 "MsgRandom": 2837546, // 消息随机数 "MsgTime": 1557481126, // 消息的发送时间戳,单位为秒 "PushID": "67120c46_6a4086c0_9bf5fb50_200002d1089b322_2000005d8d46421", // 推送唯一标识 "ErrCode": 0, // 推送事件结果 "ErrInfo": "OK" // 推送事件结果描述,可能为空 }, { "CallbackCommand":"Push.OfflinePush", "EventType": 2, // 事件类型,EventType=2表示群聊 "EventTime": 1557481127, // 事件发生时间戳, 单位为秒 "From_Account": "user2", // 发送者 "To_Account": "user3", // 接受者 "PushPlatform": 1, // 推送厂商 "PushStage": 1, // 推送阶段 "VendorInfo": { "Hmony": { // 消息推送至鸿蒙,这里包含了鸿蒙厂商信息 "PushID": "xxxx" // 推送到鸿蒙后,鸿蒙推送返回的鸿蒙推送ID }, }, "GroupID": "@TGS#12DEVUDHQ", // 群聊的群组 ID "MsgSeq": 48375, // 消息序列号 "MsgRandom": 2837546, // 消息随机数 "MsgTime": 1557481126, // 消息的发送时间戳,单位为秒 "PushID": "6710c631_85_392fcbcff_200000b2f2c6820_200002c869bfb81", // 推送唯一标识 "ErrCode": 0, // 推送事件结果 "ErrInfo": "OK" // 推送事件结果描述,可能为空 }, …. ]}

五、请求包字段说明

字段 类型 说明
Events Array [ Event Object ] 批量回调内容,最多包含100个回调事件(Event Object)的数据。

六、Event Object结构

字段 类型 说明
CallbackCommand String 回调命令。
EventType Integer 事件类型:EventType = 1表示单聊。EventType = 2表示群聊。
EventTime Integer 事件发生时间戳, 单位为秒。
From_Account String 消息发送者 UserID。
To_Account String 消息接收者 UserID。
PushPlatform Integer 推送厂商:PushPlatform = 0表示未知厂商。PushPlatform = 1表示 Apple APNs 推送。PushPlatform = 2表示小米推送。PushPlatform = 3表示华为推送。PushPlatform = 4表示 Google FCM 推送。PushPlatform = 5表示魅族推送。PushPlatform = 6表示 OPPO 推送。PushPlatform = 7表示 vivo 推送。PushPlatform = 8表示荣耀推送。PushPlatform = 9表示鸿蒙推送。
PushStage Integer 推送阶段:PushStage = 1表示推送发送阶段。PushStage = 2表示推送触达阶段。PushStage = 3表示推送点击阶段。
VendorInfo Object 推送发送给厂商时设置的关键参数以及厂商返回的推送ID,如果推送发送成功了但是设备没有收到,用户可以获取这个ID去厂商自助咨询具体原因。注意:这个字段只有在PushStage = 1时才会带上。发往不同推送厂商的信息封装到不同的Object里:APNs:Object,苹果推送信息,推送发给 APNs 时才有这个字段。字段内容见下面对 APNs 对象 的描述。XiaoMi:Object,小米推送信息,推送发给小米时才有这个字段。字段内容见下面对 XiaoMi 对象 的描述。HuaWei:Object,华为推送信息,推送发给华为时才有这个字段。字段内容见下面对 HuaWei 对象 的描述。FCM:Object,Google FCM 推送信息,推送发给 FCM 时才有这个字段。字段内容见下面对 FCM 对象 的描述。Meizu:Object,魅族推送信息,推送发给魅族时才有这个字段。字段内容见下面对 Meizu 对象 的描述。OPPO:Object,OPPO 推送信息,推送发给 OPPO 时才有这个字段。字段内容见下面对 OPPO 对象 的描述;Vivo:Object,vivo 推送信息,推送发给 Vivo 时才有这个字段。字段内容见下面对 Vivo 对象 的描述。Honor:Object,荣耀推送信息,推送发给荣耀时才有这个字段。字段内容见下面对 Honor 对象 的描述。Hmony:Object,鸿蒙推送信息,推送发给鸿蒙时才有这个字段。字段内容见下面对 Hmony 对象 的描述。
MsgKey String 单聊消息的唯一标识,仅在 EventType = 1时有效。群聊时该字段为空。
GroupID String 群聊的群组 ID,仅在 EventType = 2时有效。单聊时该字段为空。
MsgSeq Integer 消息序列号,用于标记该条消息(32位无符号整数)。
MsgRandom Integer 消息随机数,用于标记该条消息(32位无符号整数)。群聊时该字段为空。
MsgTime Integer 消息的发送时间戳,单位为秒。
PushID String 推送唯一标识,可以用 PushID 在 IM 控制台查询推送下发情况。
ErrCode Integer 推送事件结果:ErrCode = 0表示成功。ErrCode 非0表示失败。
ErrInfo String 推送事件结果描述,可能为空。

七、VendorInfo 下的各个厂商 Object 对象描述:

APNs Object 描述

字段 类型 说明
PushID string 推送成功后,APNs 返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询 APNs 推送时可能需要提供这个 ID 用于排查问题。
MutableContent Integer 发起推送时设置的参数。含义:为 1 表示开启 iOS 10+ 的推送扩展,默认为0。
InterruptionLevel string 发起推送时设置的参数。含义:iOS 15+ 的推送通知级别,取值只能是 active、critical、passive、time-sensitive 中的一个,详情请参见:APNs InterruptionLevel 描述。
ContentAvailable Integer 发起推送时设置的参数。为 1 表示是 iOS 静默推送,无通知栏弹窗,苹果建议1小时最多推送3条静默消息。详情请参见:APNs Background Notification。

XiaoMi Object 描述

字段 类型 说明
PushID string 推送成功后,小米返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询小米推送时可能需要提供这个 ID用于排查问题。
ChannelID string 发起推送时设置的参数。含义:小米推送 MIUI 10 及以上的通知类别(Channel)适配字段。详细请参见:小米消息分类。该字段不为空时,会覆盖控制台推送证书配置的 ChannelID 值。

HuaWei Object 描述

字段 类型 说明
PushID string 推送成功后,华为返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询华为推送时可能需要提供这个 ID 用于排查问题。
ChannelID string 发起推送时设置的参数。含义:华为推送 EMUI 10.0 及以上的通知渠道字段。该字段不为空时,会覆盖控制台推送证书配置的 ChannelID 值。
Category string 发起推送时设置的参数。含义:华为推送消息分类,用于标识消息类型,详细请参见: category 描述。该字段不为空时,会覆盖控制台推送证书配置的 category 值。

FCM Object 描述

字段 类型 说明
PushID string 推送成功后,FCM 返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询 FCM 推送时可能需要提供这个 ID 用于排查问题。
ChannelID string 发起推送时设置的参数。含义:Google 推送 Android 8.0 及以上的通知渠道字段。

Meizu Object 描述

字段 类型 说明
PushID string 推送成功后,魅族返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询魅族推送时可能需要提供这个 ID 用于排查问题。
NoticeMsgType integer 发起推送时设置的参数。含义:魅族推送消息分类,“0”代表公信消息,“1”代表私信消息,详细请参见:魅族消息分类说明。该字段不为空时,会覆盖控制台魅族推送证书配置的消息分类。

OPPO Object 描述

字段 类型 说明
PushID string 推送成功后,OPPO 返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询 OPPO 推送时可能需要提供这个 ID 用于排查问题。
ChannelID string 发起推送时设置的参数。含义:OPPO 推送 Android 8.0 及以上的 NotificationChannel 通知适配字段。该字段不为空时,会覆盖控制台推送证书配置的 ChannelID 值。
Category string 发起推送时设置的参数。含义:OPPO 推送消息分类,用于标识消息类型,详细请参见: category 描述。该字段不为空时,会覆盖控制台推送证书配置的 category 值。

Vivo Object 描述

字段 类型 说明
PushID string 推送成功后,vivo 返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询 vivo 推送时可能需要提供这个 ID 用于排查问题。
Category string 发起推送时设置的参数。含义:vivo 推送消息分类,用于标识消息类型,详细请参见 category 描述。该字段不为空时,会覆盖控制台推送证书配置的 category 值。

Honor Object 描述

字段 类型 说明
PushID string 推送成功后,荣耀返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询荣耀推送时可能需要提供这个 ID 用于排查问题。
Importance string 发起推送时设置的参数。含义:荣耀推送消息分类,取值为 LOW、NORMAL,详细请参见:荣耀消息分类。

Hmony Object 描述

字段 类型 说明
PushID string 推送成功后,鸿蒙返回的厂商推送 ID,推送失败时该字段可能为空。如未收到推送,咨询鸿蒙推送时可能需要提供这个 ID 用于排查问题。

八、应答包示例

{ "ActionStatus": "OK", "ErrorInfo": "", "ErrorCode": 0 // 0为回调成功,1为回调出错}

九、应答包字段说明

字段 类型 说明
ActionStatus String 请求处理的结果:OK 表示处理成功。FAIL 表示失败。
ErrorCode Integer 错误码。
ErrorInfo String 错误说明。
赞 (0)
上一篇 4天前
下一篇 4天前