全部文档

更新时间: 2020-09-02

  1. 发送消息必须在成功连接融云服务器 connect 成功之后进行。
  2. 每秒最多发送 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

# 发送消息

# 文本消息

消息说明

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
# 图文消息

消息说明

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
# 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
# 正在输入状态消息

消息说明

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
# 图片消息
  • 发送图片消息只需要图片上传后的 url,和图片的略缩图。
  • 融云提供上传插件,文件默认存储到七牛云插件不包含发送消息
  • 插件提供的是上传方式, 开发者也可通过自己的方式将文件上传至自己文件服务
  • 融云默认上传文件存储有效期为 6 个月, 上传的文件不支持迁移。
# 语音消息
  1. SDK 目前不提供录音功能, 开发者需生成语音 url 后, 传入发送消息接口, 发送语音消息
  2. 语音上传请参照 文件上传 进行是实现。

消息说明

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
# 文件消息
  • 发送图片消息只需要图片上传后的 url,和图片的略缩图。
  • 融云提供上传插件,文件默认存储到七牛云插件不包含发送消息
  • 插件提供的是上传方式, 开发者也可通过自己的方式将文件上传至自己文件服务
  • 融云默认上传文件存储有效期为 6 个月, 上传的文件不支持迁移。
# 小视频消息

小视频消息需要先在 开发者后台 (opens new window)服务管理-> 小视频-> 服务设置 中开通小视频功能才可发送。

  1. 此消息类型 Web 端 SDK 仅支持解析展示,不提供录制。
  2. 如 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
# 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

# 自定义消息

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助