全部文档

更新时间: 2021-03-08

# 功能描述

3.0.7 版本开始支持单条消息扩展信息设置功能。

功能描述如下:

  • 对已发送并且已设置扩展标识的消息,可设置扩展信息。

  • 信息以 Key、Value 的方式进行存储,单条消息可设置 300 个扩展信息。

  • 该功能仅支持单聊、群聊会话类型,暂不支持在聊天室中使用。

  • 如已开通历史消息云存储功能,针对某一条消息设置的扩展信息,也会同时保存到该条消息的历史记录中。

  • 每个终端在设置扩展信息时,如未达到上线都可以进行设置,所在并发情况下,会出现设置超过 300 的情况,超出部分不会进行丢弃删除。

  • 设置消息扩展后,会产生内置消息. 频繁设置扩展会产生大量消息,如果对消息量增长敏感,请谨慎使用此功能。

适用场景:

需要对原始消息增加状态标识的需求, 都可使用消息扩展

  • 比如消息评论需求,可通过设置原始消息扩展信息的方式添加评论信息

  • 比如礼物领取、订单状态变化需求,通过此功能改变消息显示状态. 向用户发送礼物,默认为未领取状态,用户点击后可设置消息扩展为已领取状态

# 设置监听

Web 扩展监听需在 im.watch 中增加 expansion 事件,为避免设置重复,可移步 监听设置 查看实现方法

# 设置扩展

发送消息设置扩展内容

参数说明:

参数 类型 必填 默认值 说明 最低版本
messageType String -- 消息类型 3.0.0
content String -- 消息内容 3.0.0
canIncludeExpansion Boolean false 是否携带扩展 3.0.7
expansion Object -- 携带的扩展内容 3.0.7

代码示例:

var conversation = im.Conversation.get({
  targetId: '接收方的 userId',
  type: RongIMLib.CONVERSATION_TYPE.PRIVATE
});

conversation.send({
  messageType: RongIMLib.MESSAGE_TYPE.TEXT, // 'RC:TxtMsg'
  content: { // 填写开发者定义的消息内容
    content: '文字消息'
  },
  canIncludeExpansion: true, // 是否携带扩展
  expansion: {  // 携带的扩展内容
    key: 'value',
    key2: 'value2'
  }
}).then((message) => {
  console.log('发送携带扩展的文字消息成功', message);
}).catch((error) => {
  console.log('发送携带扩展的文字消息失败', error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

扩展限制:

  1. Key 支持英文、字母、数字、+、=、-、_
  2. Key 最大长度 32 字符
  3. Value 最大长度 64 字符
  4. 单次调用最多设置 20 个键值对
  5. 单条消息最多设置 300 个键值对

# 更新扩展

更新消息的扩展内容

参数说明:

参数 类型 必填 说明 最低版本
expansion Object 扩展内容 3.0.7
message Object 原消息体 3.0.7

代码示例:

var conversation = im.Conversation.get({
  targetId: '接收方的 userId',
  type: RongIMLib.CONVERSATION_TYPE.PRIVATE
});
var expansion = {
  key: '新 value',
  key2: '旧 value2',
  key3: '新 value3'
};
var message = {
  content: {
    content: '文字消息'
  },
  messageUId: 'BK96-PP18-OIQ6-9GPP',
  canIncludeExpansion: true,
  expansion: {
    key2: '旧 value2'
  },
  // .....
};
conversation.updateMessageExpansion(expansion, message).then(() => {
  console.log('更新消息扩展成功');
}).catch((error) => {
  console.log('更新消息扩展失败', error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 删除扩展

参数说明:

参数 类型 必填 说明 最低版本
keys Array 删除的 keys 3.0.7
message Object 原消息体 3.0.7

代码示例:

var conversation = im.Conversation.get({
  targetId: '接收方的 userId',
  type: RongIMLib.CONVERSATION_TYPE.PRIVATE
});
var keys = ['key', 'key3'];
conversation.removeMessageExpansion(keys, message).then(() => {
  console.log('删除消息扩展成功')
}).catch((reason) => {
  console.log('删除消息扩展失败', reason)
});
已复制
1
2
3
4
5
6
7
8
9
10

文档是否解决您的问题 ?

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