用户内容类消息格式
即时通讯服务将用户使用即时通讯业务时可能发送的消息归为一类,称为用户内容类消息。即时通讯服务根据具体消息内容,为文本、图片、图文(已不推荐使用)、GIF、语音、文件、小视频、位置、引用、合并转发等提供了预定义的消息内容结构。
文本消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:TxtMsg
的文本消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:TxtMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
文本消息内容结构体
文本消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"content":"@张三 Hello world!",
"mentionedInfo":{
"type":2,
"userIdList":["zhangsan"],
"mentionedContent":"有人@你"
},
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
文本消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
content | String | 是 | 文字消息的文字内容,包括表情。 |
mentionedInfo | Object | 否 | 在群组中发送 @ 消息时,需要传入被 @ 用户信息。单聊场景下无需设置此属性。使用 IM Server API 发送群聊 @ 消息时,必须设置 isMentioned 字段为 1 ,指定当前消息为 @消息。否则默认发送普通消息,mentionedInfo 数据无效。 |
mentionedInfo.type | int | 是 | @ 功能类型,1 表示 @ 所有人、2 表示 @ 指定用户。 |
mentionedInfo.userIdList | String[] | 否 | 指定用户列表,type 为 2 时有效,为 1 时 userIdList 可以为空。 |
mentionedInfo.mentionedContent | String | 否 | @ 消息的自定义 Push 内容。@消息携带的 mentionedContent 优先级最高,会覆盖所有默认或自定义的 pushContent 数据。 |
user | String | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为消息内容。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:消息内容。可在发送消息时自定义推送内容。
图片消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:ImgMsg
的图片消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:ImgMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
图片消息内容结构体
图片消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"content":"/9j/4AAQSkZJRgABAgAAZABkAAD",
"localPath":"",
"imageUri":"http://p1.cdn.com/fds78ruhi.jpg",
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
图片消息的消息内容 JSON 对象中包含的图片资源分为两部分:
- 缩略图:JSON 中的
content
key 用于表示缩略图 Base64 编码后的值。- 从服务端发送图片消息时,您需要自行生成缩略图(建议最长边不超过 240 像素),进行 Base64 编码后放入
content
中。注意,部分工具图片转 Base64 输出结果会携带 Data URI 前缀。例如:data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD
。请丢弃其中 Data URI 前缀,仅保留数据部分,例如:/9j/4AAQSkZJRgABAgAAZABkAAD
。 - 从客户端发送图片消息时,SDK 自动以宽度和高度中较长的边不超过 240 像素进行等比压缩生成缩略图。接收方的会话页面仅展示缩略图(最长边 240 像素)。
- 从服务端发送图片消息时,您需要自行生成缩略图(建议最长边不超过 240 像素),进行 Base64 编码后放入
- 大图(或原图):JSON 中的
imageUri
key 用于表示图片的远程地址。- 从服务端发送图片消息时,您需要自行提供图片远程地址。例如,您自行上传图片文件到 App 的文件服务器,生成地址后进行发送。接收方在会话页面中点击缩略图后展示原始尺寸与比例的图片。
- 从客户端发送图片消息时,SDK 自动上传到文件服务器(默认上传到七牛云存储),并将云存储服务返回的大图或原图的远程地址放入消息体对应字段后进行发送。如果未设置为发送原图,SDK 会以宽度和高度中较长的边不超过 960 像素等比压缩。接收方在会话页面中点击缩略图后展示大图(最长边 960 像素)。如果未设置发送原图,接收方在会话页面中点击缩略图后展示原图。
图片消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
content | String | 是 | 图片缩略图进行 Base64 编码的结果值。Base64 字符串长度建议为 5k,最大不超过 10k。注意在 Base64 进行 Encode 后需要将所有 \r\n 和 \r 和 \n 替换成空。。 |
name | String | 否 | 文件名称。如不传,调用客户端 SDK 中的 downloadMediaMessage 方法下载后会默认生成一个名称。 |
localPath | String | 是 | 图片的本地地址。仅客户端使用此字段,服务端不传入。 |
imageUri | String | 是 | 图片上传到图片存储服务器后的地址。通过 IM Server API 发送图片消息时,需要自行上传文件到应用的文件服务器,生成图片地址后进行发送。 |
user | String | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为固定字符串:[图片]。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[图片]。可在发送消息时自定义推送内容。
GIF 图片消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:GIFMsg
的图片消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:GIFMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
GIF 消息内容结构体
GIF 图片消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"gifDataSize":34563,
"height":246,
"localPath":"/var/mobile/.../GIF_53",
"remoteUrl":"https://rongcloud-image.cn.ronghub.com/image_jpe64562665566.gif",
"width":263,
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
GIF 图片消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
gifDataSize | Int | 是 | GIF 图片文件大小,单位为字节 Byte。 |
name | String | 否 | 文件名称。如不传,调用客户端 SDK 中的 downloadMediaMessage 方法下载后会默认生成一个名称。 |
localPath | String | 是 | GIF 图片的本地地址。仅客户端使用此参数,服务端不传入。 |
remoteUrl | String | 是 | GIF 图片的服务器地址。通过 IM Server API 发送 GIF 图片消息时,需要自行上传文件到应用的文件服务器,生成 GIF 图片地址后进行发送。 |
width | Int | 是 | GIF 图片宽度。 |
height | Int | 是 | GIF 图片高度。 |
user | String | 是 | 消息中携带的用户信息,IMKit SDK 会话界面中优先显示消息中携带的用户信息,可去掉此属性。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为固定字符串:[图片]。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[图片]。可在发送消息时自定义推送内容。
高清语音消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:HQVCMsg
的高清语音消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:HQVCMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
高清语音消息内容结构体
高清语音消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"localPath":"/9j/4AAQSkZ/2wBaSiimB//9k=",
"remoteUrl":"http://p1.cdn.com/fds78ruhi.aac",
"duration":7,
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
高清语音消息内容结构参数如下表所示:
参数 | 类型 | 必传 | 说明 |
---|---|---|---|
name | String | 否 | 文件名称。如不传,调用客户端 SDK 中的 downloadMediaMessage 方法下载后会默认生成一个名称。 |
localPath | String | 是 | 采用 AAC 格式进行编码录制的媒体内容本地路径。仅客户端使用此参数,服务端不传入。 |
remoteUrl | String | 是 | 媒体内容上传服务器后的网络地址。通过 IM 服务端 API 发送高质量语音消息时,需要自行生成 AAC 格式文件并上传文件到应用的文件服务器,生成地址后进行发送。 |
duration | Int | 是 | 语音消息的时长,最长为 60 秒(单位:秒)。 |
user | String | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为固定字符串:[语音]。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[语音]。可在发送消息时自定义推送内容。
关于旧版本语音消息 RC:VcMsg
的说明:
- ObjectName
RC:VcMsg
的消息为旧版语音消息。旧版语音消息中直接发送 BASE64 编码后的语音数据。 - 推荐使用高清语音消息
RC:HQVCMsg
。高清语音消息可将录制的音频数据存储到服务端,而消息体内只保存 URL。摆脱了消息体 128K 的大小限制,所以拥有更高音质。语音时长上限为 60 秒。
文件消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:FileMsg
的文件消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:HQVCMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
文件消息内容结构体
文件消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"name":"file.txt",
"size":190184,
"type":"txt",
"localPath":"",
"fileUrl":"http://www.demo.com/am.ind",
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
文件消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
name | String | 否 | 文件名称。如不传,调用客户端 SDK 中的 downloadMediaMessage 方法下载后会默认生成一个名称。 |
size | String | 是 | 文件大小,单位:Byte。 |
type | String | 是 | 文件类型。 |
localPath | String | 是 | 文件的本地地址。仅客户端使用此参数,服务端不传入。 |
fileUrl | String | 是 | 文件的服务器地址。通过 IM Server API 发送文件消息时,需要自行上传文件到应用的文件服务器,生成文件地址后进行发送。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为:[文件] + 文件名,如:“[文件] 123.txt”。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[文件] + 文件名。可在发送消息时自定义推送内容。
小视频消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:SightMsg
的小视频消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:SightMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
小视频消息内容结构体
小视频消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"sightUrl":"http://rongcloud...com/video...",
"content":"/9j/4AAQSkZ/2wB...hDSaSiimB//9k=",
"duration":2,
"size":734320,
"name":"video_xx.mp4",
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":"extra"
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
小视频消息消息内容 JSON 对象中的 content
key 用于表示缩略图 Base64 编码后的值。
- 从服务端发送小视频消息时,您需要自行生成缩略图(建议最长边不超过 240 像素),进行 Base64 编码后放入
content
中。注意,部分工具图片转 Base64 输出结果会携带 Data URI 前缀。例如:data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD
。请丢弃其中 Data URI 前缀,仅保留数据部分,例如:/9j/4AAQSkZJRgABAgAAZABkAAD
。 - 从客户端发送小视频消息时,SDK 自动以宽度和高度中较长的边不超过 240 像素进行等比压缩生成缩略图。接收方的会话页面仅展示缩略图(最长边 240 像素)。
小视频消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
sightUrl | String | 是 | 上传到文件服务器的小视频地址。通过 Server API 发送视频消息时,需要自行上传视频文件到应用的文件服务器,生成文件地址后进行发送。 |
content | String | 是 | 小视频首帧的图片缩略图进行 Base64 编码的结果值。Base64 字符串长度建议为 5k,最大不超过 10k。注意在 Base64 进行 Encode 后需要将所有 \r\n 和 \r 和 \n 替换成空。 |
duration | Int | 是 | 视频时长,单位:秒。
|
size | String | 是 | 视频大小单位 Byte。 |
name | String | 是 | 发送端视频的文件名,小视频文件格式为 MP4 。IMKit SDK 中目前支持播放的视频文件格式为 mp4(H.264+AAC),IMLib SDK 中播放功能需要开发者自行实现。 |
user | String | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为固定字符串:[小视频]。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[小视频]。可在发送消息时自定义推送内容。
位置消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:LBSMsg
的位置消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:LBSMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
位置消息内容结构体
位置消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"content":"bhZPzJXimRwrtvc=",
"latitude":39.9139,
"longitude":116.3917,
"poi":"北京云中融信网络科技有限公司",
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
位置消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
content | String | 是 | 表示位置图片缩略图,格式为 JPG,以 Base64 进行 Encode 后需要将所有 \r\n 和 \r 和 \n 替换成空。 |
latitude | Number | 是 | 位置的纬度值。 |
longitude | Number | 是 | 位置的经度值。 |
poi | String | 是 | 表示位置的 poi 信息。 |
user | String | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
属性 | 描述 |
---|---|
是否在本地存储 | 发送、接收该消息后,会在本地数据库存储。Web 端 和 小程序端因本地存储不可靠,不支持客户端消息存储 。 |
是否计入消息计数属 | 会话未读消息数 +1。该属性只影响会话列表未读数计数。App 应用角标可根据每个会话列表未读数累加后获得。 |
是否可接收推送通知 | 支持推送到客户端(Web、小程序、PC 端除外)。当有离线缓存消息时,进行远程推送提醒。 |
推送通知标题 | 默认为发送者昵称(群昵称)。可在发送消息时指定自定义推送标题。 |
推送通知内容 | 默认中文推送内容为 “[位置]“。可在发送消息时自定义推送内容。 |
引用消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:ReferenceMsg
的引用消息。
一般应用于单聊、群聊场景。对指定消息内容进行回复时可发送引用消息。目前支持被引用的消息,包括:文本消息、文件消息、图文消息、图片消息,被引用的消息可以再次被引用回复。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:ReferenceMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
引用消息内容结构体
引用消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"content":"引用消息自身内容结构体内包含的具体内容!",
"referMsgUserId":"432432",
"objName":"RC:TxtMsg",
"referMsg":{
"content":"Hello world!",
"extra":""
},
"mentionedInfo":{
"type":2,
"userIdList":["123","456"],
"mentionedContent":"有人@你"
},
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
引用消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
content | String | 是 | 引用消息时发送的文字内容,包括表情。 |
referMsgUserId | String | 是 | 被引用消息的发送用户 Id。 |
referMsg | String | 是 | 被引用消息的消息结构 JSON 格式。 |
objName | String | 是 | 被引用消息的消息类型,目前支持的消息类型:文本 RC:TxtMsg 、图片 RC:ImgMsg 、文件 RC:FileMsg |
mentionedInfo | Object | 否 | 在群组中发送 @ 消息时,需要传入被 @ 用户信息。单聊场景下无需设置此属性。使用 IM Server API 发送群聊 @ 消息时,必须设置 isMentioned 字段为 1 ,指定当前消息为 @消息。否则默认发送普通消息,mentionedInfo 数据无效。 |
mentionedInfo.type | int | 是 | @ 功能类型,1 表示 @ 所有人、2 表示 @ 指定用户。 |
mentionedInfo.userIdList | String[] | 否 | 指定用户列表,type 为 2 时有效,为 1 时 userIdList 可以为空。 |
mentionedInfo.mentionedContent | String | 否 | @ 消息的自定义 Push 内容。@消息携带的 mentionedContent 优先级最高,会覆盖所有默认或自定义的 pushContent 数据。 |
user | Object | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为消息内容。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:消息内容。可在发送消息时自定义推送内容。
合并转发消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:CombineMsg
的合并转发消息。
客户端仅 IMKit SDK 支持发送合并转发消息。从客户端发送合并转发消息后,消息以 HTML 文件的方式存储到即时通讯服务端,对端收到消息后计入未读消息数、进行存储。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:CombineMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。
- 必须在 API 接口的消息类型字段(字段名一般为
合并转发消息内容结构体
合并转发消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"localPath":"file:///storage/emulated/0/Android/data/cn.rongcloud.im/cache/combine/157829828.html",
"remoteUrl":"https://rongcloud-html-cn.ronghub.com/text_plain__RC-2019-12-17_754_157130.html?e=1592Q=",
"conversationType":1,
"nameList":["lisx","ddddd"],
"summaryList":["lisx : nzj","ddddd : 记得记得晋级赛","ddddd : 就是就是睡觉觉","lisx : nznznn"]
}
已复制
1
2
3
4
5
6
7
合并转发消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
localPath | String | 否 | 合并转发消息详细信息的本地 HTML 文件路径。仅客户端使用此字段,服务端不传入。 |
remoteUrl | String | 是 | 远端 HTML 文件路径。 |
conversationType | Int | 是 | 会话类型,目前支持二人会话及群聊会话,二人会话是 1 、群组会话是 3 。 |
nameList | String | 是 | 在会话界面显示的合并转发消息中,前 4 条消息的用户名称。 |
summaryList | String | 是 | 在会话界面显示的合并转发消息中,前 4 条消息的简略信息,与 nameList 属性相对应。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为固定字符串:[聊天记录]。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[聊天记录]。可在发送消息时自定义推送内容。
图文消息
即时通讯服务定义了消息类型标识(ObjectName
) 为 RC:ImgTextMsg
的图文消息。
- 客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 如果使用服务端 API 发送该类型消息,注意传入正确的正确的消息类型标识以及消息内容结构体:
- 必须在 API 接口的消息类型字段(字段名一般为
ObjectName
)传入消息类型标识RC:ImgTextMsg
。 - 必须在 API 接口的消息内容字段(字段名一般为
content
) 中传入当前消息类型的消息内容结构体。客户端 SDK 中已内置该消息类型,可直接调用相关方法发送。
- 必须在 API 接口的消息类型字段(字段名一般为
图文消息内容结构体
图文消息的消息内容 JSON 对象结构如下(将下方的消息内容 JSON 对象序列化为 JSON String,作为 API 接口的 content
字段的值):
{
"title":"标题",
"content":"消息描述",
"imageUri":"http://p1.cdn.com/fds78ruhi.jpg",
"url":"http://www.rongcloud.cn",
"user":
{
"id":"4242",
"name":"Robin",
"icon":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
图文消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
title | String | 是 | 消息的标题。 |
content | String | 是 | 消息的文字内容。 |
imageUri | String | 是 | 消息中图片地址,图片尺寸为:120 x 120 像素。通过 IM Server API 发送图片消息时,需要自行上传文件到应用的文件服务器,生成图片地址后进行发送。 |
url | String | 是 | 点击图片消息后跳转的 URL 地址。 |
user | String | 否 | 消息中携带的消息发送者的用户信息。一般情况下不建议在消息中携带用户信息。建议仅在直播场景下使用。 |
user.id | String | 否 | 消息发送者的用户 ID。 |
user.name | String | 否 | 消息发送者的用户昵称。 |
user.portrait | String | 否 | 消息发送者的头象。 |
user.extra | String | 否 | 扩展信息,可以放置任意的数据内容。 |
extra | String | 否 | 扩展信息,可以放置任意的数据内容,也可以去掉此属性。 |
客户端默认属性
- 在客户端本地存储
- 计入会话消息未读数
- 默认支持离线消息推送
- 推送通知标题:单聊与系统会话消息的推送标题默认为发送者昵称。群组与超级群的推送标题默认为群名称。默认使用注册用户或创建群组时传入即时通讯服务端的数据。您可以在发送消息时自行指定推送标题。发消息时指定的推送标题具有最高优先级。
- 推送通知内容:默认中文推送内容为固定字符串:[图文]。如果为群聊或超级群消息,会带上发送者昵称前缀,例如:发送者昵称:[图文]。可在发送消息时自定义推送内容。
如何发送 @ 消息
@消息并非预定义的消息类型,不具有指定的 ObjectName。
即时通讯服务支持在向群组、超级群中发送以下类型的消息时,在消息内容中添加 mentionedInfo
对象,实现提及他人(@)的效果。
- 文本消息(ObjectName 为
RC:TxtMsg
) - 引用消息(ObjectName 为
RC:ReferenceMsg
)
@ 消息的消息内容内部需要携带 mentionedInfo
对象,结构如下:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
mentionedInfo | Object | 否 | 在群组中发送 @ 消息时,需要传入被 @ 用户信息。单聊场景下无需设置此属性。使用 IM Server API 发送群聊 @ 消息时,必须设置 isMentioned 字段为 1 ,指定当前消息为 @消息。否则默认发送普通消息,mentionedInfo 数据无效。 |
mentionedInfo.type | int | 是 | @ 范围。1 表示 @ 所有人。2 表示需要 @ 指定用户,用户列表由 mentionedInfo.userIdList 指定。 |
mentionedInfo.userIdList | String[] | 否 | 指定用户列表,type 为 2 时有效,为 1 时 userIdList 可以为空。 |
mentionedInfo.mentionedContent | String | 否 | @ 消息的自定义 Push 内容。@消息携带的 mentionedContent 优先级最高,会覆盖所有默认或自定义的 pushContent 数据。 |
如果通过 IM Server API 发送 @消息,必须同时设置 isMentioned
为 1
,指定当前消息为 @ 消息。
携带 @ 信息的文本消息内容结构
往群组、超级群发送文本消息时,在消息内容中携带 mentionedInfo
属性可发送 @ 消息。以下示例构造了一条文本内容,提及了用户 ID 为「123」和「456」的用户。@消息携带的 mentionedContent
优先级最高,会覆盖所有默认或自定义的 pushContent
数据。
{
"content":"@张三 @李四 Hello World!",
"mentionedInfo":{
"type":2,
"userIdList":["123","456"],
"mentionedContent":"有人@你"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
注意,从服务端发送 @消息时,需要手动在消息内容 JSON 对象内部 content
字段中填入对应 ID 的用户昵称,在本例中为用户 ID 为「123」和「456」对应的昵称为「张三」「李四」。
以下为 JSON 结构图。具体字段说明参见文本消息内容结构。
携带 @ 信息的引用消息内容结构
往群组、超级群发送引用消息时,在消息内容中携带 mentionedInfo
属性可发送 @ 消息。@消息携带的 mentionedContent
优先级最高,会覆盖所有默认或自定义的 pushContent
数据。
{
"content":"@Tom 引用消息自身内容结构体内包含的具体内容!",
"referMsgUserId":"432432",
"objName":"RC:TxtMsg",
"referMsg":{
"content":"Hello world!",
"extra":""
},
"mentionedInfo":{
"type":2,
"userIdList":["tom1999"],
"mentionedContent":"有人@你"
},
"extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
注意,从服务端发送 @消息时,需要手动在消息内容 JSON 对象内部 content
字段中填入对应 ID 的用户昵称,在本例中为用户 ID 为「tom1999」,对应的昵称为「Tom」。
以下为 JSON 结构图。具体字段说明参见文本消息内容结构。
