更新时间: 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
扩展限制:
- Key 支持英文、字母、数字、+、=、-、_
- Key 最大长度 32 字符
- Value 最大长度 64 字符
- 单次调用最多设置 20 个键值对
- 单条消息最多设置 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
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
2
3
4
5
6
7
8
9
10