以辦公場景為例,比如員工入職通知,放假通知等業務通知,由oa系統處理具體的業務邏輯,再調用消息推送api,觸達到目標用戶。
效果示例
以協同辦公為例,員工收到系統推送的工作通知,有新任務需要處理。
員工點擊工作通知,可以查看具體詳情,每條通知有不同的發送者昵稱和頭像。這種通知類型是一種新的會話類型,全部聚合在同一個會話。
OpenIM簡介
OpenIM:從服務端到客戶端SDK開源即時通訊整體解決方案。開發者可以輕松替代第三方IM雲服務,打造具備聊天、社交功能的app,也可以在自身應用中集成SDK,以提供即時通訊能力。開源IM的價值在於“一切皆可控”“我的信息我做主”,無論是技術,還是信息安全。
整體超過7.2K star,OpenIM作為開源IM的領跑者,持續添加新功能,包括消息推送api,群聊已讀。服務端和sdk都是Apache-2.0 License授權協議,可以免費使用。帶有UI的產品需要商業授權,有興趣的客戶可以聯系我們深度交流。
5X8小時vip專屬服務,包括:
(1)一對一技術咨詢,微信 電話等各種方式;
(2)sdk使用輔導咨詢;
(3)服務端架構及部署答疑;
(4)IM新需求優先排期;
(5)bug優先修復;
(6)系統維護和故障響應;
web端體驗:https://open-im-online.rentsoft.cn/
安卓端體驗:https://www.pgyer.com/OpenIM
iOS端體驗:
https://testflight.apple.com/join/o956rTGx
單機性能及容量總結
服務器資源:8核16G內存, 6個機械磁盤,每個磁盤100G, mongo 分片,10MB帶寬。
容量:用戶同時在線10萬以上,消息條數10億。
性能評估:同時在線用戶10萬,每秒鍾發送消息900條,(從發送者發出消息到接收到消息)消息延時1秒
可靠性總結
每條消息都能被對方精確收到,並成功落地app本地db。對於失敗的3條消息,接收方確實沒有收到,確保系統消息一致性。
系統具備優秀的平行擴展能力,除存儲模塊外,其他模塊都無狀態,支持億級用戶,千億消息量。
github地址:https://github.com/OpenIMSDK/Open-IM-Server
開發者中心:https://doc.rentsoft.cn/#/
簡要描述
管理員通過后台接口發送通知類型消息
請求URL
http://x.x.x.x:10000/manager/send_msg
請求方式
POST
請求示例
{
"operationID": "Oa notification operationID111",
"sendID": "openIM123456",
"recvID": "18712345678",
"senderPlatformID": 2,
"senderFaceURL": "http://www.head.com",
"senderNickname": "系統通知2",
"content": {
"notificationName": "公文管理",
"notificationFaceURL": "http://www.head1.com",
"notificationType": 1,
"text": "大家好,今天是...",
"externalUrl":"",
"mixType": 0,
"pictureElem": {
"sourcePath": "",
"sourcePicture": {
"uuid": "",
"type": "",
"size": 0,
"width": 0,
"height": 0,
"url": ""
},
"bigPicture": {
"uuid": "",
"type": "",
"size": 0,
"width": 0,
"height": 0,
"url": ""
},
"snapshotPicture": {
"uuid": "",
"type": "",
"size": 0,
"width": 0,
"height": 0,
"url": ""
}
},
"soundElem": {
"uuid": "",
"soundPath": "",
"sourceUrl": "",
"dataSize": 0,
"duration": 0
},
"videoElem": {
"videoPath": "",
"videoUUID": "",
"videoUrl": "",
"videoType": "",
"videoSize": 0,
"duration": 0,
"snapshotPath": "",
"snapshotUUID": "",
"snapshotSize": 0,
"snapshotUrl": "",
"snapshotWidth": 0,
"snapshotHeight": 0
},
"fileElem": {
"filePath": "",
"uuid": "",
"sourceUrl": "",
"fileName": "",
"fileSize": 0
},
"ex": ""
},
"contentType": 1400,
"sessionType": 4,
"isOnlineOnly": false,
"offlinePushInfo": {
"title": "admin revoke your message",
"desc": "",
"ex": "",
"iOSPushSound": "default",
"iOSBadgeCount": false
}
}Copy to clipboardErrorCopied
請求參數
參數名 類型 必選 說明
operationID string 是 操作ID,保持唯一,建議用當前時間微秒+隨機數,用於后台鏈路追蹤問題使用
sendID string 是 管理員ID,為后台config文件中配置的管理員ID中一個,默認openIM123456
recvID string 是 接收者userID
senderPlatformID int 否 發送者平台號,模擬用戶發送時填寫, 1->IOS,2->Android,3->Windows,4->OSX,5->Web,5->MiniWeb,7->Linux
senderFaceURL string 否 發送者頭像,用於客戶端通知會話產生
senderNickname string 否 發送者昵稱,用於客戶端通知會話產生
content object 是 消息的具體內容,內部是json 對象
notificationName string 是 通知標題
notificationFaceURL string 是 通知頭像
notificationType int 是 通知類型,如:1代表入職通知,2代表離職通知
text string 是 通知正文e
externalUrl string 否 通知點擊后需要跳轉到的地址鏈接(不填則無需跳轉)
mixType int 是 通知混合類型 0:純文字通知 1:文字+圖片通知 2:文字+視頻通知 3:文字+文件通知
pictureElem object 否 圖片元素對象
sourcePicture object 否 原圖
bigPicture object 否 大圖
snapshotPicture object 否 縮略圖
soundElem object 否 聲音元素對象
videoElem object 否 視頻元素對象
fileElem object 否 文件元素對象
uuid string 否 對象唯一ID用於緩存使用
type/videoType/ string 否 圖片類型/視頻類型
size/dataSize/videoSize/snapshotSize/fileSize int 否 多媒體文件大小,單位字節
width/snapshotWidth int 否 圖片/視頻縮略圖寬度
height/snapshotHeight int 否 圖片/視頻縮略圖高度
url/sourceUrl/videoUrl string 否 圖片/文件/視頻的URL
sourcePath/soundPath/videoPath/filePath string 否 文件路徑,可不填寫
fileName string 否 文件名字
ex string 否 擴展字段
contentType int 是 消息類型固定為1400
sessionType int 是 通知會話類型固定為4
isOnlineOnly bool 否 改字段設置為true時候,發送的消息服務器不會存儲,接收者在線才會收到,不在線該消息丟失。
offlinePushInfo object 否 離線推送的具體內容,如果不填寫,使用服務器默認推送標題
title string 否 推送的標題
desc string 否 推送的具體描述
ex string 否 擴展字段
iOSPushSound string 否 IOS的推送聲音
iOSBadgeCount bool 否 IOS推送消息是否計入桌面圖標未讀數
返回示例
{
"errCode": 0,
"errMsg": "",
"data": {
"serverMsgID": "",
"clientMsgID": "",
"sendTime": 1645697804432
}
}Copy to clipboardErrorCopied
返回參數
參數名 類型 說明
errCode int 0成功,非0失敗
errMsg string 錯誤信息
sendTime int 消息發送的具體時間,具體為毫秒的時間戳
serverMsgID string 服務器生成的消息的唯一ID
clientMsgID string 客戶端生成的消息唯一ID,默認情況使用這個為主鍵
消息類型格式描述
簡要描述
管理員消息發送字段中contentType支持的消息類型說明以及消息content的具體字段說明。
ContentType消息類型說明
ContentType值 類型說明
101 文本消息
102 圖片消息
103 音頻消息
104 視頻消息
105 文件消息
106 群聊中的@類型消息
107 合並轉發類型消息
108 名片消息
109 地理位置類型消息
110 自定義消息
111 撤回類型消息
112 已讀回執類型消息
114 引用類型消息
Content具體內容
content內部為具體的json對象,不同的消息類型是不同的json對象
文本消息
{
...,
"content": {
"text": "nihao"
},
....
}Copy to clipboardErrorCopied
參數名 必選 類型 說明
text 是 string 文本消息的具體內容
自定義消息
{
...,
"content": {
"data": "",
"description": "",
"extension": ""
},
....
}Copy to clipboardErrorCopied
參數名 類型 必選 說明
data json string 是 用戶自定義的消息為json對象轉換后的string
description json string 否 擴展的描述信息為json對象轉換后的string,可以不使用
extension json string 否 擴展字段,暫時不使用