消息扩展
更新时间: 2024/03/14 19:21:09
消息扩展功能提供了即时通讯相关的扩展功能,如与消息回复相关的 Thread 消息。
本文主要介绍 Thread 消息的功能原理和实现方法。
前提条件
Thread 消息功能需要单独开通才能使用。如有需要,请至云信控制台应用管理 > 产品功能 > IM 即时通讯 > 全局功能开通会话消息回复。。
Thread 消息功能原理
Thread 消息指始于某条消息的回复链上的所有消息,其中的起始消息我们称之为根消息。
回复链示例见下图。
上图中:
- 消息 A 是消息 B 的父消息,消息 B1 是消息 C 的父消息
- 消息 C 是消息 B1 的子消息
- 消息 A 是消息 B 和消息 C 的根消息
- 消息 A、B、C 统称为 Thread 消息
- 一条 Thread 消息必须有一条父消息或至少一条子消息。如果一条消息既没有父消息,也没有子消息,则为普通消息。
- 若未开通 Thread 消息功能,回复时系统会自动将所发消息转换为一条普通消息。
Thread 消息中,除了根消息(如上图中的消息 A),其他消息都具有下表所示的属性。
属性 | 说明 |
---|---|
threadMsgFromAccount |
根消息的发送者账号 |
threadMsgToAccount |
根消息的接收者账号 |
threadMsgTime |
根消息的发送时间 |
threadMsgIdServer |
根消息在服务端(云信服务器)生成的消息 ID,该消息 ID 不一定存在(如开启易盾反垃圾的情况) |
threadMsgIdClient |
根消息的客户端生成的消息 ID |
replyMsgFromAccount |
父消息的发送者账号 |
replyMsgToAccount |
父消息的接收者账号 |
replyMsgTime |
父消息的发送时间 |
replyMsgIdServer |
父消息在服务端(云信服务器)生成的消息 ID,该消息 ID 不一定存在(如开启易盾反垃圾的情况) |
replyMsgIdClient |
父消息的客户端生成的消息 ID |
实现方法
发送回复消息并使其成为 Thread 消息
您可通过在发送消息时添加replyMsg
参数,实现该功能。
示例如下:
nim.on('msg', function(msg) {
console.log(msg)
// msg: {
// scene: 'p2p',
// from: 'cs2',
// to: 'cs1',
// time: 1589179595804,
// type: 'text',
// sessionId: 'p2p-cs2',
// target: 'cs2',
// flow: 'in',
// status: 'success',
// text: 'hello world!',
// idClient: '1296612f2562e916be8fc4fdbc9e938e',
// idServer: '2798262',
// }
nim.msg.sendText({
scene: 'p2p',
to: 'cs2',
text: 'reply hello world',
replyMsg: msg,
done: (e, r) => console.log(e ? '发送消息失败' : '发送消息成功')
})
})
获取 Thread 消息列表
您可通过 getThreadMsgs 方法获取 Thread 消息列表。
示例如下:
jsawait nim.msgExtend.getThreadMsgs({
"scene": "p2p",
"threadMsgFromAccount": "cjhz1",
"threadMsgIdClient": "YOUR_IDCLIENT",
"threadMsgIdServer": "YOUR_IDSERVER",
"threadMsgTime": 1632228906705,
"threadMsgToAccount": "cs1",
"limit": 100,
"reverse": false
})
根据消息 ID 批量查询消息
您可通过 getMsgsByIdServer 方法根据消息在云信服务器的 ID (idServer
)批量查询 Thread 消息。
示例如下:
jsawait nim.msgExtend.getMsgsByIdServer({
"reqMsgs": [
{
"scene": "p2p",
"from": "cjhz1",
"to": "cs1",
"idServer": "10876003",
"time": 1632228906705
}
]
})
idServer
不一定存在。比如在易盾反垃圾开启的情况下,某消息包含敏感词时云信服务器只会响应发送方但并不发送,那么该消息就不存在 idServer
。
API 参考
Thread 消息相关 API 都挂载在 msgExtend 模块里,请通过 nim.msgExtend
访问。
相关 API 参考请参见 MsgExtendServiceInterface。
此文档是否对你有帮助?