消息内容类型参考
本页按融云消息类型逐一列出内容体字段、示例 JSON 与发送/接收注意点,并明确标注本项目是否实现。判断标准只有一条:平台消息内容类型的 ContentType 枚举是否包含对应类型。
标有 ✅ 的小节表示本项目有对应 content.type,字段与限制以本项目为准。
标有 ⛔ 的小节表示未实现;其中 JSON 是融云内容体示例,仅用于说明字段,不能直接作为本项目请求体发送。
融云使用 objectName + 自由内容体;本项目使用封闭联合体,字段名可能不同(例如融云 imageUri 对应本项目 url)。
快速索引
| 类型 | objectName | 本项目状态 |
|---|---|---|
| 文本消息 | RC:TxtMsg | ✅ 已实现(text) |
| 图片消息 | RC:ImgMsg | ✅ 已实现(image) |
| GIF 图片消息 | RC:GIFMsg | ⛔ 未实现 |
| 图文消息 | RC:ImgTextMsg | ⛔ 未实现 |
| 文件消息 | RC:FileMsg | ✅ 已实现(file) |
| 高清语音消息 | RC:HQVCMsg / RC:VcMsg | ✅ 已实现(voice) |
| 小视频消息 | RC:SightMsg | ⛔ 未实现 |
| 位置消息 | RC:LBSMsg | ✅ 已实现(location) |
| 引用消息 | RC:ReferenceMsg | ⛔ 未实现 |
| 合并转发消息 | RC:CombineMsg / RC:CombineV2Msg | ⛔ 未实现 |
| 流式消息 | RC:StreamMsg | ⛔ 未实现 |
| 名片消息 | RC:CardMsg | ⛔ 未实现 |
| 撤回通知消息 | RC:RcNtf | ✅ 已实现(recall,能力等价) |
| 提示条通知消息 | RC:InfoNtf | ⛔ 未实现 |
| 群组通知消息 | RC:GrpNtf | ⛔ 未实现 |
| 命令提醒消息 | RC:CmdNtf | ⛔ 未实现 |
| 正在输入状态消息 | RC:TypSts | ⛔ 未实现 |
| 命令消息 | RC:CmdMsg | ⛔ 未实现 |
| 撤回命令消息 | RC:RcCmd | ✅ 已实现(recall,能力等价) |
| 单聊已读回执消息 | RC:ReadNtf | ⛔ 未实现 |
| 群聊已读回执请求消息 | RC:RRReqMsg | ⛔ 未实现 |
| 群聊已读回执响应消息 | RC:RRRspMsg | ⛔ 未实现 |
| 多端已读状态同步消息 | RC:SRSMsg | ⛔ 未实现 |
| 聊天室属性通知消息 | RC:chrmKVNotiMsg | ⛔ 未实现 |
| 消息扩展功能消息 | RC:MsgExMsg | ⛔ 未实现 |
| 实时音视频信令 | RC:VCAccept / RC:VCHangup / RC:VCInvite / RC:VCModifyMedia / RC:VCModifyMem / RC:VCRinging | ⛔ 未实现 |
用户内容类
用户之间实际发送的内容:文本、图片、GIF、图文、文件、语音、小视频、位置、引用、合并转发、流式与名片。
计入未读数,客户端本地存储;默认支持离线缓存与远程推送。
文本消息(RC:TxtMsg)
状态:✅ 已实现,对应本项目 content.type=text。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:TxtMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | text |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
content | String | 是 | 文字内容,包括表情 |
mentionedInfo | Object | 否 | 群聊 @ 信息:type=1 所有人,type=2 指定用户;userIdList 为被 @ 用户 |
mentionedInfo.mentionedContent | String | 否 | 自定义 @ 推送文案,优先级高于普通 pushContent |
user | Object | 否 | 消息携带的发送者信息,一般建议仅直播场景使用 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"content": "@张三 你好,NI PaaS",
"mentionedInfo": {
"type": 2,
"userIdList": [
"zhangsan"
],
"mentionedContent": "有人@你"
},
"extra": ""
}本项目可发送的内容体(content.type=text):
{
"type": "text",
"text": "@张三 你好,NI PaaS",
"mentionedInfo": {
"type": 2,
"userIds": [
"zhangsan"
]
}
}发送注意点:
- 服务端发送时 objectName 传
RC:TxtMsg,content 传本文 JSON 对象;群聊 @ 还需在接口层声明 @ 语义(融云使用 isMentioned=1)。 - 本项目以
content.type=text表达,文本上限 5000 字符,单条消息序列化后不超过 5120 字节(1007)。
接收注意点:
- 本项目通过 MESSAGES 事件收到
content.type=text;@ 提醒使用 mentionedInfo/mentionedCount,而不是 objectName 解析。
融云原文(证据):/platform-chat-api/message-about/objectname
图片消息(RC:ImgMsg)
状态:✅ 已实现,对应本项目 content.type=image。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:ImgMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | image |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
imageUri | String | 是 | 图片上传后的服务器地址,单张不超过 100 MB |
content | String | 是 | 图片缩略图 Base64,建议约 5 KB、最大 10 KB |
name | String | 否 | 文件名,缺省时由客户端下载后生成 |
localPath | String | 是(客户端) | 本地路径,仅客户端使用,服务端不传 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"imageUri": "https://cdn.example.com/photo/9f2a.jpg",
"content": "<JPEG 缩略图 Base64,≤10KB>",
"name": "photo.jpg",
"extra": ""
}本项目可发送的内容体(content.type=image):
{
"type": "image",
"url": "https://cdn.example.com/photo/9f2a.jpg",
"width": 1280,
"height": 720,
"size": 245760
}发送注意点:
- 融云使用
imageUri传图片地址、content传缩略图;本项目使用content.type=image+url,不要求缩略图 Base64。 - 本项目的
url由uploadFile或业务方上传得到,宽高与字节数可选;消息体上限 5120 字节。
接收注意点:
- 客户端按
url拉取原图;图片消息计入未读并触发离线推送(配置 webhook 时)。
融云原文(证据):/platform-chat-api/message-about/objectname
GIF 图片消息(RC:GIFMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:GIFMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
remoteUrl | String | 是 | GIF 图片服务器地址,文件不超过 2 MB |
gifDataSize | Int | 是 | GIF 文件大小(Byte) |
width / height | Int | 是 | GIF 的宽高 |
name | String | 否 | 文件名 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"remoteUrl": "https://cdn.example.com/gif/ok.gif",
"gifDataSize": 524288,
"width": 240,
"height": 240,
"name": "ok.gif"
}发送注意点:
- 融云要求
gifDataSize与宽高;本项目 ContentType 无 GIF,未实现对应发送接口。
接收注意点:
- 未实现:客户端无法把该类融云消息解析为本项目内置消息,需要业务自行以 custom 承载并约定渲染(不保证兼容)。
当前 ContentType 为封闭 8 值,没有 gif 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
图文消息(RC:ImgTextMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:ImgTextMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
title | String | 是 | 消息标题 |
content | String | 是 | 文字内容 |
imageUri | String | 是 | 图片地址,建议 120×120 |
url | String | 是 | 点击图片跳转的 URL |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"title": "NI PaaS 新功能",
"content": "消息类型与推送能力更新",
"imageUri": "https://cdn.example.com/card/cover.png",
"url": "https://example.com/news/1"
}发送注意点:
- 融云图文消息是独立 objectName;本项目未实现,发送会因 ContentType 校验失败(1001)。
接收注意点:
- 未实现:本项目客户端不内置图文卡片渲染。
当前 ContentType 为封闭 8 值,没有 imgtext 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
文件消息(RC:FileMsg)
状态:✅ 已实现,对应本项目 content.type=file。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:FileMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | file |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
fileUrl | String | 是 | 文件服务器地址,融云限制 100 MB |
name | String | 否 | 文件名 |
size | String | 是 | 文件大小(Byte) |
type | String | 是 | 文件类型 |
localPath | String | 是(客户端) | 本地路径,仅客户端使用 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"fileUrl": "https://cdn.example.com/file/report.pdf",
"name": "report.pdf",
"size": 245760,
"type": "application/pdf"
}本项目可发送的内容体(content.type=file):
{
"type": "file",
"url": "https://cdn.example.com/file/report.pdf",
"name": "report.pdf",
"size": 245760,
"mime": "application/pdf"
}发送注意点:
- 本项目使用
content.type=file+url/name/size/mime;先uploadFile再发送。 - 本地上传上限 20 MB(服务端文件接口),消息体上限 5120 字节。
接收注意点:
- 客户端按
url下载;消息计入未读并触发离线推送(配置 webhook 时)。
融云原文(证据):/platform-chat-api/message-about/objectname
高清语音消息(RC:HQVCMsg / RC:VcMsg)
状态:✅ 已实现,对应本项目 content.type=voice。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:HQVCMsg / RC:VcMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | voice |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
remoteUrl | String | 是 | AAC 语音文件地址(旧版 RC:VcMsg 直接发送 Base64,已不推荐) |
duration | Int | 是 | 语音时长,融云上限 60 秒 |
name | String | 否 | 文件名 |
localPath | String | 是(客户端) | 本地路径,仅客户端使用 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"remoteUrl": "https://cdn.example.com/voice/hello.aac",
"duration": 8,
"name": "hello.aac"
}本项目可发送的内容体(content.type=voice):
{
"type": "voice",
"url": "https://cdn.example.com/voice/hello.aac",
"duration": 8
}发送注意点:
- 本项目使用
content.type=voice+url+duration,时长范围 1..300 秒(比融云 60 秒更宽)。 url必填;旧版RC:VcMsg的 Base64 内联方式不支持。
接收注意点:
- 客户端按
duration渲染语音条;播放由业务或 IMKit 组件负责。
融云原文(证据):/platform-chat-api/message-about/objectname
小视频消息(RC:SightMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:SightMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
sightUrl | String | 是 | 小视频文件地址(MP4/H.264+AAC) |
content | String | 是 | 首帧缩略图 Base64,建议约 5 KB、最大 10 KB |
duration | Int | 是 | 视频时长(秒),服务端默认上限 2 分钟 |
size | String | 是 | 视频大小(Byte) |
name | String | 是 | 文件名 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"sightUrl": "https://cdn.example.com/video/clip.mp4",
"content": "<首帧 JPEG 缩略图 Base64,≤10KB>",
"duration": 12,
"size": 3145728,
"name": "clip.mp4"
}发送注意点:
- 融云小视频是独立 objectName;本项目未实现视频消息类型。
接收注意点:
- 未实现:本项目没有内置视频播放与首帧渲染。
当前 ContentType 为封闭 8 值,没有 sight 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
位置消息(RC:LBSMsg)
状态:✅ 已实现,对应本项目 content.type=location。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:LBSMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | location |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
latitude | Number | 是 | 纬度,范围 [-90, 90] |
longitude | Number | 是 | 经度,范围 [-180, 180] |
poi | String | 是 | 位置的 POI 信息 |
content | String | 是 | 位置缩略图 Base64(JPG) |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"latitude": 39.908823,
"longitude": 116.39747,
"poi": "天安门广场",
"content": "<位置缩略图 Base64>"
}本项目可发送的内容体(content.type=location):
{
"type": "location",
"latitude": 39.908823,
"longitude": 116.39747,
"address": "天安门广场"
}发送注意点:
- 本项目使用
content.type=location+latitude/longitude/address;地址上限 200 字。 - 本项目不要求缩略图 Base64;与融云的
poi字段名不同。
接收注意点:
- 经纬度越界返回 1001;客户端按地址展示,不做地图渲染。
融云原文(证据):/platform-chat-api/message-about/objectname
引用消息(RC:ReferenceMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:ReferenceMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
content | String | 是 | 引用消息自身的文字内容 |
referMsgUserId | String | 是 | 被引用消息的发送者 userId |
referMsg | String | 是 | 被引用消息结构的 JSON |
objName | String | 是 | 被引用消息类型,支持文本 / 图片 / 文件 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"content": "收到,我稍后处理",
"referMsgUserId": "user1",
"objName": "RC:TxtMsg",
"referMsg": {
"content": "明天的评审改到 10 点",
"extra": ""
}
}发送注意点:
- 本项目没有
referenceContentType,不能按融云RC:ReferenceMsg发送。 - 已有部分能力:文本消息可携带
content.quote(messageId/senderId/type/text),服务端校验被引用消息存在于同一会话;这不是独立消息类型。
接收注意点:
- 引用块由客户端根据
content.quote渲染;未实现融云引用消息的字段与 objectName。
当前 ContentType 为封闭 8 值,没有 reference 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
合并转发消息(RC:CombineMsg / RC:CombineV2Msg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:CombineMsg / RC:CombineV2Msg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
remoteUrl | String | 是 | 合并转发详情 HTML 的远端地址 |
conversationType | Int | 是 | 原会话类型:1 单聊、3 群聊 |
nameList | Array | 是 | 前 4 条消息的发送者名称 |
summaryList | Array | 是 | 前 4 条消息的摘要,与 nameList 对应 |
localPath | String | 否 | 本地 HTML 路径,仅客户端使用 |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"remoteUrl": "https://cdn.example.com/combine/9f2a.html",
"conversationType": 3,
"nameList": [
"张三",
"李四"
],
"summaryList": [
"张三:明天评审",
"李四:收到"
]
}发送注意点:
- 融云 V1 使用
RC:CombineMsg,V2 使用RC:CombineV2Msg;本项目均未实现。
接收注意点:
- 未实现:本项目没有合并转发的 HTML 生成、存储与渲染链路。
当前 ContentType 为封闭 8 值,没有 combine 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
流式消息(RC:StreamMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:StreamMsg |
| 计入未读 | 是 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
content | String | 是 | 流数据块,首流加续流整体不超过 128 KB |
seq | Long | 是 | 严格自增且连续的流序号,从 1 开始 |
complete | Boolean | 是 | 是否结束 |
type | String | 否 | text / markdown / html,默认 text |
messageUID | String | 否 | 续流使用的流式消息 ID |
公共字段 user.id、user.name、user.portrait、user.extra 与 extra 在多数融云内容体中都存在,上表从略;本项目的 Content 是封闭联合体,公共字段为 mentionedInfo、quote、extra。
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"content": "## 正在生成",
"complete": false,
"messageUID": "msg_9f2a",
"seq": 1,
"type": "markdown"
}发送注意点:
- 融云流式消息是独立 objectName
RC:StreamMsg,客户端从 5.16.1 起支持打字机效果。 - 本项目服务端已有
message.stream.start/append/end/getREST 能力,但 ContentType 没有 stream,客户端 SDK 未暴露流式消息能力,因此文档口径仍为未实现。
接收注意点:
- 未实现:客户端无法按
RC:StreamMsg增量渲染。
当前 ContentType 为封闭 8 值,没有 stream 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
名片消息(RC:CardMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 用户内容类 |
| objectName | RC:CardMsg |
| 计入未读 | — |
| 离线缓存 | — |
| 默认推送 | — |
| 本项目 content.type | — |
名片不在 38 个服务端 objectName 的公开清单内,单独列出。
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
user.id | String | 是 | 名片对应的用户 ID |
user.name | String | 否 | 昵称 |
user.portrait | String | 否 | 头像地址 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"user": {
"id": "user2",
"name": "李雷",
"portrait": "https://cdn.example.com/avatar/u2.png"
}
}发送注意点:
- 融云名片由 IMKit 名片插件定义
ContactMessage(RC:CardMsg),服务端消息类型清单未单列;本项目未实现。
接收注意点:
- 未实现:本项目没有名片插件与名片消息渲染。
当前 ContentType 为封闭 8 值,没有 card 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname
通知类
需要展示在会话中的提示,如“已撤回”“张三加入了群组”。
客户端本地存储但不计入未读数;服务端未预置推送标题与内容,默认不推送。
撤回通知消息(RC:RcNtf)
状态:✅ 已实现,对应本项目 content.type=recall。能力等价、格式不等价:本项目用 ContentType=recall 占位,而不是新增 RC:RcNtf 消息。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 通知类 |
| objectName | RC:RcNtf |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | recall |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
operatorId | String | 否 | 执行撤回的用户 ID |
recallTime | Long | 是 | 被撤回原消息的发送时间(毫秒) |
originalObjectName | String | 是 | 原消息类型 |
originalMessageContent | Object | 否 | 原消息内容 |
admin | Boolean | 是 | 是否管理员操作 |
delete | Boolean | 是 | 接收端是否删除原消息而不是显示“已撤回” |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"operatorId": "user1",
"recallTime": 1750000000000,
"originalObjectName": "RC:TxtMsg",
"originalMessageContent": {
"content": "发错了"
},
"recallContent": "你撤回了一条消息",
"admin": false,
"delete": false
}本项目撤回后的占位 content(由服务端写入,客户端不发送):
{
"type": "recall",
"recallMessageId": "m_9f2a",
"operatorId": "user1"
}发送注意点:
- 本项目不发送独立撤回通知;撤回时服务端把原消息内容替换为
content.type=recall并通过 recall 帧通知在线端。 - 撤回时限 120000 毫秒;仅发送者或管理员可撤回;重复撤回返回 1023。
接收注意点:
- 客户端收到 recall 帧后替换气泡;不计入未读、不触发离线推送。
融云原文(证据):/platform-chat-api/message-about/objectname-notification
提示条通知消息(RC:InfoNtf)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 通知类 |
| objectName | RC:InfoNtf |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
message | String | 是 | 提示条内容 |
extra | String | 否 | 扩展信息 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"message": "张三加入了群组",
"extra": ""
}发送注意点:
- 融云提示条是独立 objectName;本项目未实现该消息类型。
接收注意点:
- 未实现:本项目没有小灰条消息的内置渲染。
当前 ContentType 为封闭 8 值,没有 info-notification 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname-notification
群组通知消息(RC:GrpNtf)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 通知类 |
| objectName | RC:GrpNtf |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
operatorUserId | String | 是 | 操作人 userId |
operation | String | 是 | Create / Rename / Add / Kicked / Quit / Dismiss 等 |
data | String | 是 | 操作数据 JSON 字符串 |
message | String | 是 | 展示文案 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"operatorUserId": "user1",
"operation": "Add",
"data": "{\"operatorNickname\":\"张三\",\"targetUserIds\":[\"user2\"],\"targetUserDisplayNames\":[\"李四\"]}",
"message": "添加群成员",
"extra": ""
}发送注意点:
- 融云群组通知是独立 objectName;本项目未实现,群变更通过回调/业务系统消息自行通知。
接收注意点:
- 未实现:本项目客户端不解析 RC:GrpNtf。可用
content.type=system自行构造系统通知,但字段与渲染不等价。
当前 ContentType 为封闭 8 值,没有 group-notification 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname-notification
命令提醒消息(RC:CmdNtf)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 通知类 |
| objectName | RC:CmdNtf |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
name | String | 是 | 命令名 |
data | String | 否 | 任意格式的命令数据 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"name": "ShowBanner",
"data": "{\"text\":\"活动开始\"}"
}发送注意点:
- 融云命令提醒是存储且展示的通知消息;本项目未实现该 objectName。
接收注意点:
- 未实现:本项目没有通用命令提醒渲染。
当前 ContentType 为封闭 8 值,没有 command-notification 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname-notification
状态类
只在在线期间有效的瞬时状态,例如“正在输入”。
不存储、不计入未读数、不支持离线缓存与推送。
正在输入状态消息(RC:TypSts)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 状态类 |
| objectName | RC:TypSts |
| 计入未读 | 否 |
| 离线缓存 | 不支持 |
| 默认推送 | 不支持 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
typingContentType | String | 是 | 正在输入对应的消息类型 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"typingContentType": "RC:TxtMsg"
}发送注意点:
- 融云使用状态消息
RC:TypSts;本项目未把它定义成消息类型。
接收注意点:
- 本项目有等价能力:
sendTypingStatus+ TYPING 事件/WebSocket 帧,5 秒过期、按会话节流;不是 ContentType,也不落库。
当前 ContentType 为封闭 8 值,没有 typing 对应项。能力等价、协议不等价:输入状态走 WS 帧,不产生消息对象。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-status
信令类
IM 服务自身业务使用的信令,如撤回命令、已读回执、聊天室 KV 通知、音视频通话信令。
客户端不存储、不计入未读数;是否离线缓存与推送按具体类型而定。
命令消息(RC:CmdMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:CmdMsg |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
name | String | 是 | 命令名称 |
data | String | 是 | 命令内容 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"name": "SyncConfig",
"data": "{\"version\":3}"
}发送注意点:
- 融云命令消息不存储、不展示,只在回调与全量消息路由中出现;本项目未实现该 objectName。
接收注意点:
- 未实现:本项目客户端不接收 RC:CmdMsg。
当前 ContentType 为封闭 8 值,没有 command 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
撤回命令消息(RC:RcCmd)
状态:✅ 已实现,对应本项目 content.type=recall。能力等价、协议不等价:撤回命令由 WS recall 帧 / REST message.recall 替代。下表的“字段”是融云内容体字段;本项目实际发送的 content 见“本项目可发送的内容体”示例。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:RcCmd |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | recall |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
MessageUId | String | 是 | 被撤回消息的全局唯一 ID |
TargetId | String | 是 | 会话 ID |
ChannelId | String | 是 | 超级群频道 ID |
ConversationType | String | 是 | 会话类型 |
isAdmin | Boolean | 是 | 是否管理员操作 |
isDelete | Boolean | 是 | 接收端是否删除原消息 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"MessageUId": "msg_9f2a",
"TargetId": "group_1",
"ChannelId": "RCDefault",
"ConversationType": "3",
"isAdmin": false,
"isDelete": false
}本项目撤回后的占位 content(由服务端写入,客户端不发送):
{
"type": "recall",
"recallMessageId": "m_9f2a",
"operatorId": "user1"
}发送注意点:
- 本项目不发送独立撤回命令;撤回通过 recall 帧与
message.recallREST 接口完成。
接收注意点:
- 能力等价、objectName 不等价:本项目不落 RC:RcCmd 消息,也不包含 ChannelId 语义。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
单聊已读回执消息(RC:ReadNtf)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:ReadNtf |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
lastMessageSendTime | Int | 是 | 已读的最后一条消息发送时间 |
messageUId | String | 否 | 已读的最后一条消息 UID |
type | Int | 是 | 会话类型,当前仅支持单聊 1 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"lastMessageSendTime": 1750000000000,
"messageUId": "msg_9f2a",
"type": 1
}发送注意点:
- 融云以 RC:ReadNtf 消息表达已读;本项目不产生该 objectName。
接收注意点:
- 本项目有等价能力:
sendReadReceipt+ READ_RECEIPT 事件 +getMessageReadCount;走 WS 帧与 REST,不落消息。
当前 ContentType 为封闭 8 值,没有 read-notification 对应项。能力等价、协议不等价:已读回执走 WS 帧,不产生消息对象。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
群聊已读回执请求消息(RC:RRReqMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:RRReqMsg |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
messageUId | String | 是 | 需要请求已读回执的消息 ID |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"messageUId": "msg_9f2a"
}发送注意点:
- 融云以独立信令消息请求群已读回执;本项目未实现该 objectName。
接收注意点:
- 本项目群已读通过 read_receipt 帧与 REST 查询实现,不产生 RC:RRReqMsg。
当前 ContentType 为封闭 8 值,没有 group-read-request 对应项。能力部分等价:有群已读计数/明细,无对应信令消息。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
群聊已读回执响应消息(RC:RRRspMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:RRRspMsg |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
receiptMessageDic | String | 是 | 按发送者 userId 分组的已读消息 UID 字典 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"receiptMessageDic": "{\"user1\":[\"msg_9f2a\",\"msg_9f2b\"]}"
}发送注意点:
- 融云以独立信令消息返回群已读回执;本项目未实现该 objectName。
接收注意点:
- 本项目通过 read_receipt 帧回传已读消息列表,不产生 RC:RRRspMsg。
当前 ContentType 为封闭 8 值,没有 group-read-response 对应项。能力部分等价:有群已读数据,无对应信令消息。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
多端已读状态同步消息(RC:SRSMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:SRSMsg |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
lastMessageSendTime | Int | 是 | 已读的最后一条消息发送时间 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"lastMessageSendTime": 1750000000000
}发送注意点:
- 融云用 RC:SRSMsg 在多端之间同步已读状态;本项目未实现该 objectName。
接收注意点:
- 本项目多端已读同步依赖服务端会话未读与 read 帧(多端游标能力当前版本尚未提供),不产生 RC:SRSMsg。
当前 ContentType 为封闭 8 值,没有 sync-read 对应项。部分等价:会话未读多端一致;逐端已读游标未实现。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
聊天室属性通知消息(RC:chrmKVNotiMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:chrmKVNotiMsg |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
type | Int | 是 | 1 设置属性,2 删除属性 |
key | String | 是 | 属性名,不超过 128 字符 |
value | String | 是 | 属性值,不超过 4096 字符 |
extra | String | 否 | 对应设置接口的 notificationExtra |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"type": 1,
"key": "notice",
"value": "今晚 8 点活动",
"extra": ""
}发送注意点:
- 融云在聊天室 KV 变更时发送 RC:chrmKVNotiMsg;本项目未实现该 objectName。
接收注意点:
- 本项目聊天室 KV 通过服务端接口与 WS 事件表达,不产生该消息类型。
当前 ContentType 为封闭 8 值,没有 chatroom-kv 对应项。能力部分等价、协议不等价。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
消息扩展功能消息(RC:MsgExMsg)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:MsgExMsg |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认不推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
clear | Int/Boolean | 否 | 是否删除全部属性 |
del | Array | 否 | 删除的 Key/Value 数组 |
put | Array | 否 | 设置的 Key/Value 数组 |
融云内容体示例(字段口径;本项目请求体字段不同,不可直接照抄):
{
"clear": 0,
"put": [
{
"key": "reaction",
"value": "[\"👍\"]"
}
]
}发送注意点:
- 融云消息扩展变更会生成 RC:MsgExMsg 信令消息;本项目未实现该 objectName。
接收注意点:
- 本项目通过
updateMessageExpansion/removeMessageExpansion与 message.expansion.* 接口管理扩展,不产生 RC:MsgExMsg。
当前 ContentType 为封闭 8 值,没有 message-expansion 对应项。能力等价、协议不等价:扩展 KV 直接存消息,不发信令消息。不要伪装成内置消息类型。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
实时音视频信令(RC:VCAccept / RC:VCHangup / RC:VCInvite / RC:VCModifyMedia / RC:VCModifyMem / RC:VCRinging)
状态:⛔ 未实现。本项目没有对应 ContentType,不能发送或解析该类型。
| 项 | 值 |
|---|---|
| 分类 | 信令类 |
| objectName | RC:VCAccept / RC:VCHangup / RC:VCInvite / RC:VCModifyMedia / RC:VCModifyMem / RC:VCRinging |
| 计入未读 | 否 |
| 离线缓存 | 支持 |
| 默认推送 | 默认推送 |
| 本项目 content.type | — |
| 字段 | 类型 | 必传 | 说明 |
|---|---|---|---|
各类信令内容 | Object | — | 邀请、接受、挂断、切换媒体、成员变化、响铃;字段随 RTC 产品定义 |
发送注意点:
- 音视频信令属于 RTC 产品线,本项目明确排除,未实现。
接收注意点:
- 未实现:无 RTC 能力,也不会收到这些信令。
当前 ContentType 为封闭 8 值,没有 vc 对应项。本项目当前没有替代实现;在提供对应能力前不要宣称已支持。
融云原文(证据):/platform-chat-api/message-about/objectname-callback
自定义消息(本项目已实现)
融云允许应用自定义 objectName(不得以 RC: 开头、长度不超过 32),内容体由应用约定。本项目不使用 objectName,而是 content.type=custom + data 承载任意 JSON。
| 项 | 值 |
|---|---|
| content.type | custom |
| 字段 | data(任意 JSON)、extra(可选字符串) |
| 限制 | 序列化后整条消息 ≤5120 字节;服务端不解析 data |
| 对应融云 | 自定义 objectName(非 RC: 前缀) |
| 状态 | ✅ 已实现 |
{
"type": "custom",
"data": {
"kind": "vote",
"question": "周末团建去哪?",
"options": [
"爬山",
"桌游"
]
}
}发送(Web SDK,sendMessage 接收一个消息对象):
import { ConversationType } from '@ni-paas/im-web';
const res = await client.sendMessage({
conversationType: ConversationType.PRIVATE,
targetId: 'user2',
content: {
type: 'custom',
data: { kind: 'vote', question: '周末团建去哪?', options: ['爬山', '桌游'] },
},
});自定义消息不会获得内置气泡渲染、搜索命中或系统推送文案;接收端必须按 data 自行解析并做降级渲染。
系统通知(本项目已实现,但不是融云通知类 objectName)
本项目的 system 内容类型只允许在系统会话(conversationType=4、targetId=system)中使用,且只能由服务端发送。它用来承载群变更、好友通过、封禁、广播等系统事件,不等价于融云的 RC:GrpNtf / RC:InfoNtf / RC:CmdNtf。
| systemType | 含义 |
|---|---|
system_notification | 通用系统通知 |
group_notice_changed | 群公告变更 |
group_member_changed | 群成员变化 |
group_dismissed | 群解散 |
user_banned | 用户封禁 |
chatroom_destroyed | 聊天室销毁 |
friend_accepted | 好友请求通过 |
broadcast | 广播通知 |
{
"type": "system",
"systemType": "group_member_changed",
"text": "张三邀请李四加入群组",
"data": {
"groupId": "group_1",
"operatorId": "user1",
"userIds": [
"user2"
]
}
}系统通知由服务端通过 发送系统通知 接口下发,落库、离线补发、多端同步,不触发离线推送 webhook。
实现状态汇总
| 状态 | 类型 |
|---|---|
| ✅ 已实现为 ContentType | text / image / file / voice / location / custom / recall / system |
| ⛔ 未实现 | GIF、图文、小视频、名片、引用、合并转发、流式、命令消息、命令提醒、提示条、群组通知、聊天室 KV 通知、正在输入、单聊/群聊已读信令、多端已读同步、消息扩展通知、音视频信令 |
| ✅ 已有等价能力但不是消息类型 | 输入状态(WS 帧)、已读回执(WS 帧 + REST)、消息扩展(REST KV)、聊天室 KV(接口/事件) |
相关页面
融云原文(证据):/platform-chat-api/message-about/about-message-types