本文档已不再维护,新版文档见:消息管理–发送和接收消息。
注意:
消息撤回时限建议短于服务器保存消息的时间(默认7天,若开通消息漫游增值服务可延长至3个月或者6个月),如果消息撤回时限被设置成了超过服务端消息保存的时间,需要撤回的消息在请求撤回之前已经由于过期在服务端被删除,消息撤回请求会失败,无法从已经收到该消息的客户端撤回该消息。
EMClient.getInstance().chatManager().recallMessage(contextMenuMessage);
(void)recallMessage:(EMMessage *)aMessage
completion:(void (^)(EMMessage *aMessage, EMError *aError))aCompletionBlock;
WebIM.conn.recallMessage({
mid:mid, //服务端消息ID
to : username, //接收方ID
type: 'chat' // 单聊为'chat',群组为'groupchat',聊天室为 'chatroom'
})
应用管理员调用接口可以对发送消息进行撤回。允许撤回时间可以在通讯云管理后台进行设置,最大设置时间为7天。
/{org_name}/{app_name}/messages/recall |
---|
参数 | 说明 |
---|---|
Content-Type | application/json |
Authorization | Bearer ${token} |
参数 | 说明 |
---|---|
msg_id | 撤回消息的消息id |
to | 撤回消息的接收方 |
chat_type | 撤回消息的消息类型,有单聊chat和群聊group_chat两种类型 |
在返回值中查看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
}
]
}
返回结果:
消息撤回服务没有开通
{
"error":"forbidden_op",
"exception":"EasemobForbiddenOpException",
"timestamp":1644402553845,
"duration":0,
"error_description":"message recall service is unopened"
}