Web

消息扩展

更新时间: 2024/03/14 19:21:09

消息扩展功能提供了即时通讯相关的扩展功能,如与消息回复相关的 Thread 消息。

本文主要介绍 Thread 消息的功能原理和实现方法。

前提条件

Thread 消息功能需要单独开通才能使用。如有需要,请至云信控制台应用管理 > 产品功能 > IM 即时通讯 > 全局功能开通会话消息回复。。

Thread 消息功能原理

Thread 消息指始于某条消息的回复链上的所有消息,其中的起始消息我们称之为根消息。

回复链示例见下图。

Thread消息.png

上图中:

  • 消息 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

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • Thread 消息功能原理
  • 实现方法
  • 发送回复消息并使其成为 Thread 消息
  • 获取 Thread 消息列表
  • 根据消息 ID 批量查询消息
  • API 参考