目录

消息回调

应用场景

消息回调功能可以帮助应用方完全掌控App使用情况,回调消息数据可用于数据挖掘、统计、监控、App保活等。

回调发送与失败重试

回调服务将App用户的即时消息和离线消息POST发给应用方,回调服务收到返回200状态码则表示接收成功
用户发送的完整消息体base64编码后放置在payload字段中
当消息回调失败时,系统会重试最多3次(5s后,30s后,5min后)

如何接入

管理平台:https://admin.mimc.chat.xiaomi.net

回调格式

单聊即时消息回调

  • Post的body中JSON字符串结果
    {
      "msgType":"NORMAL_MSG", // 表示单聊即时消息
      "fromAppId":$fromAppId,
      "fromAccount":$fromAccount,
      "fromResource":$fromResource,
      "toAppId":$toAppId,
      "toAccount":$toAccount,
      "toResource":$toResource,
      "payload":$payload, // 消息体Base64编码后数据
      "timestamp":$timestamp,
      "packetId":$packetId, //客户端生成的消息ID
      "sequence":$sequence, //服务器为消息分配的递增ID,可用于去重/排序
      "bizType":$bizType, // 可用于表示消息类型扩展字段
      "authentication":$value //value是用AES算法对timestamp_appId加密的,加密key基于appsecurity的md5值;
    }
    

    单聊离线消息回调

  • Post的body中JSON字符串结果
    {
      "msgType":"OFFLINE_MSG", // 表示单聊离线消息
      "fromAppId":$fromAppId,
      "fromAccount":$fromAccount,
      "fromResource":$fromResource,
      "toAppId":$toAppId,
      "toAccount":$toAccount,
      "toResource":$toResource,
      "payload":$payload, // 消息体Base64编码后数据
      "timestamp":$timestamp,
      "packetId":$packetId, //客户端生成的消息ID
      "sequence":$sequence, //服务器为消息分配的递增ID,可用于去重/排序
      "bizType":$bizType, // 可用于表示消息类型扩展字段
      "authentication":$value, //value是用AES算法对timestamp_appId加密的,加密key基于appsecurity的md5值;
      "offlineResources":[$Resource1,$Resource2,...,$ResourceN]//所有离线设备
    }
    

    群聊即时消息回调

  • Post的body中JSON字符串结果
    {
      "msgType":"NORMAL_TOPIC_MSG", // 表示群聊即时消息
      "appId":$appId,
      "topicId":$topicId,
      "fromAccount":$fromAccount,
      "fromResource":$fromResource,
      "toAccounts":[$toAccount1,$toAccount2,...,$toAccountN], //群组内所有用户
      "payload":$payload, // 消息体Base64编码后数据
      "timestamp":$timestamp,
      "packetId":$packetId, //客户端生成的消息ID
      "sequence":$sequence, //服务器为消息分配的递增ID,可用于去重/排序
      "bizType":$bizType, // 可用于表示消息类型扩展字段
      "authentication":$value //value是用AES算法对timestamp_appId加密的,加密key基于appsecurity的md5值;
    }
    

    群聊离线消息回调

  • Post的body中JSON字符串结果
    {
      "msgType":"OFFLINE_TOPIC_MSG", // 表示群聊即时消息
      "appId":$appId,
      "topicId":$topicId,
      "fromAccount":$fromAccount,
      "fromResource":$fromResource,
      "toAccounts":[$toAccount1,$toAccount3,...,$toAccountK], //群组内未收到消息的用户
      "payload":$payload, // 消息体Base64编码后数据
      "timestamp":$timestamp,
      "packetId":$packetId, //客户端生成的消息ID
      "sequence":$sequence, //服务器为消息分配的递增ID,可用于去重/排序
      "bizType":$bizType, // 可用于表示消息类型扩展字段
      "authentication":$value, //value是用AES算法对timestamp_appId加密的,加密key基于appsecurity的md5值;
      "offlineAccounts":[{
         "toAccount":$toAccount1,
         "offlineResources":[$Resource1,$Resource2,...,$ResourceN], //账户($toAccount1)的离线设备
       },
       {
         "toAccount":$toAccount2,
         "offlineResources":[$Resource1,$Resource2,...,$ResourceN], //账户($toAccount2)的离线设备
       },
       ...
       {
         "toAccount":$toAccountN,
         "offlineResources":[$Resource1,$Resource2,...,$ResourceN], //账户($toAccountN)的离线设备
       }
       ]//所有的离线设备
    }
    

    超级大群消息回调

  • Post的body中JSON字符串结果
    {
      "msgType":"UCTOPIC_MSG", // 表示超级大群即时消息
      "appId":$appId,
      "topicId":$topicId,
      "fromAccount":$fromAccount,
      "fromResource":$fromResource,
      "payload":$payload, // 消息体Base64编码后数据
      "timestamp":$timestamp,
      "packetId":$packetId, //客户端生成的消息ID
      "sequence":$sequence, //服务器为消息分配的递增ID,可用于去重/排序
      "bizType":$bizType, // 可用于表示消息类型扩展字段
      "authentication":$value //value是用AES算法对timestamp_appId加密的,加密key基于appsecurity的md5值;
    }
    

    备注1

超级大群的消息场景只存在在线的情况,所以这里的消息回调统一指在线即时消息回调。

备注2

"authentication":$value,加密流程图:

"authentication":$value,解密流程图:

加密和解密的key都是同一个appsecurity的md5值

回到顶部

results matching ""

    No results matching ""