Web

圈组消息撤回

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

QChat SDK 的QChatMsgServiceInterface接口提供圈组消息撤回的方法,支持在消息发送后将消息撤回。圈组的消息撤回功能属于双向撤回。撤回之后,消息接收者和发送者都将收到一条消息撤回通知。

消息发送方和拥有撤回他人消息权限(recallMsg)的频道成员都可撤回消息。

前提条件

实现流程

本文以 发送方的消息被频道成员A 撤回 为例进行介绍,即发送方在下文中为消息被撤回的一方。

API 调用时序

以下时序图可能因网络问题而显示异常。如显示异常,一般刷新当前页面即可正常显示。

uml diagram

具体流程

本节仅对上图中标为橙色的流程进行说明,其他流程请参考相关文档。例如:

  1. 注册回调函数并登录。

    • 发送方在登录圈组前,注册messageUpdate消息更新事件回调函数(消息被撤回属于消息状态更新)。
    • 频道成员A 在登录圈组前,注册message消息接收事件回调函数和messageUpdate消息更新事件回调函数。

    示例代码如下:

    注册消息接收事件回调
    const qchat = new QChat({
      // 初始化参数
    })
    qchat.on('message',(message)=>{})
    
    注册消息更新事件回调
    const qchat = new QChatSDK({
      ... 
    })
    qchat.on('messageUpdate', function (msg) {
      console.log('receive a messageUpdate', msg)
    })
    
    await qchat.login()
    
    
    
  2. 频道成员A 接收到消息后,调用revokeMessage方法撤回消息。


    调用限制

    • 默认只能在消息发送后 2 分钟内撤回消息。
      可在云信控制台配置“可撤回时长”在云信控制台选择应用,进入IM 免费版/专业版 > 功能权限开通 > 拓展配置 > 圈组 > 圈组消息可撤回时长即可配置。
    • 非消息发送方需要拥有撤回他人消息的权限,才能撤回消息。

    示例代码如下:

    let msg = await qchat.qchatMsg.sendMessage({
      "serverId": "YOUR_SERVERID",
      "cahnnelID": "YOUR_CHANNELID",
      "type": "text",
      "body":" "
    })
    
    msg = await qchat.qchatMsg.revokeMessage({
      "ps": "recall msg",
      "message": message,
    })
    
    
  3. 消息更新事件回调函数触发,双方通过该回调接收消息更新响应。

    云信服务端不会下发“消息更新响应”通知给发起撤回操作的设备,因为操作者不需要接收当前操作的通知。但如果操作者使用相同 IM 账号在其他设备登录,将收到该通知。

API 参考

API
说明
message 消息接收回事件调函数
messageUpdate 消息更新事件回调函数
revokeMessage 撤回消息
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现流程
  • API 调用时序
  • 具体流程
  • API 参考