跳到主要内容

撤回消息

撤回指定消息本质是发送一条撤回命令消息。移动端收到撤回命令消息后,原目标消息将被删除,同时生成一条 objectNameRC:RcNtf 的通知消息,会话界面中可根据 RC:RcNtf 展示。

撤回命令消息也会存储到历史消息中,SDK 在获取历史消息时,会获取到撤回命令消息和被撤回的原始消息。移动端 SDK 已内部实现删除逻辑,开发者无需额外处理。

开通服务

使用撤回消息功能无需开通服务。注意,通过服务端撤回消息时,如果撤回操作者的客户端在线,客户端会同步执行该撤回操作。如果操作者客户端长期离线,则下次上线时通过 Server API 撤回的消息可能仍会在发件人客户端展示(收件方不受影响)。建议开通多设备消息同步功能,在发件人客户端再次上线时由 SDK 自动处理。开通方式详见消息管理服务配置

请求方法

POST: https://数据中心域名/message/recall.json

频率限制: 每秒钟限 100 次

签名规则: 所有服务端 API 请求均需要进行规则校验,详见 API 请求签名

参数说明

参数类型必传说明
fromUserIdString消息发送人用户 ID。
conversationTypeInt会话类型。支持的会话类型包括:1(二人会话)、3(群组会话)、4(聊天室会话)、6(系统会话)、10(超级群会话)。
targetIdString目标 ID,根据不同的会话类型(ConversationType),可能是用户 ID、群组 ID、聊天室 ID、超级群 ID,系统目标 ID。
busChannelString超级群频道 ID,仅适用于撤回超级群消息。使用要求如下:
  • 如果发送消息时指定了频道 ID,则撤回时必须指定频道 ID,否则无法撤回。
  • 如果发送消息时未指定频道 ID,则撤回时不可指定频道 ID,否则无法撤回。
客户端发送超级群消息时,频道 ID 对应字段名称为 channelId
messageUIDString消息唯一标识。
  • 可通过全量消息路由服务获取消息唯一标识,对应名称为 msgUID
  • 全量消息路由服务不支持的消息,目前只能通过历史消息日志获取,对应字段名称为 msgUID
sentTimeLong消息发送时间。
  • 可通过全量消息路由服务获取消息发送时间,对应名称为 msgTimestamp
  • 全量消息路由服务不支持的消息,目前只能通过历史消息日志获取,对应字段名称为 dateTime
isAdminInt是否为管理员,默认为 0,设为 1 时,IMKit 收到此条消息后,小灰条默认显示为“管理员 撤回了一条消息”。
isDeleteInt指定移动端接收方是否需要在本地删除原始消息记录及显示撤回消息提示,默认为 0
  • 0 时,移动端接收方仅将原始消息内容替换为撤回提示(小灰条通知),不删除该原始消息记录。
  • 1 时,移动端接收方会删除原始消息记录,不显示撤回提示(小灰条通知)。
注意:即时通讯服务端历史消息不保存已撤回的超级群消息记录。如果 isDelete 设置为 0,撤回超级群消息后,移动端本地会存有记录(显示为撤回提示),而 Web 端无记录,可能会造成用户体验差异。
disablePushBoolean是否为静默撤回,默认为 false,设为 true 时终端用户离线情况下不会收到撤回通知提醒。该字段不支持聊天室、超级群会话类型。
extraString扩展信息,可以放置任意的数据内容。不支持超级群会话(conversationType10)。

请求示例

POST /message/recall.json HTTP/1.1
Host: api.rong-api.com
App-Key: uwd1c0sxdlx2
Nonce: 14314
Timestamp: 1408710653491
Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8
Content-Type: application/x-www-form-urlencoded

fromUserId=fDR2cVpxxR5zSMUNh3yAwh&targetId=MersNRhaKwJkRV9mJR5JXY&conversationType=1&messageUID=5FGT-7VA9-G4DD-4V5P&sentTime=1507778882124

返回结果

HTTP 响应正文包含具有以下结构的 JSON 对象:

返回值返回类型说明
codeNumber返回码,200 为正常。

返回结果示例

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{"code":200}