开源IM项目OpenIM发布消息推送api,支持应用与IM互通深度融合

以办公场景为例,比如员工入职通知,放假通知等业务通知,由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

请求参数

参数名类型必选说明

operationIDstring是操作ID,保持唯一,建议用当前时间微秒+随机数,用于后台链路追踪问题使用

sendIDstring是管理员ID,为后台config文件中配置的管理员ID中一个,默认openIM123456

recvIDstring是接收者userID

senderPlatformIDint否发送者平台号,模拟用户发送时填写, 1->IOS,2->Android,3->Windows,4->OSX,5->Web,5->MiniWeb,7->Linux

senderFaceURLstring否发送者头像,用于客户端通知会话产生

senderNicknamestring否发送者昵称,用于客户端通知会话产生

contentobject是消息的具体内容,内部是json 对象

notificationNamestring是通知标题

notificationFaceURLstring是通知头像

notificationTypeint是通知类型,如:1代表入职通知,2代表离职通知

textstring是通知正文e

externalUrlstring否通知点击后需要跳转到的地址链接(不填则无需跳转)

mixTypeint是通知混合类型 0:纯文字通知 1:文字+图片通知 2:文字+视频通知 3:文字+文件通知

pictureElemobject否图片元素对象

sourcePictureobject否原图

bigPictureobject否大图

snapshotPictureobject否缩略图

soundElemobject否声音元素对象

videoElemobject否视频元素对象

fileElemobject否文件元素对象

uuidstring否对象唯一ID用于缓存使用

type/videoType/string否图片类型/视频类型

size/dataSize/videoSize/snapshotSize/fileSizeint否多媒体文件大小,单位字节

width/snapshotWidthint否图片/视频缩略图宽度

height/snapshotHeightint否图片/视频缩略图高度

url/sourceUrl/videoUrlstring否图片/文件/视频的URL

sourcePath/soundPath/videoPath/filePathstring否文件路径,可不填写

fileNamestring否文件名字

exstring否扩展字段

contentTypeint是消息类型固定为1400

sessionTypeint是通知会话类型固定为4

isOnlineOnlybool否改字段设置为true时候,发送的消息服务器不会存储,接收者在线才会收到,不在线该消息丢失。

offlinePushInfoobject否离线推送的具体内容,如果不填写,使用服务器默认推送标题

titlestring否推送的标题

descstring否推送的具体描述

exstring否扩展字段

iOSPushSoundstring否IOS的推送声音

iOSBadgeCountbool否IOS推送消息是否计入桌面图标未读数

返回示例

{

"errCode": 0, 

"errMsg": "", 

"data": {

"serverMsgID": "", 

"clientMsgID": "", 

"sendTime": 1645697804432

}

}Copy to clipboardErrorCopied

返回参数

参数名类型说明

errCodeint0成功,非0失败

errMsgstring错误信息

sendTimeint消息发送的具体时间,具体为毫秒的时间戳

serverMsgIDstring服务器生成的消息的唯一ID

clientMsgIDstring客户端生成的消息唯一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

参数名类型必选说明

datajson string是用户自定义的消息为json对象转换后的string

descriptionjson string否扩展的描述信息为json对象转换后的string,可以不使用

extensionjson string否扩展字段,暂时不使用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容