更新时间: 2020-09-02
- 发送消息必须在成功连接融云服务器 connect 成功之后进行。
- 每秒最多发送 5 条消息。
# 消息结构
字段名 | 类型 | 说明 |
---|---|---|
type | Number | 会话类型 |
targetId | String | 接收方的 userId |
senderUserId | String | 发送者 id |
content | Object | 消息内容 |
messageType | String | 消息标识 |
messageUId | String | 服务端存储的消息 id |
messageDirection | Number | 消息方向。 发送: 1, 接收: 2 |
isOffLineMessage | Boolean | 是否为离线消息 |
sentTime | Number | 消息在融云服务端的发送时间 |
receivedTime | Number | 消息接收时间. isOffLineMessage 为 true 时, receivedTime 无效 |
isPersited | Boolean | 消息是否存储在服务端 |
isCounted | Boolean | 消息是否计数 |
disableNotification | Boolean | 消息是否静默,静默消息不会发送 Push 信息和本地通知提醒 |
# 参数说明
参数 | 类型 | 必填 | 默认值 | 说明 | 最低版本 |
---|---|---|---|---|---|
messageType | String | 是 | -- | 消息类型. 与移动端 ObjectName 一致 | 3.0.0 |
content | String | 是 | -- | 消息内容 | 3.0.0 |
isPersited | Boolean | 否 | true | 是否存储在服务端 | 3.0.0 |
isCounted | Boolean | 否 | true | 是否计数. 计数消息接收端接收后未读数加 1 | 3.0.0 |
pushContent | String | 否 | -- | Push 显示内容 | 3.0.0 |
pushData | String | 否 | -- | Push 通知时附加信息 | 3.0.0 |
isVoipPush | String | 否 | false | 为 ture 时, 对端不在线的 iOS 会收到 Voip Push. Android 无影响 | 3.0.0 |
isStatusMessage | Boolean | 否 | false | 是否发送状态消息,设置为 true 后 isPersited 和 isCounted 属性失效 | 3.0.0 |
disableNotification | Boolean | 否 | false | 是否发送静默消息,设置为 true 后不会发送 Push 信息和本地通知提醒 | 3.0.5 |
发送代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: 's:person', // 填写开发者定义的 messageType content: { // 填写开发者定义的消息内容 name: 'RongCloud', age: 12 }, isPersited: true,// 是否存储在服务端,默认为 true isCounted: true, // 是否计数. 计数消息接收端接收后未读数加 1,默认为 true pushContent:'user 发送了一条消息', // Push 显示内容 pushData: 'Push 通知时附加信息', // Push 通知时附加信息, 可不填 isStatusMessage: false // 设置为 true 后 isPersited 和 isCounted 属性失效 disableNotification: false // 设置为 true 后移动端不会收到 Push 信息和本地通知提醒 }).then(function(message){ console.log('发送 s:person 消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 发送消息
# 文本消息
消息说明
messageType 与移动端 ObjectName 相对应。
messageType | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:TxtMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
参数说明
属性名称 | 属性类型 | 是否必填 | 属性说明 |
---|---|---|---|
content | String | 是 | 文本消息内容 |
extra | String | 否 | 附加信息,一般为消息不显示消息内容 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: RongIMLib.MESSAGE_TYPE.TEXT, // 'RC:TxtMsg' content: { content: 'Hello RongCloud' // 文本内容 } }).then(function(message){ console.log('发送文字消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 图文消息
消息说明
messageType | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:ImgTextMsg | 存储 | 计数 | 存储 | 推送 | 消息内容 |
参数说明
属性名称 | 属性类型 | 是否必填 | 属性说明 |
---|---|---|---|
content | String | 是 | 图文内容 |
title | String | 是 | 图文标题 |
imageUri | String | 是 | 图片上传到服务器的 url |
url | String | 是 | 富文本消息点击后打开的 URL |
extra | String | 否 | 附加信息,一般为消息不显示消息内容 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: RongIMLib.MESSAGE_TYPE.RICH_CONTENT, // 'RC:ImgTextMsg' content: { title: '图文标题', content: '图文内容', imageUri: '图片上传到服务器的 url', url: '富文本消息点击后打开的 URL' } }).then(function(message){ console.log('发送图文消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Emoji 消息
- web 端发送 Emoji 消息,开发者直接使用 文本消息 发送即可。
- 融云提供 Emoji 插件,内置了 128 个 Emoji 表情的图片, 做消息输入框的表情选项, 也可自行扩展配置。
- 发消息时, 必须直接发送 Emoji 原生字符. 如:😀 , 转换方法:
symbolToEmoji
。 - Web SDK 接收消息时接收到的是 Unicode 编码格式, 如:”ef600” 需要转化才能正确显示原生 Emoji。
# 位置消息
消息说明
messageType 与移动端 ObjectName 相对应。
messageType | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:LBSMsg | 存储 | 计数 | 存储 | 推送 | [位置] |
参数说明
属性名称 | 属性类型 | 是否必填 | 属性说明 |
---|---|---|---|
longitude | Number | 是 | 经度 |
latitude | Number | 是 | 维度 |
poi | String | 是 | 位置信息 |
content | String | 是 | 位置缩略图,图片需要是不带前缀的 base64 字符串 |
extra | String | 否 | 附加信息,一般为消息不显示消息内容 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); var latitude = 40.0317727; var longitude = 116.4175057; var poi = '北苑路 融云'; var content = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABsSFBcUERsXFhceHBsgKE'; // 位置图片 base64 conversation.send({ messageType: RongIMLib.MESSAGE_TYPE.LOCATION, // 'RC:LBSMsg' content: { latitude: latitude, longitude: longitude, poi: poi, content: content } }).then(function(message){ console.log('发送位置消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 正在输入状态消息
消息说明
messageType 与移动端 ObjectName 相对应。
messageType | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:TypSts | 不存储 | 不计数 | 不存储 | 不推送 | 无 |
参数说明
属性名称 | 属性类型 | 是否必填 | 属性说明 |
---|---|---|---|
typingContentType | String | 是 | 正在输入的消息 ObjectName |
data | String | 否 | 携带信息 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: 'RC:TypSts', content: { typingContentType: 'RC:TxtMsg' // 正在输入的消息类型 }, isStatusMessage: true // 正在输入建议发送状态消息, 不存储、不计数, 且仅在线用户可收到 }).then(function(message){ console.log('发送正在输入消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 图片消息
- 发送图片消息只需要图片上传后的 url,和图片的略缩图。
- 融云提供上传插件,文件默认存储到
七牛云
,插件不包含发送消息。 - 插件提供的是上传方式,
开发者也可通过自己的方式将文件上传至自己文件服务
。 - 融云默认上传文件存储有效期为
6 个月
, 上传的文件不支持迁移。
# 语音消息
- SDK 目前不提供录音功能, 开发者需生成语音 url 后, 传入发送消息接口, 发送语音消息
- 语音上传请参照 文件上传 进行是实现。
消息说明
messageType | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:HQVCMsg | 存储 | 计数 | 存储 | 推送 | [语音] |
参数说明
属性名称 | 属性类型 | 是否必填 | 属性说明 |
---|---|---|---|
remoteUrl | String | 是 | 媒体内容上传服务器后的网络地址 |
type | String | 否 | 编解码类型,默认为 aac 音频 |
duration | Number | 否 | 语音消息的时长,最长为 60 秒(单位:秒) |
extra | String | 否 | 附加信息,一般为消息不显示消息内容 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: RongIMLib.MESSAGE_TYPE.HQ_VOICE, // 'RC:HQVCMsg' content: { remoteUrl: 'https://rongcloud-audio.cn.ronghub.com/audio_amr__RC-2020-03-17_42_1584413950049.aac?e=1599965952&token=CddrKW5AbOMQaDRwc3ReDNvo3-sL_SO1fSUBKV3H:CDngyWj7ZApNmAfoecng7L_3SaU=', // 音频 url, 建议格式: aac duration: 6, // 音频时长 type: 'aac' } }).then(function(message){ console.log('发送语音消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 文件消息
- 发送图片消息只需要图片上传后的 url,和图片的略缩图。
- 融云提供上传插件,文件默认存储到
七牛云
,插件不包含发送消息。 - 插件提供的是上传方式,
开发者也可通过自己的方式将文件上传至自己文件服务
。 - 融云默认上传文件存储有效期为
6 个月
, 上传的文件不支持迁移。
# 小视频消息
小视频消息需要先在 开发者后台 (opens new window) 的 服务管理-> 小视频-> 服务设置
中开通小视频功能才可发送。
- 此消息类型 Web 端 SDK 仅支持解析展示,不提供录制。
- 如 Web 端需要发送小视频消息,小视频录制需要开发者自行实现。
消息说明
messageType | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:SightMsg | 存储 | 计数 | 存储 | 推送 | [小视频] |
参数说明
参数 | 类型 | 说明 |
---|---|---|
sightUrl | Number | 上传到文件服务器的小视频地址 |
content | String | 小视频首帧的缩略图进行 Base64 编码的结果值,格式为 JPG,注意在 Base64 进行 Encode 后需要将所有 \r\n 和 \r 和 \n 替换成空 |
duration | Object | 视频时长,单位:秒 |
size | Object | 视频大小单位 bytes |
name | Function | 发送端视频的文件名,小视频文件格式为 mp4。 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: RongIMLib.MESSAGE_TYPE.SIGHT, // 'RC:SightMsg' content: { content: "/9j/4AAQSkZ/2wB...hDSaSiimB//9k=" sightUrl: "http://rongcloud...com/video...", duration: 10, size: 734320, name: "video_xx.mp4", } }).then(function(message){ console.log('发送小视频消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# GIF 消息
消息说明
ObjectName | 存储属性 | 计数属性 | 离线属性 | 推送属性 | 推送内容 |
---|---|---|---|---|---|
RC:GIFMsg | 存储 | 计数 | 存储 | 推送 | [图片] |
参数说明
参数 | 类型 | 说明 |
---|---|---|
gifDataSize | Number | GIF 图片文件大小,单位为 KB |
remoteUrl | String | GIF 图片的服务器地址 |
width | Number | GIF 图的宽 |
height | Number | GIF 图的高 |
代码示例
var conversation = im.Conversation.get({ targetId: '接收方的 userId', type: RongIMLib.CONVERSATION_TYPE.PRIVATE }); conversation.send({ messageType: RongIMLib.MESSAGE_TYPE.GIF, // 'RC:GIFMsg' content: { gifDataSize:34563, height:246, remoteUrl:"https://rongcloud-image.cn.ronghub.com/image_jpe64562665566.gif", width:263, } }).then(function(message){ console.log('发送 GIF 消息成功', message); });
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15