美文网首页
开源IM项目OpenIM发布消息推送api,支持应用与IM互通深

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

作者: OpenIM | 来源:发表于2022-04-03 16:13 被阅读0次

    以办公场景为例,比如员工入职通知,放假通知等业务通知,由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否扩展字段,暂时不使用

    相关文章

      网友评论

          本文标题:开源IM项目OpenIM发布消息推送api,支持应用与IM互通深

          本文链接:https://www.haomeiwen.com/subject/ymvfsrtx.html