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