1、消息抄送功能是指將用戶發送的消息數據實時同步給第三方開發者的業務服務器。使用該功能之前,用戶需要開通專有云,并通過云通訊管理控制臺-IM專業功能配置-消息抄送選項添加抄送地址;如果未配置抄送地址,則不會進行消息抄送;
2、云通訊提供普通消息抄送和高保障消息抄送兩種方式。對于普通消息抄送,只進行一次抄送,抄送失敗,將不再重發;對于高保障消息抄送,抄送消息時,若開發者服務器處于離線狀態或者由于其他原因導致連接不上消息接收地址,導致抄送失敗。云通訊會嘗試抄送一定次數,若開發者服務器仍然無法連接,云通訊將停止抄送;
3、第三方服務器在收到云通訊IM服務器請求時,需要在超時時間(5s)內返回HTTP 200的狀態碼,否則云通訊IM服務器會判定請求超時,該條請求發送失敗。如果第三方消息接收接口在接收到消息之后,會做比較耗時的操作(例如DB入庫等操作),建議將該接口做成異步機制(例如可以將消息先存到MQ中),以免被云通訊判定為超時;
4、云通訊IM服務器通過HTTP POST方式向第三方回調地址發送請求。為了保證消息的合法性,第三方服務器需要對該請求進行校驗。校驗規則如下:Hearder頭中攜帶CheckSum、MD5、CurTime參數。第三方服務器收到云通訊請求后,生成CheckSum與云通訊Header中的CheckSum進行對比,如果一致,則校驗通過。CheckSum生成規則如下:CheckSum= MD5(AppId + AppToken+ MD5 + CurTime);
5、為了保證數據安全性,建議開發者使用HTTPS協議來接收請求。
CheckSum= MD5(AppId + AppToken+ MD5 + CurTime),參數說明如下:
參數 |
參數說明 |
---|---|
AppId |
登陸官網查看控制臺→應用列表→應用管理→APP ID |
AppToken |
登陸官網查看控制臺→應用列表→應用管理→APP TOKEN |
MD5 |
MD5值為根據request body計算出來的值, 即MD5值 = md5(request body) |
CurTime |
當前UTC時間戳,從1970年1月1日0點0 分0 秒開始到現在的毫秒數(String) |
重要提示:
用于計算CheckSum的AppId和AppToken開發者應妥善保管,可在應用的服務器端存儲和使用,但不應存儲或傳遞到客戶端,也不應在網頁等前端代碼中嵌入。
1、舉例
MD5值計算舉例 String requestBody = "{}"; String MD5 = MD5(requestBody); CheckSum值計算舉例 String AppId = "20150314000000110000000000000010"; String AppToken = "17E24E5AFDB6D0C1EF32F3533494502B"; String MD5 = "98949123123123123123123dasf61f7"; // 全大寫,第三方可以在驗證的時候忽略大小寫 String CurTime = "1440570500855"; //當前UTC時間戳,從1970年1月1日0點0 分0 秒開始到現在的毫秒數(String) String CheckSum = MD5(AppId + AppToken + MD5 + CurTime); // 全大寫,第三方可以在驗證的時候忽略大小寫 HTTP示例: POST /receiveMsg HTTP/1.1 Host: 192.168.0.1:8883 Content-Type: application/json CurTime: 1440570500855 MD5: feec2cda404d7417b8b427e95748bb56 CheckSum: 001511b8435e0b28044ca50a78e8f983026c5e01 {"eventType":"1","convType":"CUSTOM_TEAM","to":"g811575162", "fromAccount":"20150314000000110000000000000010#555555","fromClientType":"REST", "fromDeviceId":"","fromNick":"555555","msgTimestamp":"1503997379456","msgType":"TEXT","body":"容聯云通訊", "attach":"","msgId":"A3A479603AD942ADBEE7FCB38E90F4B8|sNNp1H","resendFlag":"0","customSaveFlag":"", "customApnsFlag":"","customApnsText":"", "tMembers":["20150314000000110000000000000010#666666","20150314000000110000000000000010#888888"], "atUser":["20150314000000110000000000000010#666666"],"ext":"","linkInfo":"","antispam":"false"}
注意:
會話類型消息中,并不是每個字段都會一定抄送,請注意對各字段的判空處理。
2、請求包體參數說明
名稱 | 類型 | 約束 | 說明 |
---|---|---|---|
eventType | String | 必選 | 值為1,表示是會話類型的消息 |
convType | String | 必選 | 會話具體類型: PERSON(單聊數據)、
TEAM(群聊數據)、 CUSTOM_PERSON(Rest個人推送)、CUSTOM_TEAM(Rest群組推送)、 NOTIFY_TEAM(群組通知) |
to | String | 必選 | 若convType為PERSON,則to為消息接收者的用戶賬號,字符串類型; 若convType為TEAM或CUSTOM_TEAM,則to為群組id; 若convType為CUSTOM_PERSON,則to為“REST”固定字符串, 接收者tMembers中存儲; 若convType為NOTIFY_TEAM,則to為群組id |
fromAccount | String | 必選 | 消息發送者的用戶賬號,字符串類型 |
fromClientType | String | 可選 | 發送客戶端類型: Android、IOS、IPAD、Android PAD、PC、H5、MAC、REST |
fromDeviceId | String | 可選 | 發送設備id,字符串類型 |
fromNick | String | 可選 | 發送方昵稱,字符串類型 |
msgTimestamp | String | 必選 | 消息發送時間,long型 |
msgType | String | 必選 | 會話具體類型PERSON、TEAM,CUSTOM_PERSON,CUSTOM_TEAM 對應的通知消息類型: TEXT、// 文本 PICTURE、 // 圖片 AUDIO、// 語音 VIDEO、//視頻 LOCATION 、//位置 FILE、 //文件消息 FILE_COMPRESS、 //文件壓縮 LINK、//鏈接消息 AT、//群組@消息會話具體類型NOTIFY_TEAM對應的通知消息類型: TEAM_APPLY、 //申請入群 TEAM_INVITE、 //邀請進群 TEAM_JOIN、//直接加入群 TEAM_DISMISS、//解散 TEAM_QUIT、//退出 TEAM_KICK、//踢出 TEAM_APPLY_ACCEPT、//同意入群申請 TEAM_INVITE_ACCEPT、//同意入群邀請 TEAM_APPLY_REJECT、 //拒絕入群申請 TEAM_INVITE_REJECT、 //拒絕邀請 TEAM_UPDATE、 //群信息更新 TEAM_MEMBER_UPDATE、//成員信息更新 TEAM_ADD_ADMIN、//管理員人員退出完后設置最近的人員為管理員通知 TEAM_ROLE_UPDATE、//角色變更 |
body | String | 可選 | 消息內容,字符串類型 |
attach | String | 可選 | 附件URL下載地址,字符串類型 |
msgId | String | 必選 | 服務端生成的消息id |
resendFlag | String | 可選 | 重發標記:0或者空不是重發, 1是重發??赊D為Integer類型數據 |
customSaveFlag | String | 可選 | 自定義消息是否存離線:0:不存,1:存??赊D為Integer類型數據 |
customApnsFlag | String | 可選 | 自定義消息是否進行離線推送,0 不推送離線 1推送離線 |
customApnsText | String | 可選 | 自定義消息推送文本。字符串類型 |
tMembers | String | 可選 | convType為TEAM或CUSTOM_TEAM時含此字段, 或者rest個人或多人推送消息也含有此字段 跟本次群操作有關的用戶userAcc或者推送的用戶userAcc tMembers格式舉例: { "tMembers":["20150314000000110000000000000010#123","20150314000000110000000000000010#456"] } |
atUser | String | 可選 | @用戶的賬號 { "atUser":["20150314000000110000000000000010#123", "20150314000000110000000000000010#456"] } |
ext | String | 可選 | 消息擴展字段 |
linkInfo | String | 可選 | 鏈接消息時,鏈接中的信息 |
antispam | String | 可選 | 標識是否被反垃圾,僅在開啟黑詞校驗, 且為同步校驗才有此字段,可轉為Boolean類型數據 |
文檔更新時間:2017年9月1日