修改消息

大约 15 分钟

修改消息

消息修改后,环信服务器会按照发送后回调规则向你的 App Server 发送回调请求,App Server 可通过该回调查看修改后的消息,进行数据同步。

提示

  1. 如果需要消息修改事件,你需要在环信控制台open in new window设置发送后回调规则,详见配置发送后回调规则
  2. 发送后回调的相关介绍,详见回调说明

回调时机

  1. 客户端修改了各类消息。
  2. 调用 RESTful API 修改了消息。

回调请求

以下各类消息支持的修改内容如下表所示:

消息类型支持的修改内容
文本文本内容,ext 字段
图片ext 字段
语音ext 字段
位置ext 字段
文件ext 字段
视频ext 字段
合并ext 字段
自定义customEventcustomExtsext 字段

文本消息

{
    "callId": "easemob-demo#support_1418038921190704764",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "19b85beee242a1266c87ab84c6c3883d",
    "payload": {
        "edit_message_id": "1418038712905770616",
        "ext": {
            "key1": "value_rewrite"
        },
        "bodies": [
            {
                "msg": "testmessages1",
                "type": "txt"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747727666259,
                "edit_time": 1747727714765,
                "sender": "wzy1",
                "count": 1,
                "operator": "wzy1"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy1",
    "to": "wzy",
    "msg_id": "1418038921190704764",
    "timestamp": 1747727714765
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestampLong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
bodiesJSON Array修改消息的具体内容。与通过 RESTful API 发送过来的一致,查看 历史消息内容
edit_message_idString被修改的原消息 ID。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit

位置消息

{
    "callId": "easemob-demo#support_1415008698962544248",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "36583253ca0d3a718388f1134b180baf",
    "payload": {
        "edit_message_id": "1415008466669405936",
        "ext": {
            "new_ext": "test_rewrite"
        },
        "bodies": [
            {
                "lng": 116.322,
                "addr": "中国北京市海淀区中关村",
                "type": "loc",
                "lat": 39.966
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747022132072,
                "edit_time": 1747022186159,
                "sender": "wzy1",
                "count": 1,
                "operator": "wzy1"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy1",
    "to": "wzy",
    "msg_id": "1415008698962544248",
    "timestamp": 1747022186159
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展。
bodiesJSON Array修改消息的具体内容。
- lng:String,经度。
- addr:String,位置的文字描述。
- type String,消息类型。位置消息为 loc
- lat:String,纬度。
fromString修改消息的发送方。
meta.edit_msgJSON消息修改详情。
meta.edit_msg_chat_typeString消息所属会话类型,即单聊、群聊或聊天室。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.senderString原消息的发送方。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
typeString消息修改事件,值为 edit

图片消息

{
    "callId": "hx#hxdemo_1414991177169504212",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "78708dd54808525a8a4c0e51bacec2c2",
    "payload": {
        "edit_message_id": "1414988420945545172",
        "ext": {
            "new_ext": "test_rewrite"
        },
        "bodies": [
            {
           			"filename": "image5406881348368656892.jpg",
                "size": {
                    "width": 624,
                    "height": 832
                },
                "file_length": 96238,
                "secret": "vJkjMC7gEfC_Vjf9xuovCZm5-awdNh5rIdKZBvmBLpYreWTo",
                "thumbFilename": "image%3A1000156028",
                "type": "img",
                "url": "https://a1.easemob.com/easemob-demo/support/chatfiles/bc98fc20-2ee0-11f0-b174-0946be6f6fbc"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747017464831,
                "edit_time": 1747018106558,
                "sender": "wzy1",
                "count": 3,
                "operator": "wzy"
            }
        },
        "type": "edit"
    },
    "appkey": "hx#hxdemo",
    "from": "wzy1",
    "to": "wzy",
    "msg_id": "1414991177169504212",
    "timestamp": 1747018106558
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展字段。
bodiesJSON Array修改消息的具体内容:
- filename:String,图片名称。
- size,JSON,图片尺寸,单位为像素,包含以下字段:height 为图片高度;width 为图片宽度。
- file_length:String,图片文件大小。
- secret:String,图片的访问密钥,即成功上传图片后,从 文件上传 的响应 body 中获取的 share-secret
- thumbFilename:String,缩略图大小。
- type:文件类型,img 表示图片消息。
- url: String,图片 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid}。其中 file_uuid 为文件 ID,成功上传图片文件后,从 文件上传 的响应 body 中获取。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit

语音消息

{
    "callId": "easemob-demo#support_1415000359922828916",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "d2575840b44fb1b67f2911bd69a56473",
    "payload": {
        "edit_message_id": "1415000223524062680",
        "ext": {
            "new_ext": "test_rewrite"
        },
        "bodies": [
            {
                "filename": "wzy20250512T112327.amr",
                "length": 3,
                "file_length": 3282,
                "secret": "e4FRsC7gEfCk-ScLfMCJWdgzY621gM-Nwm_vnVcGwRL8SJYF",
                "type": "audio",
                "url": "https://a1.easemob.com/easemob-demo/support/chatfiles/7b810390-2ee0-11f0-b4c7-03224649d943"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747020212833,
                "edit_time": 1747020244585,
                "sender": "wzy",
                "count": 1,
                "operator": "wzy"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy",
    "to": "wzy1",
    "msg_id": "1415000359922828916",
    "timestamp": 1747020244585
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展字段。
bodiesJSON Array修改消息的具体内容:
- filename:String,图片名称。
- size,JSON,图片尺寸,单位为像素,包含以下字段:height 为图片高度;width 为图片宽度。
- file_length:String,图片文件大小。
- secret:String,图片的访问密钥,即成功上传图片后,从 文件上传 的响应 body 中获取的 share-secret
- thumbFilename:String,缩略图大小。
- type:文件类型,img 表示图片消息。
- url: String,图片 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid}。其中 file_uuid 为文件 ID,成功上传图片文件后,从 文件上传 的响应 body 中获取。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit

视频消息

{
    "callId": "easemob-demo#support_1415009227012835056",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "9cf75f2e2dec09ab70df4ced8caa2148",
    "payload": {
        "edit_message_id": "1415009139259606640",
        "ext": {
            "new_ext": "test_rewrite"
        },
        "bodies": [
            {
                "thumb_secret": "ZyXXXX2I",
                "filename": "test.avi",
                "thumb": "https://XXXX/XXXX/XXXX/chatfiles/67279b20-7f69-11e4-8eee-21d3334b3a97",
                "length": 0,
                "file_length": 58103,
                "secret": "VfXXXXNb_",
                "type": "video",
                "url": "https://XXXX/XXXX/XXXX/chatfiles/671dfe30-XXXX-XXXX-ba67-8fef0d502f46"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747022288686,
                "edit_time": 1747022309104,
                "sender": "wzy1",
                "count": 1,
                "operator": "wzy1"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy1",
    "to": "wzy",
    "msg_id": "1415009227012835056",
    "timestamp": 1747022309104
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展字段。
bodiesJSON Array修改消息的具体内容:
- thumb_secret:视频缩略图访问密钥,即成功上传视频文件后,从 文件上传 的响应 body 中获取的 share-secret。如果缩略图文件上传时设置了文件访问限制(restrict-access),则该字段为必填。
- filename:String,视频文件名称。
- thumb:String,缩略图 URL。
- length:视频时长,单位为秒。
- secret:String,视频文件的访问密钥,即成功上传视频后,从 文件上传 的响应 body 中获取的 share-secret
- type:文件类型,video 表示视频消息。
- url: String,视频 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid}。其中 file_uuid 为文件 ID,成功上传视频文件后,从 文件上传 的响应 body 中获取。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit

文件消息

{
    "callId": "easemob-demo#support_1415009628512585332",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "8ae190480ff8f4206eece47665e1eb49",
    "payload": {
        "edit_message_id": "1415009594568083068",
        "ext": {
            "new_ext": "test_rewrite"
        },
        "bodies": [
            {
                "filename": "test.txt",
                "secret": "1-g0XXXXua",
                "type": "file",
                "url": "https://XXXX/XXXX/XXXX/chatfiles/d7eXXXX7444"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747022394696,
                "edit_time": 1747022402597,
                "sender": "wzy1",
                "count": 1,
                "operator": "wzy1"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy1",
    "to": "wzy",
    "msg_id": "1415009628512585332",
    "timestamp": 1747022402597
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展字段。
bodiesJSON Array修改消息的具体内容:
- filename:String,文件名称。
- secret:String,文件的访问密钥,即成功上传文件后,从 文件上传 的响应 body 中获取的 share-secret
- type:文件类型,file 表示文件消息。
- url: String,文件 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid}。其中 file_uuid 为文件 ID,成功上传视频文件后,从 文件上传 的响应 body 中获取。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit

合并消息

{
    "callId": "easemob-demo#support_1415001238604355312",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "3539b3b166e2f3401076664629d98ef1",
    "payload": {
        "edit_message_id": "1415001054172415464",
        "ext": {
            "new_ext": "test_rewrite"
        },
        "bodies": [
            {
                "combineLevel": 1,
                "msg": "当前版本过低,无法展示对应内容。",
                "summary": "wzy1: [图片]\nwzy: [语音]\nwzy: [图片]",
                "filename": "17470204055850033",
                "subType": "sub_combine",
                "file_length": 701,
                "secret": "7sUSEC7gEfCYlE9p85BBKlYH1ZsF2VFN49QS85LJMTNIkBKw",
                "title": "聊天记录",
                "type": "txt",
                "url": "https://a1.easemob.com/easemob-demo/support/chatfiles/eec4eb00-2ee0-11f0-8f24-b3ce6aa9421a"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:group",
                "send_time": 1747020406219,
                "edit_time": 1747020449159,
                "sender": "wzy",
                "count": 1,
                "operator": "wzy"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy",
    "to": "278265393643526",
    "msg_id": "1415001238604355312",
    "timestamp": 1747020449159
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展字段。
bodiesJSON Array修改消息的具体内容:
- combineLevel:Int,合并消息的嵌套层级数。
- msg:String,合并消息的兼容文本。当支持合并消息的 SDK 向不支持合并消息的低版本 SDK 发送消息时,低版本的 SDK 会将该属性解析为文本消息的消息内容。
- summary:String,合并消息的概要。
- filename:String,文件名称。
- subType:String,消息类型。合并消息为 sub_combine
- file_length:Int,合并消息附件的大小,单位为字节。
- secret:String,文件的访问密钥,即成功上传文件后,从 文件上传 的响应 body 中获取的 share-secret
- title:String,合并消息的标题。
- type:消息附件类型,txt 表示文本文件。
- url: String,合并消息的附件的 URL 地址。你可以访问该 URL 下载该附件。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit

自定义消息

{
    "callId": "easemob-demo#support_1415010565809505916",
    "eventType": "chat",
    "chat_type": "edit",
    "security": "989b921d92b411d3c30364ccda87aad4",
    "payload": {
        "edit_message_id": "1415010541239273084",
        "ext": {
            "key1": "value_rewrite"
        },
        "bodies": [
            {
                "customExts": [
                    {
                        "key1": "value_rewrite"
                    }
                ],
                "customEvent": "ce_rewrite",
                "v2:customExts": {
                    "key1": "value_rewrite"
                },
                "type": "custom"
            }
        ],
        "meta": {
            "edit_msg": {
                "chat_type": "chat:user",
                "send_time": 1747022615096,
                "edit_time": 1747022620834,
                "sender": "wzy1",
                "count": 1,
                "operator": "wzy1"
            }
        },
        "type": "edit"
    },
    "appkey": "easemob-demo#support",
    "from": "wzy1",
    "to": "wzy",
    "msg_id": "1415010565809505916",
    "timestamp": 1747022620834
}

回调请求包体字段描述:

字段数据类型描述
callIdStringcallId 为每个回调请求的唯一标识。
eventTypeStringchat 上行消息、chat_offline 离线消息。
chat_typeStringedit,表示修改消息。
securityString签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 配置环信控制台回调规则
appkeyString你在环信管理后台注册的应用唯一标识。
fromString消息发送方的用户 ID。
toString消息接收方。
- 单聊为接收方用户 ID;
- 群聊为群组 ID;
- 聊天室聊天为聊天室 ID。
msg_idString该消息修改事件消息的 ID。
timestamplong环信服务器接收到此消息的 Unix 时间戳,单位为毫秒 ms。

payload 为事件内容,其中的字段如下表所示:

字段数据类型描述
edit_message_idString被修改的原消息 ID。
extJSON消息扩展字段。
bodiesJSON Array修改消息的具体内容:
- customEvent: String 类型,用户自定义的事件类型。该参数的值必须满足正则表达式 [a-zA-Z0-9-_/\.]{1,32},长度为 1-32 个字符。
- customExts/v2:customExts: Array/JSON ,用户自定义的事件属性。customExts 为旧版参数,数组类型,最多可包含 16 个元素。v2:customExts 为新版参数,Map<String,String> 类型,最多可以包含 16 个元素。推荐使用该新版参数。
- type:消息类型,custom 为自定义消息。
meta.edit_msgJSON消息修改详情。
meta.edit_msg.chat_typeString会话类型。
meta.edit_msg.countJSON消息修改次数。
meta.edit_msg.edit_timeLong消息修改时间。
meta.edit_msg.operatorString修改消息的用户。easemob_rest_app_admin 表示 app 管理员。
meta.edit_msg.send_timeLong原消息的发送时间。
meta.edit_msg.senderString原消息的发送方。
typeString消息修改事件,值为 edit