消息撤回

  • 默认设置:消息撤回时限默认为2分钟。
  • 是否增值服务:是
  • 端消息撤回
  • REST消息撤回
  1. 用户可以在消息发出后的撤回时限内从客户端发起消息撤回操作;
  2. 被撤回的消息将会从服务器的离线队列中删除,如果应用已开通消息漫游,则所有已登录客户端均撤回或不再接收此消息;
  3. 消息撤回时限默认2分钟,可根据开发者需求以AppKey为单位进行单独设置;
  4. 端消息撤回由用户在各客户端上主动进行消息撤回操作;
  5. REST消息撤回赋予了APP管理员对消息进行撤回的能力,可以对不良消息进行人工的处理;

注意:

消息撤回时限建议短于服务器保存消息的时间(默认7天,若开通消息漫游增值服务可延长至3个月或者6个月),如果消息撤回时限被设置成了超过服务端消息保存的时间,需要撤回的消息在请求撤回之前已经由于过期在服务端被删除,消息撤回请求会失败,无法从已经收到该消息的客户端撤回该消息。

Android

EMClient.getInstance().chatManager().recallMessage(contextMenuMessage);

iOS

(void)recallMessage:(EMMessage *)aMessage
           completion:(void (^)(EMMessage *aMessage, EMError *aError))aCompletionBlock;

Web

WebIM.conn.recallMessage({
   mid:mid,       //服务端消息ID
   to : username, //接收方ID
   type: 'chat'   // 单聊为'chat',群组为'groupchat',聊天室为 'chatroom'
})

查看具体集成方案

REST API

服务端消息撤回

应用管理员调用接口可以对发送消息进行撤回。允许撤回时间可以在通讯云管理后台进行设置,最大设置时间为7天。

HTTP Request

/{org_name}/{app_name}/messages/recall

Request Headers

参数说明
Content-Typeapplication/json
AuthorizationBearer ${token}

Request Body

参数说明
msg_id撤回消息的消息id
to撤回消息的接收方
chat_type撤回消息的消息类型,有单聊chat和群聊group_chat两种类型

Response Body

在返回值中查看msgs字段包含的信息

参数说明
msg_id需要撤回消息id
recalled返回结果,成功是yes
from消息撤回方,这里是admin表示通过REST接口撤回
to撤回消息送达方,用户名或者群名
chattype消息类型,chat或者groupchat

请求示例

curl -i -X POST -H "Authorization: Bearer YWMtnIF_ZI-GEea1KgfxnnDmKAAAAVjnsTKe0OE4vMOBWCtOcrB-56YcrhOHMho" "https://a1.easemob.com/{org_name}/{app_name}/messages/recall" 
-d '{"msgs": [{"msg_id": "673296797703079892","to": "99537689575425","chat_type": "groupchat"},
{"msg_id": "673296835082717140","to": "yifan1","chat_type": "chat"}] }' 

可能返回的结果示例

返回值200,表示撤回成功

成功结果:

msg_id :需要撤回消息id

recalled :返回结果,成功是yes

from : 消息撤回⽅方,这⾥里里是admin表示通过接⼝口撤回

to : 撤回消息送达⽅方,⽤用户名或者群名

chattype : 消息类型, chat或者groupchat

{
	"msgs": 
		[
			{ "msg_id":"673296835082717140",
      	"recalled":"yes", 
      	"from":"admin",
      	"to":"yifan1", 
      	"chattype":"chat" 
      	}, 
      	{ "msg_id":"673296797703079892",
      		"recalled":"yes", 
      		"from":"admin", 
      		"to":"99537689575425",
      		"chattype":"groupchat" 
				} 
			]
	}

失败结果:

msg_id :需要撤回消息id

recalled :撤回结果,有以下⼏几种情况

1."can't find msg to",⽆无法找到撤回消息的接收⽅方 
2."exceed recall time limit" 消息撤回时间超时 
3."not_found msg",消息已经过期或者已经被撤回 
4."internal error",出现后端服务异常 
{
	"msgs": 
	[
		{ "msg_id":"673296835082717140",
			"recalled":"not_found msg" 
		}, 
		{
			"msg_id":"673296797703079892",
			"recalled":"not_found msg
		} 
	] 
	}

返回结果:

{
403 
{ 
	"result":"App not enable to recall msg by rest" } 
}
{"msg_id":"673296835082717140"}    `

上一页:消息漫游

下一页:产品介绍