用户内容类消息格式
即时通讯服务将用户使用即时通讯业务时可能发送的消息归为一类,称为用户内容类消息。即时通讯服务根据具体消息内容,为文本、图片、图文(已不推荐使用)、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":""
}
文本消息内容结构参数如下表所示:
名称 | 类型 | 必传 | 说明 |
---|---|---|---|
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":""
}
图片消息的消息内容 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":""
}