====== 发送后事件回调过滤规则设置 ====== 更新时间:2022-07-13 通过回调过滤规则的设置,可以根据需求选择回调中的有用信息。在环信管理后台设置发送后回调规则后,默认会回调所有事件信息,如需单独设置特定类型不回调,请联系环信商务经理。 ===== 从环信服务器向你的应用服务器发送请求 ===== 请求采用 POST 方式,支持 HTTP/HTTPS,正文部分为 JSON 格式的字符串,字符集为 UTF-8。 回调时,会对发送的正文做 MD5 签名。 环信 IM 使用的 MD5 为 ''%%org.apache.commons.codec.digest.DigestUtils#md5Hex%%''。 app 的响应内容不能超过 1,000 个字符。 ===== 回调事件 ===== ==== 回调内容中单聊、群聊、聊天室事件的公共参数说明 ==== ^参数 ^类型 ^含义 ^ |''%%callId%%'' |String |''%%callId%%'' 为 ''%%{appkey}_{uuid}%%'' 其中 ''%%uuid%%'' 为随机生成,作为每条回调的唯一标识。 | |''%%eventType%%'' |String |“chat” 上行消息、“chat_offline” 离线消息。 | |''%%timestamp%%'' |long |环信 IM 服务器接收到此消息的 Unix 时间戳,单位为 ms。 | |''%%chat_type%%'' |String |会话类型(默认全选):
- “chat”:单聊回调;
- “groupchat”:群聊回调包含了群组和聊天室的消息回调;
- “notify”:通知回调包含了Thread 和 Reaction 的回调,需要结合 payload 中的 type 字段确定具体类型。 | |''%%group_id%%'' |String |当 ''%%chat_type%%'' 为 ''%%groupchat%%'' 有此参数,表示回调消息所在的群组或聊天室。 | |''%%from%%'' |String |消息的发送方。 | |''%%to%%'' |String |消息的接收方。 | |''%%msg_id%%'' |String |该回调消息的 ID。 | |''%%payload%%'' |object |事件内容,与通过 REST API 发送过来的一致,查看[[https://docs-im.easemob.com/im/server/basics/chatrecord#聊天记录数据结构|聊天记录数据结构文档]]。 | |''%%securityVersion%%'' |String |安全校验版本,目前为 1.0.0。忽略此参数,以后会改成 Console 后台做设置。 | |''%%security%%'' |String |签名,格式如下: ''%%MD5(callId+secret+timestamp)%%''。 Secret 见 Console 后台回调规则。 | |''%%appkey%%'' |String |你在环信管理后台注册的应用唯一标识。 | |''%%host%%'' |String |服务器名称。 | ==== 单聊 ==== ^事件 ^payload 中类型 ^触发事件 ^ |chat |- |单聊中所有事件 | |chat:txt |{“bodies”:{“type”:“txt”}} |单聊中发文本消息 | |chat:img |{“bodies”:{“type”:“img”}} |单聊中发图片消息 | |chat:audio |{“bodies”:{“type”:“audio”}} |单聊中发语音消息 | |chat:loc |{“bodies”:{“type”:“loc”}} |单聊中发位置消息 | |chat:video |{“bodies”:{“type”:“video”}} |单聊中发视频消息 | |chat:file |{“bodies”:{“type”:“file”}} |单聊中发文件消息 | |chat:cmd |{“bodies”:{“type”:“cmd”}} |单聊中发命令消息 | |chat:custom |{“bodies”:{“type”:“custom”}} |单聊中发自定义消息 | |chat:unknown |{“bodies”:{“type”:“unknown”}} |单聊中发未知消息 | === 单聊 payload 中消息的字段解释及回调请求的包体示例 === == 文字以及透传消息: == ^字段 ^数据类型 ^含义 ^ |''%%ext%%'' |object |消息的扩展字段。 | |''%%bodies%%'' |object |该回调的主体内容,包含以下两个字段 ''%%msg%%'',''%%type%%''。 | |''%%msg%%'' |Json |消息内容。 | |''%%type%%'' |String |消息类型,包括:
- 文本消息:''%%txt%%'';
- 图片消息:''%%img%%'';
- 语音消息:''%%audio%%'';
- 位置消息:''%%loc%%'';
- 视频消息:''%%video%%'' ;
- 文件消息:''%%file%%'';
- 命令消息:''%%cmd%%'';
- 自定义消息:''%%custom%%'';
- 未知消息:''%%unknown%%''。 | 回调请求中 payload 示例: "payload":{ "ext":{}, "bodies":[{"msg":"rr","type":"txt"}] } == 图片消息: == ^字段 ^类型 ^说明 ^ |''%%ext%%'' |Json |消息的扩展字段。 | |''%%bodies%%'' |object |该回调的主体内容,包含以下六个字段 ''%%filename%%'',''%%secret%%'',''%%file_length%%'',''%%size%%'',''%%url%%'',''%%type%%''。 | |''%%filename%%'' |String |图片名称。 | |''%%secret%%'' |String |成功上传文件后返回的 ''%%secret%%''。 | |''%%file_length%%'' |Int |图片文件大小(单位:字节)。 | |''%%size%%'' |Json |图片尺寸;''%%height%%'':高度,''%%width%%'':宽度。 | |''%%url%%'' |String |域名 /orgname/appname/chatfiles/ 成功上传文件返回的 UUID。参考请求示例。 | |''%%type%%'' |String |消息类型,包括:
- 文本消息:''%%txt%%'';
- 图片消息:''%%img%%'';
- 语音消息:''%%audio%%'';
- 位置消息:''%%loc%%'';
- 视频消息:''%%video%%'' ;
- 文件消息:''%%file%%'';
- 命令消息:''%%cmd%%'';
- 自定义消息:''%%custom%%'';
- 未知消息:''%%unknown%%''。 | payload 示例: "payload":{ "ext":{}, "bodies":[{ "filename":"image", "size":{"width":746,"height":1325}, "secret":"EsYYqnkREeyZAUHNhFQyIhTJxWxvGOwyx1", "file_length":118179, "type":"img", "url":"https://XXXX.com/" }] } == 语音消息 payload 字段: == ^字段 ^类型 ^说明 ^ |''%%ext%%'' |Json |消息的扩展字段。 | |''%%filename%%'' |String |文件名称。 | |''%%secret%%'' |String |成功上传文件后返回的 secret。 | |''%%file_length%%'' |Long |语音文件大小(单位:字节)。 | |''%%Length%%'' |Int |语音时间(单位:秒)。 | |''%%url%%'' |String |域名 ''%%/org_name/app_name/chatfiles/%%'' 成功上传文件返回的 UUID。 | 回调请求的包体示例: "payload":{ "ext":{}, "bodies":[{ "filename":"audio", "length":4, "secret":"anmSynkREey91e0Ksmmt2Ym6AzpRr9SxsUpF", "file_length":6374, "type":"audio", "url":"https://XXXX.com/" }] } == 视频消息: == ^字段 ^类型 ^说明 ^ |''%%ext%%'' |Json |消息的扩展字段。 | |''%%bodies%%'' |object |该回调的主体内容,包含以下字段 ''%%thumb_secret%%''、''%%thumb%%''、''%%filename%%'',''%%secret%%'',''%%file_length%%'',''%%size%%'',''%%url%%'',''%%type%%''。 | |''%%thumb_secret%%'' |String |成功上传视频缩略图后返回的 secret。 | |''%%filename%%'' |String |文件名称。 | |''%%size%%'' |Json |缩略图图片尺寸;''%%height%%'':高度,''%%width%%'':宽度。 | |''%%thumb%%'' |String |成功上传视频缩略图返回的 UUID。 | |''%%secret%%'' |String |成功上传视频文件后返回的 secret。 | |''%%length%%'' |Int |视频播放长度。 | |''%%file_length%%'' |Long |视频文件大小(单位:字节)。 | |''%%type%%'' |String |消息类型,包括:
- 文本消息:''%%txt%%'';
- 图片消息:''%%img%%'';
- 语音消息:''%%audio%%'';
- 位置消息:''%%loc%%'';
- 视频消息:''%%video%%'' ;
- 文件消息:''%%file%%'';
- 命令消息:''%%cmd%%'';
- 自定义消息:''%%custom%%'';
- 未知消息:''%%unknown%%''。 | |''%%url%%'' |String |成功上传视频文件返回的 UUID。 | payload 示例: "payload":{ "ext":{}, "bodies":[{ "thumb_secret":"t1AECnqLEeyS81-d10_HOpjSZc8TD-ud40pFCkOStQrr7Mbc", "filename":"video.mp4", "size":{ "width":360, "height":480}, "thumb":"https://XXXX.com/XXXX/XXXX/chatfiles/b7500400-7a8b-11ec-8d83-7106bf6633e6", "length":10, "secret":"uFtZgHqLEeycBfuoalZCJPD7PVcoOu_RHTRa78bjU_KQAPr2", "file_length":601404, "type":"video", "url":"https://XXXX.com/XXXX/XXXX/chatfiles/b85b3270-7a8b-11ec-9735-6922a85eb891" }] } == 位置消息: == ^字段 ^类型 ^描述 ^ |''%%lat%%'' |String |纬度。 | |''%%lng%%'' |String |经度。 | |''%%addr%%'' |String |位置的文字描述。 | 回调请求的包体示例: "payload":{ "ext":{}, "bodies":[{ "lng":116.32309156766605, "type":"loc", "addr":"********", "lat":39.96612729238626 }] } == 自定义消息: == ^参数 ^参数类型 ^说明 ^ |''%%customEvent%%'' |String |用户自定义的事件类型,必须是 string,值必须满足正则表达式。 [a-zA-Z0-9-_/.]{1,32},最短 1 个字符 最长 32 个字符。 | |''%%customExts%%'' |Json |用户自定义的事件属性,类型必须是 Map,最多可以包含 16 个元素。customExts 是可选的,不需要可以不传。 | |''%%from%%'' |String |表示消息发送者;无此字段 Server 会默认设置为 “from”:“admin”,有 from 字段但值为空串 (“”) 时请求失败。 | |''%%ext%%'' |Json |扩展属性,支持 app 自定义内容。可以没有这个字段;但是如果有,值不能是 “ext:null” 这种形式,否则会发生错误。 | "payload": { "ext": {}, "bodies": [ { "customExts": [ {"name": 1 } ], "customEvent": "flower", "type": "custom" } ] } ==== 群聊 ==== ^事件 ^payload 中类型 ^触发事件 ^ |groupchat |- |群聊中所有事件 | |groupchat:txt |{“bodies”:{“type”:“txt”}} |群聊中发文本消息 | |groupchat:img |{“bodies”:{“type”:“img”}} |群聊中发图片消息 | |groupchat:audio |{“bodies”:{“type”:“audio”}} |群聊中发语音消息 | |groupchat:loc |{“bodies”:{“type”:“loc”}} |群聊中发位置消息 | |groupchat:video |{“bodies”:{“type”:“video”}} |群聊中发视频消息 | |groupchat:file |{“bodies”:{“type”:“file”}} |群聊中发文件消息 | |groupchat:cmd |{“bodies”:{“type”:“cmd”}} |群聊中发命令消息 | |groupchat:custom |{“bodies”:{“type”:“custom”}} |群聊中发自定义消息 | |groupchat:unknown |{“bodies”:{“type”:“unknown”}} |群聊中发未知消息 | === 群聊中发送消息 payload 中的字段解释 === ^字段 ^数据类型 ^含义 ^ |''%%ext%%'' |String |消息的扩展字段。 | |''%%bodies%%'' |object |该回调的主体内容,包含以下两个字段 ''%%msg%%'',''%%type%%''。 | |''%%msg%%'' |String |消息内容。 | |''%%type%%'' |String |消息类型,包括:
- 文本消息:''%%txt%%'';
- 图片消息:''%%img%%'';
- 语音消息:''%%audio%%'';
- 位置消息:''%%loc%%'';
- 视频消息:''%%video%%'' ;
- 文件消息:''%%file%%'';
- 命令消息:''%%cmd%%'';
- 自定义消息:''%%custom%%'';
- 未知消息:''%%unknown%%''。 | 回调请求的包体示例: { "callId":"{appkey}_{uuid}", "eventType":"chat_offline", "timestamp":1600060847294, "chat_type":"groupchat", "group_id":"16934809238921545", "from":"user1", "to":"user2", "msg_id":"8924312242322", "payload":{ // 具体的消息内容 }, "securityVersion":"1.0.0", "security":"2ca02c394bef9e7abc83958bcc3156d3" } ==== 聊天室 ==== ^事件 ^payload 中类型 ^触发事件 ^ |chatroom |- |聊天室中所有事件 | |chatroom:txt |{“bodies”:{“type”:“txt”}} |聊天室中发文本消息 | |chatroom:img |{“bodies”:{“type”:“img”}} |聊天室中发图片消息 | |chatroom:audio |{“bodies”:{“type”:“audio”}} |聊天室中发语音消息 | |chatroom:loc |{“bodies”:{“type”:“loc”}} |聊天室中发位置消息 | |chatroom:video |{“bodies”:{“type”:“video”}} |聊天室中发视频消息 | |chatroom:file |{“bodies”:{“type”:“file”}} |聊天室中发文件消息 | |chatroom:cmd |{“bodies”:{“type”:“cmd”}} |聊天室中发命令消息 | |chatroom:custom |{“bodies”:{“type”:“custom”}} |聊天室中发自定义消息 | |chatroom:unknown |{“bodies”:{“type”:“unknown”}} |聊天室中发未知消息 | === 聊天室中发送消息 payload 中的字段解释 === ^字段 ^数据类型 ^含义 ^ |''%%ext%%'' |object |消息的扩展字段。 | |''%%bodies%%'' |object |该回调的主体内容,包含以下两个字段 ''%%msg%%'',''%%type%%''。 | |''%%msg%%'' |String |消息内容。 | |''%%type%%'' |String |消息类型,包括:
- 文本消息:''%%txt%%'';
- 图片消息:''%%img%%'';
- 语音消息:''%%audio%%'';
- 位置消息:''%%loc%%'';
- 视频消息:''%%video%%'' ;
- 文件消息:''%%file%%'';
- 命令消息:''%%cmd%%'';
- 自定义消息:''%%custom%%'';
- 未知消息:''%%unknown%%''。 | 回调请求示例: { "callId":"{appkey}_{uuid}", "eventType":"chat_offline", "timestamp":1600060847294, "chat_type":"groupchat", "group_id":"16934809238921545", "from":"user1", "to":"user2", "msg_id":"8924312242322", "payload":{ // 具体的消息内容 }, "securityVersion":"1.0.0", "security":"2ca02c394bef9e7abc83958bcc3156d3" } ==== 消息撤回 ==== ^事件 ^payload 中类型 ^触发事件 ^ |recall |无 |进行消息撤回。 | 回调请求包体字段描述: ^字段 ^数据类型 ^描述 ^ |''%%callId%%'' |String |''%%callId%%'' 为 ''%%{appkey}_{uuid}%%'' 其中 ''%%uuid%%'' 为随机生成,作为每条回调的唯一标识。 | |''%%eventType%%'' |String |“chat” 上行消息、“chat_offline” 离线消息。 | |''%%timestamp%%'' |long |环信 IM 服务器接收到此消息的 Unix 时间戳,单位为 ms。 | |''%%chat_type%%'' |String |“chat” 单聊回调、“groupchat” 群聊回调包含了群组和聊天室的消息回调,默认全选。 | |''%%group_id%%'' |String |当 ''%%chat_type%%'' 为 ''%%groupchat%%'' 有此参数,表示回调消息所在的群组或聊天室。 | |''%%from%%'' |String |消息的发送方。 | |''%%to%%'' |String |消息的接收方。 | |''%%recall_id%%'' |String |要撤回的消息 ID。 | |''%%msg_id%%'' |String |该撤回事件消息的 ID。 | |''%%payload%%'' |object |事件内容,与通过 REST API 发送过来的一致,查看[[https://docs-im.easemob.com/im/server/basics/chatrecord#聊天记录数据结构|聊天记录数据结构文档]]。 | |''%%securityVersion%%'' |String |安全校验版本,目前为 1.0.0。忽略此参数,以后会改成 Console 后台做设置。 | |''%%security%%'' |String |签名,格式如下: MD5(callId+secret+timestamp)。Secret 见 Console 后台回调规则。 | |''%%appkey%%'' |String |你在环信管理后台注册的应用唯一标识。 | |''%%host%%'' |String |服务器名称。 | payload 中字段含义: ^参数 ^数据类型 ^描述 ^ |''%%ext%%'' |object |消息的扩展字段,撤回行为时为空。 | |''%%ack_message_id%%'' |String |跟 ''%%recall_id%%'' 一致,为要撤回的消息 ID。 | |''%%bodies%%'' |object |该回调的主体内容,撤回行为时为空。 | 回调请求的包体示例: { "chat_type":"recall", "callId":"orgname#appname_966475585536657404", "security":"ea7a867314fb0e0833d5f4f169eb4f8d", "payload":{ "ext":{}, "ack_message_id":"966475220900644860", "bodies":[]}, "host":"******", "appkey":"orgname#appname", "from":"tst", "recall_id":"966475220900644860", "to":"170908972023810", "eventType":"chat", "msg_id":"966475585536657404", "timestamp":1642589932646 } ==== 群组和聊天室操作 ==== 注意:目前 muc:create 仅在开通多设备服务后,才支持回调。 ^事件 ^payload 中类型 ^群聊触发事件 ^聊天室触发事件 ^ |muc |- |群聊操作所有事件 |聊天室操作所有事件 | |muc:create |{“operation”:“create”} |创建群 |不支持 | |muc:destroy |{“operation”:“destroy”} |删除群 |删除聊天室 | |muc:apply |{“operation”:“apply”} |用户申请加入群 |不支持 | |muc:apply_accept |{“operation”:“apply_accept”} |同意用户加群申请 |不支持 | |muc:invite |{“operation”:“invite”} |邀请新用户进群 |不支持 | |muc:invite_accept |{“operation”:“invite_accept”} |受邀用户同意入群 |不支持 | |muc:invite_decline |{“operation”:“invite_decline”} |受邀用户拒绝入群 |不支持 | |muc:kick |{“operation”:“kick”} |踢出群 |踢出聊天室 | |muc:ban |{“operation”:“ban”} |封禁群成员,即管理员将用户添加到群组黑名单 |不支持 | |muc:allow |{“operation”:“allow”} |解除群成员封禁,即管理员将用户添加到群组黑名单 |不支持 | |muc:update |{“operation”:“update”} |群信息修改 |聊天室信息修改 | |muc:block |{“operation”:“block”} |用户屏蔽群 |不支持 | |muc:unblock |{“operation”:“unblock”} |用户解除屏蔽群 |不支持 | |muc:presence |{“operation”:“presence”} |成员进入群 |成员进入聊天室 | |muc:absence |{“operation”:“absence”} |有成员退出了群 |有成员离开了聊天室 | |muc:leave |{“operation”:“leave”} |成员主动退出群 |成员主动退出聊天室 | |muc:assing_owner |{“operation”:“assing_owner”} |转让群 |不支持 | |muc:add_admin |{“operation”:“add_admin”} |添加群管理员 |添加聊天室管理员 | |muc:remove_admin |{“operation”:“remove_admin”} |移除群管理员 |移除聊天室管理员 | |muc:add_mute |{“operation”:“add_mute”} |将群成员禁言 |将聊天室成员禁言 | |muc:remove_mute |{“operation”:“remove_mute”} |将群成员解除禁言 |将聊天室成员解除禁言 | |muc:update_announcement |{“operation”:“update_announcement”} |更新群公告 |更新聊天室公告 | |muc:delete_announcement |{“operation”:“delete_announcement”} |删除群公告 |删除聊天室公告 | |muc:upload_file |{“operation”:“upload_file”} |上传群文件 |/ | |muc:delete_file |{“operation”:“delete_file”} |删除群文件 |/ | |muc:add_user_white_list |{“operation”:“add_user_white_list”} |将成员加入群白名单 |将成员加入聊天室白名单 | |muc:remove_user_white_list |{“operation”:“remove_user_white_list”} |将成员移除群白名单 |将成员移除聊天室白名单 | |muc:ban_group |{“operation”:“ban_group”} |群全局禁言 |聊天室全局禁言 | |muc:remove_ban_group |{“operation”:“remove_ban_group”} |解除群全局禁言 |解除聊天室全局禁言 | === 创建群聊 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%create%%'' 创建群聊或聊天室。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |创建群聊或聊天室失败的原因描述。 | |''%%error_code%%'' |String |创建失败对应的错误码。 | 创建群聊回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976459883882744164", "security": "f0f8645cb9b2ccdab3c16db239b13e83", "payload": { "muc_id": "XXXX#XXXX_173556296122369@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "create", "status": { "description":"", "error_code": "ok" } }, "group_id": "173556296122369", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com/android_8070d7b2-795eb6e63d", "to": "1111", "eventType": "chat", "msg_id": "976459883882744164", "timestamp": 1644914583273 } === 删除群/聊天室 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%operation%%'' |String |''%%destroy%%'' 删除群/聊天室。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |删除群聊或聊天室失败的原因描述。 | |''%%error_code%%'' |String |操作失败对应的错误码。 | 删除群聊回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976430482738645348", "security": "c6f411dedb43ebc499b14779eaa9a82b", "payload": { "muc_id": "XXXX#XXXX_173548612157441@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "destroy", "status": { "description": "", "error_code": "ok" } }, "group_id": "173548612157441", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_a3-af9c-2a3ae9d778b0", "to": "admin", "eventType": "chat", "msg_id": "976430482738645348", "timestamp": 1644907737798 } 删除聊天室回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "776cbf0b06df9a59d660f6c024aeeb81", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": true, "operation": "destroy", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "1111", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644912946446 } === 用户申请加入群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%apply%%'':申请加入群。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |申请加入群聊或聊天室失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "08eaa57abe898b83df9c84bb4a50c5a5", "payload": { "muc_id": "XXXX#XXXX_.com", "reason": "join group123", "is_chatroom": false, "operation": "apply", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXXcom", "to": "2222", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644908512194 } === 同意成员加群申请 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%invite%%'':申请加入群或聊天室。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976435003388856676", "security": "d86bb27395e87e0dffe56e061669a2d9", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "apply_accept", "status": { "description": "" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "aaa111", "eventType": "chat", "msg_id": "976435003388856676", "timestamp": 1644908790333 } === 邀请新用户进群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%invite%%'':邀请新成员加入群。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |邀请新用户加入群聊失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976447662725273956", "security": "2ae5959b661c26cbf55f4582cb2a8931", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "你好啊", "is_chatroom": false, "operation": "invite", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_@XXXX", "to": "1111", "eventType": "chat", "msg_id": "976447662725273956", "timestamp": 1644911737827 } === 受邀用户同意入群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%invite_accept%%'':受邀用户同意加入群。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 回调示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976447989306362212", "security": "1881ae2f25c7f92a8b05c6ce0866929f", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "invite_accept", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com/android_8070d7b2-7be0-4959-b4a2-06795eb6e63d", "to": "1111", "eventType": "chat", "msg_id": "976447989306362212", "timestamp": 1644911813866 } === 受邀用户拒绝入群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%invite_decline%%'':受邀用户拒绝加入群。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976448350272358756", "security": "5f5dea4fec2582c20a9ff5b3e1330a02", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "invite_decline", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com/android_8070d7b2-7be0-4959-b4a2-06795eb6e63d", "to": "1111", "eventType": "chat", "msg_id": "976448350272358756", "timestamp": 1644911897910 } === 踢出群/聊天室 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%kick%%'':将成员踢出群聊或聊天室。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 踢出群回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976432657191668068", "security": "f8956ab6d6f78df93efb2dbca5f2eb83", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "kick", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "aaa111", "eventType": "chat", "msg_id": "976432657191668068", "timestamp": 1644908244060 } 踢出聊天室请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976453352206371172", "security": "693b47daf71607ddd748bf923357e965", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "kick", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "3333", "eventType": "chat", "msg_id": "976453352206371172", "timestamp": 1644913062505 } === 封禁群成员(将群成员添加到黑名单) === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%ban%%'':封禁群成员(将群成员添加到黑名单)。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 封禁群成员(将群成员添加到黑名单)回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "57a539e96d9cc5c8de9ff779b029c10e", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "ban", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com/android_8070d7b2-7be0-4959-b4a2-06795eb6e63d", "to": "1111", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644916572276 } === 解除群成员封禁 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%allow%%'':解除群聊或聊天室成员封禁。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | payload 示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "f16b58abc9819e9c24b44e062910fd96", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "undefined", "is_chatroom": false, "operation": "allow", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "1111", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644908410143 } === 群/聊天室信息修改 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%update%%'':群/聊天室信息修改。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 群信息修改回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976436197985356132", "security": "635636b9e800bbf1387734b206552c5f", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": false, "operation": "update", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "1111", "eventType": "chat", "msg_id": "976436197985356132", "timestamp": 1644909068475 } 聊天室信息修改回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "07796ba1504c284f49710b55fa42dd47", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": true, "operation": "update", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "1111", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644912742341 } === 用户屏蔽群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%block%%'':用户屏蔽群。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 用户屏蔽群回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "e8d00a68ea63e76a3d86d6853cf1f5e1", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "block", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_3333@easemob.com/ios_f43087fc-5823-4f53-9276-52546f3a4649", "to": "3333", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644918981507 } === 用户解除屏蔽群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%unblock%%'':用户屏蔽群/聊天室。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "2f217429e4c2d8c09330cb5e2946aa90", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "unblock", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_3333@easemob.com/ios_f43087fc-5823-4f53-9276-52546f3a4649", "to": "3333", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644919019526 } === 成员进群/聊天室 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%operation%%'' |String |''%%presence%%'':成员进群/聊天室。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | 成员进群回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976428411540998500", "security": "13abc508b407d38d9c0d0e11bb8b9903", "payload": { "muc_id": "XXXX#XXXX_173548612157441@conference.easemob.com", "is_chatroom": false, "operation": "presence" }, "group_id": "173548612157441", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com", "to": "173548612157441", "eventType": "chat", "msg_id": "976428411540998500", "timestamp": 1644907255555 } 成员进聊天室回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "dde4f43158aea3e142bc6cbc21862f91", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": true, "operation": "presence" }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_2222@easemob.com", "to": "XXXX", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644912467208 } === 有成员退出了群/有成员离开了聊天室 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%operation%%'' |String |''%%absence%%'':成员离开群/聊天室。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | 有成员退出了群回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "d738f1b0379179677827f3da023d1195", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "absence" }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_aaa111@easemob.com", "to": "XXXX", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644908244062 } 成员离开聊天室回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "5aed52a1df02d8103afd2d8dd2dce04b", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": true, "operation": "absence" }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com", "to": "XXXX", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644912308123 } === 有成员主动退出群/有成员主动离开聊天室 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%operation%%'' |String |''%%leave%%'':有成员主动退出群/主动离开聊天室。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 有成员主动退出群回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976437246481664356", "security": "a44839d3599f71c4ce237e216bd502aa", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "leave", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_aaa111@easemob.com", "to": "2222", "eventType": "chat", "msg_id": "976437246481664356", "timestamp": 1644909312600 } 有成员主动离开聊天室回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976450112211388772", "security": "52f2b10050c763a64067bf339e5dc2b1", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": true, "operation": "leave", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com", "to": "2222", "eventType": "chat", "msg_id": "976450112211388772", "timestamp": 1644912308125 } === 转让群 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群}@conference.easemob.com%%''。 | |''%%operation%%'' |String |''%%assing_owner%%'':转让群。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 转让群回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "fccdff91bd5e0cc3c4758ee3670a5ec2", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "assing_owner", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com", "to": "2222", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644907917897 } === 添加群/聊天室管理员 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%add_admin%%'':添加群/聊天室管理员。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 添加群管理员回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "5f7e42423ad70312a3e024ee02ac849a", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "add_admin", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644908059969 } 添加聊天室管理员回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "d48c298d2356d8e1799bf9ef2d6bc4f3", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "add_admin", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "1111", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644913136541 } === 删除群/聊天室管理员 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%remove_admin%%'':删除群/聊天室管理员。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 删除群管理员回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "bb1cea362da70f2f47424e526382e5f1", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "remove_admin", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644908095988 } 删除聊天室管理员回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "f9cab6ee655af0e9de66e8be3de978a4", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "remove_admin", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "1111", "eventType":"chat", "msg_id": "XXXX", "timestamp": 1644913174560 } === 将群/聊天室成员禁言 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%add_mute%%'':将群/聊天室成员禁言。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 将群成员禁言回调示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "57a539e96d9cc5c8de9ff779b029c10e", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "ban", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com/android_8070d7b2-7be0-4959-b4a2-06795eb6e63d", "to": "1111", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644916572276 } 将聊天室成员禁言回调示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976454013950101860", "security": "6a6445651e66043b1cbc7b605ef1692a", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "add_mute", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976454013950101860", "timestamp": 1644913216581 } === 将群/聊天室成员解除禁言 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |/ | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%remove_mute%%'':将群/聊天室成员解除禁言。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 将群成员解除禁言回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976435338580855140", "security": "710b5e43699a35d98a6de6a9fc89d937", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "remove_mute", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976435338580855140", "timestamp": 1644908868377 } 将聊天室成员解除禁言回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976454039732488548", "security": "40b3accd9c2403c387808e92204db200", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "remove_mute", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976454039732488548", "timestamp": 1644913222584 } === 更新群/聊天室公告 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |群公告内容。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%update_announcement%%'':更新群/聊天室公告。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 更新群公告示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976445325097044324", "security": "06091170b6e9b9c20cd7c29266ad038c", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "gogngao", "is_chatroom": false, "operation": "update_announcement", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "976445325097044324", "timestamp": 1644911193549 } 更新聊天室公告示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976454374907709796", "security": "0d6cdf339ec1d78ec6ee8337892ae52f", "payload": { "muc_id": "XXXX#XXXX", "reason": "1111", "is_chatroom": true, "operation": "update_announcement", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "976454374907709796", "timestamp": 1644913300624 } === 删除群/聊天室公告 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |String |删除后群公告内容,为空。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%delete_announcement%%'':删除群/聊天室公告。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 删除群公告回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976454194401642852", "security": "d8f31984da8d33462a4c9558c9b793fc", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "reason": "", "is_chatroom": false, "operation": "delete_announcement", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_1111@easemob.com", "to": "XXXX", "eventType": "chat", "msg_id": "976454194401642852", "timestamp": 1644913258595 } 删除聊天室公告回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976471348589103460", "security": "f809f2d2099a3d58323ec879da08b689", "payload": { "muc_id": "XXXX#XXXX_173558850453505@conference.easemob.com", "reason": "", "is_chatroom": true, "operation": "delete_announcement", "status": { "description": "", "error_code": "ok" } }, "group_id": "173558850453505", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "173558850453505", "eventType": "chat", "msg_id": "976471348589103460", "timestamp": 1644917252616 } === 上传群共享文件 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |object |包含 ''%%file_id%%''、''%%file_name%%''、''%%file_owner%%''、''%%file_size%%''、''%%created%%'' 几个字段。 | |''%%file_id%%'' |String |文件 ID。 | |''%%file_name%%'' |String |文件名称。 | |''%%file_owner%%'' |String |文件所有者。 | |''%%file_size%%'' |Int |文件大小,单位为字节。 | |''%%created%%'' |long |文件创建的 Unix 时间戳,单位为 ms。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%upload_file%%'':上传群文件。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 上传群共享文件回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976438097292036452", "security": "426c327006ccc3283d157d7da22db27f", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "{ \"data\":{ \"file_id\":\"79ddf840-8e2f-11ec-bec3-ad40868b03f9\", \"file_name\":\"a.csv\", \"file_owner\":\"@ppAdmin\", \"file_size\":6787, \"created\":1644909510085 } }", "is_chatroom": false, "operation": "upload_file", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "976438097292036452", "timestamp": 1644909510697 } === 删除群共享文件 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群 ID}@conference.easemob.com%%''。 | |''%%reason%%'' |object |跟上传群文件时 ''%%file_id%%'' 一致。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%delete_file%%'':删除群文件。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 删除群共享文件回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976438501211900260", "security": "63820599e494260f350d3bf1d8d2ffea", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "reason": "79ddf840-8e2f-11ec-bec3-ad40868b03f9", "is_chatroom": false, "operation": "delete_file", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "976438501211900260", "timestamp": 1644909604744 } === 添加用户进群/聊天室白名单 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%add_user_white_list%%'':添加用户进群/聊天室白名单。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 添加用户进群白名单回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX", "security": "93cd067cebd7313c7fcfcb0a682e30a8", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "add_user_white_list", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976437461330692452", "timestamp": 1644909362624 } 添加用户进聊天室白名单回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976456222645422436", "security": "b0996aa98a641988f897b30feea32c88", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "add_user_white_list", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976456222645422436", "timestamp": 1644913730839 } === 将用户移出群/聊天室白名单 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%remove_user_white_list%%'':将用户从群/聊天室白名单移除。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 将用户移出群白名单回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976437487104690532", "security": "b1c9ddc90c220a5aec2094d99a057b27", "payload": { "muc_id": "XXXX#XXXX@conference.easemob.com", "is_chatroom": false, "operation": "remove_user_white_list", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976437487104690532", "timestamp": 1644909368625 } 将用户移出聊天室白名单回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976456643757738340", "security": "986f3b741cc28092768e0ff3b5b668e7", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "remove_user_white_list", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "2222", "eventType": "chat", "msg_id": "976456643757738340", "timestamp": 1644913828888 } === 群/聊天室全局禁言 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%ban_group%%'':将群或聊天室全局禁言。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 群全局禁言回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976455861675231588", "security": "b647e5b0c0c07f61426b1143f107b362", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": false, "operation": "ban_group", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "976455861675231588", "timestamp": 1644913646792 } 聊天室全局禁言回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_976454710078736740", "security": "f1da0b9cfbf3a265ce26bf974ba442db", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "ban_group", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "976454710078736740", "timestamp": 1644913378662 } === 解除群/聊天室全局禁言 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%muc_id%%'' |String |该回调事件所在群组/聊天室在服务器的唯一标识,''%%{appkey}_{群/聊天室 ID}@conference.easemob.com%%''。 | |''%%is_chatroom%%'' |bool |是否是聊天室。
- ''%%true%%'':是;
- ''%%false%%'':否。 | |''%%operation%%'' |String |''%%remove_ban_group%%'':解除群或聊天室全局禁言。 | |''%%status%%'' |object |状态,包括 ''%%description%%'' 和 ''%%error_code%%''。 | |''%%description%%'' |String |操作失败的原因描述。 | |''%%error_code%%'' |String |失败对应的错误码。 | 解除群全局禁言回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "XXXX", "payload": { "muc_id": "XXXX#XXXX_XXXX@conference.easemob.com", "is_chatroom": false, "operation": "remove_ban_group", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644913644791 } 解除聊天室全局禁言回调请求示例: { "chat_type": "muc", "callId": "XXXX#XXXX_XXXX", "security": "5edfc6329c37e83e4602943663320797", "payload": { "muc_id": "XXXX#XXXX", "is_chatroom": true, "operation": "remove_ban_group", "status": { "description": "", "error_code": "ok" } }, "group_id": "XXXX", "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX", "to": "XXXX", "eventType": "chat", "msg_id": "XXXX", "timestamp": 1644913522735 } ==== 好友关系操作 ==== ^事件 ^payload 中类型 ^触发事件 ^ |''%%roster%%'' |- |好友关系操作所有事件 | |''%%roster:add%%'' |''%%{“operation”:“add”}%%'' |添加好友 | |''%%roster:remove%%'' |''%%{“operation”:“remove”}%%'' |删除好友 | |''%%roster:accept%%'' |''%%{“operation”:“accept”}%%'' |同意好友申请 | |''%%roster:decline%%'' |''%%{“operation”:“decline”}%%'' |拒绝好友申请 | |''%%roster:ban%%'' |''%%{“operation”:“ban”}%%'' |拉黑好友 | |''%%roster:allow%%'' |''%%{“operation”:“allow”}%%'' |解除拉黑好友 | |''%%roster:remote_accept%%'' |''%%{“operation”:“remote_accept”}%%'' |远程同意 | |''%%roster:remote_decline%%'' |''%%{“operation”:“remote_decline”}%%'' |远程拒绝 | === 添加好友 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%reason%%'' |object |/ | |''%%operation%%'' |String |''%%add%%'':添加好友。 | payload 示例: { "chat_type":"roster", "callId":"XXXX#XXXX", "security":"XXXX", "payload":{ "reason":"", "operation":"add" }, "host":"XXXX", "appkey":"XXXX#XXXX", "from":"XXXX#XXXX", "to":"tst01", "eventType":"chat", "msg_id":"9XXXX2", "timestamp":1642648175092 } === 删除好友 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%roster_ver%%'' |String |好友列表的版本号。 | |''%%operation%%'' |String |''%%remove%%'':移除好友。 | payload 示例: { "chat_type":"roster", "callId":"XXXX#XXXX736", "security":"2e7XXXX2d7", "payload":{ "roster_ver":"003DD920ADD15B51EB0B806E83BDD97F089B0092", "operation":"remove" }, "host":"XXXX", "appkey":"XXXX#XXXX", "from":"XXXX#XXXX", "to":"tst01", "eventType":"chat", "msg_id":"XXXX463736", "timestamp":1642648138571 } === 同意好友申请 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%roster_ver%%'' |String |好友列表的版本号。 | |''%%operation%%'' |String |''%%accept%%'':同意好友申请。 | payload 示例: { "chat_type":"roster", "callId":"XXXX#XXXX_966725899779049516", "security":"a2e1545231e8acf60513b50984af0c6c", "payload":{ "roster_ver":"DD6E14FE5EE5A9ABC52CA86C5DE1601CF729BFD6", "operation":"accept" }, "host":"XXXX", "appkey":"XXXX#XXXX", "from":"XXXX#XXXX", "to":"tst01", "eventType":"chat", "msg_id":"96XXXX516", "timestamp":1642648213494 } === 拒绝好友申请 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%roster_ver%%'' |String |好友列表的版本号。 | |''%%operation%%'' |String |''%%decline%%'':拒绝好友申请。 | payload 示例: { "chat_type":"roster", "callId":"XXXX#XXXX_966726099692161068", "security":"747d6297660e57bcf38315aa98c206ac", "payload":{ "roster_ver":"3D81EC24A6E732B2EB1B654AA446930DB9BAFE59", "operation":"remote_decline" }, "host":"XXXX", "appkey":"XXXX#XXXX", "from":"XXXX#XXXX", "to":"tst", "eventType":"chat", "msg_id":"9XXXX68", "timestamp":1642648260029 } === 拉黑好友 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%operation%%'' |String |''%%ban%%'':拉黑好友。 | |''%%status%%'' |object |包含 ''%%error_code%%''。 | |''%%error_code%%'' |String |操作失败对应的错误码。 | payload 示例: { "chat_type":"roster", "callId":"XXXX#XXXX_966725184268539960", "security":"00f070116668034ddecf3fb7db92087c", "payload":{ "operation":"ban", "status":{ "error_code":"ok" } }, "host":"XXXX", "appkey":"XXXX#XXXX", "from":"XXXX#XXXX", "to":"tst", "eventType":"chat", "msg_id":"9XXXX0", "timestamp":1642648046912 } === 解除拉黑好友 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%operation%%'' |String |''%%allow%%'':解除拉黑好友。 | |''%%status%%'' |object |包含 ''%%error_code%%''。 | |''%%error_code%%'' |String |操作失败对应的错误码。 | payload 示例: { "chat_type":"roster", "callId":"XXXX#XXXX_966725018736134200", "security":"cbe8a5f1ba384107b63ef61637f55cad", "payload":{ "operation":"allow", "status":{ "error_code":"ok" } }, "host":"XXXX", "appkey":"XXXX#XXXX", "from":"XXXX#XXXX", "to":"tst", "eventType":"chat", "msg_id":"966725018736134200", "timestamp":1642648008357 } === 远程同意 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%roster_ver%%'' |String |好友列表的版本号。 | |''%%operation%%'' |String |''%%remote_accept%%'':远程同意,服务端上给好友申请发起人的回调。 | payload 示例: { "chat_type": "roster", "callId": "XXXX#XXXX_967182720616630320", "security": "f4bc73eb6e7764e383521c2e88dc2729", "payload": { "roster_ver": "1BD5718E9C9D3F0C572A5157CFC711D4F6FA490F", "operation": "remote_accept" }, "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX_XXXX/android_XXXX", "to": "2222", "eventType": "chat", "msg_id": "967182720616630320", "timestamp": 1642754575382 } === 远程拒绝 === payload 字段含义: ^字段 ^数据类型 ^含义 ^ |''%%roster_ver%%'' |String |好友列表的版本号。 | |''%%operation%%'' |String |''%%remote_decline%%'':远程拒绝,服务端上给好友申请发起人的回调。 | payload 示例: { "chat_type": "roster", "callId": "XXXX#XXXX_967182895737210928", "security": "27f5b919623380cc11d863ef957aa61b", "payload": { "roster_ver": "CFC06E0BA39E8B7FD493D102E2F8F3CAE678B380", "operation": "remote_decline" }, "host": "XXXX", "appkey": "XXXX#XXXX", "from": "XXXX#XXXX/android_XXXX", "to": "2222", "eventType": "chat", "msg_id": "967182895737210928", "timestamp": 1642754616149 } ==== ack 事件 ==== ^事件 ^payload 中类型 ^触发事件 ^ |''%%read_ack%%'' |无 |发送已读回执 | |''%%delivery_ack%%'' |无 |发送送达回执 | === 发送已读回执 === 回调请求主要字段含义: ^字段 ^数据类型 ^含义 ^ |''%%chat_type%%'' |String |''%%read_ack%%'' 已读回执。 | |''%%callId%%'' |String |''%%callId%%'' 为 ''%%{appkey}_{uuid}%%'' 其中 uuid 为随机生成,作为每条回调的唯一标识。 | |''%%security%%'' |String |签名,格式如下: ''%%MD5(callId+secret+timestamp)%%''。 Secret 见 Console 后台回调规则。 | |''%%payload%%'' |object |包括:
- ''%%ext%%'':消息的扩展字段、
- ''%%ack_message_id%%'':消息 ID、
- ''%%bodies%%'':消息体内容。 | |''%%host%%'' |String |服务器名称。 | |''%%appkey%%'' |String |你在环信管理后台注册的应用唯一标识。 | |''%%from%%'' |String |发送已读回执用户 ID。 | |''%%to%%'' |String |接收已读回执用户 ID。 | |''%%eventType%%'' |String |''%%chat%%'':单聊。 | |''%%timestamp%%'' |long |到环信 IM 服务器的 Unix 时间戳,单位为 ms。 | |''%%msg_id%%'' |String |该回执消息的消息 ID。 | 回调请求示例: { "chat_type": "read_ack", "callId": "XXXX#XXXX_968665325555943556", "security": "bd63d5fa8f72823e6d33e09a43aa4239", "payload": { "ext": {}, "ack_message_id": "968665323572037776", "bodies": [] }, "host": "msync@ebs-ali-beijing-msync45", "appkey": "XXXX#XXXX", "from": "1111", "to": "2222", "eventType": "chat", "msg_id": "968665325555943556", "timestamp": 1643099771248 } ==== 用户登入登出 ==== ^事件 ^主要字段 ^触发事件 ^ |''%%userStatus%%'' |- |用户在线状态变更事件 | |''%%userStatus:login%%'' |''%%{“status”:“online”,”reason“:“login”}%%'' |用户登录 | |''%%userStatus:logout%%'' |''%%{“status”:“offline”,”reason“:“logout”}%%'' |用户登出 | |''%%userStatus:replaced%%'' |''%%{“status”:“offline”,”reason“:“replaced”}%%'' |用户登出 | === 用户登录 === 回调请求主要字段含义: ^字段 ^数据类型 ^含义 ^ |''%%callId%%'' |String |''%%callId%%'' 为 ''%%{appkey}_{uuid}%%'' 其中 ''%%uuid%%'' 为随机生成,作为每条回调的唯一标识。 | |''%%reason%%'' |object |''%%login%%'',用户登录。 | |''%%security%%'' |String |签名,格式如下: MD5(callId+secret+timestamp)。 Secret 见 Console 后台回调规则。 | |''%%os%%'' |String |设备类型。 | |''%%ip%%'' |String |用户登录 IP。 | |''%%host%%'' |String |服务器名称。 | |''%%appkey%%'' |String |你在环信管理后台注册的应用唯一标识。 | |''%%user%%'' |String |登录用户识别号,为 {App Key/设备类型_设备 ID}。 | |''%%version%%'' |String |SDK 版本号。 | |''%%timestamp%%'' |long |登录请求到环信 IM 服务器的 Unix 时间戳,单位为 ms。 | |''%%status%%'' |String |''%%online%%'',在线。 | 回调请求示例: { "callId":"XXXX#XXXX", "reason":"login", "security":"XXXX", "os":"ios", "ip":"XXXX", "host":"XXXX", "appkey":"XXXX#XXXX", "user":"XXXX", "version":"3.8.9.1", "timestamp":1642585154644, "status":"online" } === 用户登出 === 回调请求主要字段含义: ^字段 ^数据类型 ^含义 ^ |''%%callId%%'' |String |''%%callId%%'' 为 ''%%{appkey}_{uuid}%%'' 其中 ''%%uuid%%'' 为随机生成,作为每条回调的唯一标识。 | |''%%reason%%'' |object |''%%logout%%'' 该用户登出账号。 | |''%%security%%'' |String |签名,格式如下: ''%%MD5(callId+secret+timestamp)%%''。Secret 见 Console 后台回调规则。 | |''%%os%%'' |String |设备类型。 | |''%%ip%%'' |String |用户登录 IP。 | |''%%host%%'' |String |服务器名称。 | |''%%appkey%%'' |String |你在环信管理后台注册的应用唯一标识。 | |''%%user%%'' |String |登录用户识别号,为 ''%%{App Key/设备类型_设备 ID}%%''。 | |''%%version%%'' |String |SDK 版本号。 | |''%%timestamp%%'' |long |请求到环信 IM 服务器的 Unix 时间戳,单位为 ms。 | |''%%status%%'' |String |''%%offline%%'',离线。 | 回调请求示例: { "callId":"XXXX#XXXX_25b54a81-1376-4669-bb3d-178339a8f11b", "reason":"logout", "security":"2c7dd77e61b8f26801627fdaadca987e", "os":"ios", "ip":"XXXX", "host":"********", "appkey":"XXXX#XXXX", "user":"XXXX#XXXX_XXXX/ios_6d580737-db3a-d2b5-da18-b6045ffd195b", "version":"3.8.9.1", "timestamp":1642648914742, "status":"offline" } === 用户登出(被其他设备踢掉) === 回调请求主要字段含义: ^字段 ^数据类型 ^含义 ^ |''%%callId%%'' |String |''%%callId%%'' 为 ''%%{appkey}_{uuid}%%'' 其中 ''%%uuid%%'' 为随机生成,作为每条回调的唯一标识。 | |''%%reason%%'' |object |''%%replaced%%'',该用户登出,原因是被其他设备登录踢掉。 | |''%%security%%'' |String |签名,格式如下: ''%%MD5(callId+secret+timestamp)%%''。Secret 见 Console 后台回调规则。 | |''%%os%%'' |String |设备类型。 | |''%%ip%%'' |String |用户登录 IP。 | |''%%host%%'' |String |服务器名称。 | |''%%appkey%%'' |String |你在环信管理后台注册的应用唯一标识。 | |''%%user%%'' |String |登录用户识别号,为 ''%%{App Key/设备类型_设备 ID}%%''。 | |''%%version%%'' |String |SDK 版本号。 | |''%%timestamp%%'' |long |请求到环信 IM 服务器的 Unix 时间戳,单位为毫秒 。 | |''%%status%%'' |String |''%%offline%%'',离线。 | 回调请求示例: { "callId":"XXXX#XXXX_260ae3eb-ba31-4f01-9a62-8b3b05f3a16c", "reason":"replaced", "security":"0ac500b1a1e44fe76dbfdc664cbaa76b", "os":"ios","ip":"223.71.97.198:52709", "host":"msync@ebs-ali-beijing-msync40", "appkey":"XXXX#XXXX", "user":"XXXX#XXXX_XXXX/ios_a5fa01fd-b5a4-84d5-ebeb-bf10e8950442", "version":"3.8.9.1", "timestamp":1642648955563, "status":"offline" } ==== 敏感词监测 ==== ^事件 ^payload 中类型 ^触发事件 ^ |''%%sensitiveWords%%'' |- |敏感词所有事件 | |''%%sensitiveWords:intercepted%%'' |''%%{“alertReason”:“intercepted”}%%'' |因为触发敏感词被拦截 | ==== Reaction 回调事件 ==== 响应体字段含义: ^字段 ^数据类型 ^含义 ^ |''%%chat_type%%'' |String |会话类型(默认全选):
- “chat”:单聊回调;
- “groupchat”:群聊回调包含了群组和聊天室的消息回调;
- “notify”:通知回调包含了 Thread 和 Reaction 的回调,需要结合 payload 中的 type 字段确定具体类型。 | |''%%payload.type%%'' |String |固定值 “reaction”。 | |''%%payload.channel_type%%'' |String |会话类型:
- “chat”:单聊。
- “groupchat”:群聊。 | |''%%payload.data.ts%%'' |Long |当前 Reaction 操作的 Unix 时间戳,单位为毫秒。 | |''%%payload.num%%'' |Number |操作次数。 | |''%%payload.data%%'' |List |Reaction 操作详细内容。 | |''%%payload.data.to%%'' |String |消息接收方。 | |''%%payload.data.reactions%%'' |List |Reaction 通知数据结构。 | |''%%payload.data.reactions.reaction%%'' |String |Reaction 表情。 | |''%%payload.data.reactions.userList%%'' |List |Reaction 表情操作人员列表。 | |''%%payload.data.reactions.count%%'' |Number |Reaction 表情被操作次数。 | |''%%payload.data.reactions.op%%'' |List |Reaction 当前操作详情。 | |''%%payload.data.reactions.op.reactionType%%'' |String |Reaction 当前操作类型。 | |''%%payload.data.reactions.op.operator%%'' |String |Reaction 当前操作人。 | 其他字段见 [[https://docs-im.easemob.com/ccim/rest/callbackconfig#回调内容中单聊_群聊_聊天室事件的公共参数说明|公共参数]]。 回调请求示例: { "chat_type": "notify", "payload": { "data": [ { "messageId": "99XXXX32", "from": "user2", "reactions": [ { "reaction": "test", "userList": [ "user2" ], "count": 1 }, { "op": [ { "reactionType": "create", "operator": "user2" } ], "reaction": "test-1", "userList": [ "user2" ], "count": 1 } ], "to": "user3", "channel_type": "chat", "ts": 1648722783700 } ], "num": 2, "channel_type": "chat", "type": "reaction" }, "host": "XXXX", "appkey": "XXXX#XXXX", "from": "user1", "to": "user2", "eventType": "chat", "msg_id": "99XXXX56", "timestamp": 1648722784819 } ==== Thread 回调事件 ==== 主要字段含义: ^字段 ^数据类型 ^含义 ^ |''%%chat_type%%'' |String |会话类型(默认全选):
- “chat”:单聊回调;
- “groupchat”:群聊回调包含了群组和聊天室的消息回调;
- “notify”:通知回调包含了 Thread 和 Reaction 的回调,需要结合 payload 中的 type 字段确定具体类型。 | |''%%payload.type%%'' |String |固定值 “thread”。 | |''%%payload.data%%'' |JSON |Thread 操作数据结构。 | |''%%payload.data.id%%'' |String |Thread 的 ID。 | |''%%payload.data.name%%'' |String |Thread 名称。 | |''%%payload.data.from%%'' |String |Thread 消息的操作人。 | |''%%payload.data.operation%%'' |String |Thread 发送消息的事件:''%%update_msg%%'':消息更新。 | |''%%payload.data.msg_parent_id%%'' |String |创建 Thread 的消息 ID,可能为空。 | |''%%payload.data.message_count%%'' |Number |Thread 消息的总数。 | |''%%payload.data.muc_parent_id%%'' |String |创建 Thread 时所在的群组 ID。 | |''%%payload.data.last_message%%'' |JSON |最近一条消息的内容。 | 其他字段见 [[https://docs-im.easemob.com/ccim/rest/callbackconfig#回调内容中单聊_群聊_聊天室事件的公共参数说明|公共参数]]。 回调请求示例: { "chat_type": "notify", "payload": { "data": { "msg_parent_id": "98XXXX12", "name": "test", "from": "user1", "last_message": { "payload": { "ext": {}, "bodies": [ { "msg": "thread test", "type": "txt" } ], "meta": { "thread": { "msg_parent_id": "98XXXX12", "thread_name": "test", "muc_parent_id": "user2" } }, "from": "user1", "to": "17XXXX93", "type": "groupchat" }, "from": "XXXX#XXXX_yifan2", "id": "10XXXX28", "to": "XXXX#XXXX_17XXXX93", "timestamp": 1651029973455 }, "id": "17XXXX93", "message_count": 49, "operation": "update_msg", "muc_parent_id": "user2", "timestamp": 1651029973455 }, "type": "thread" }, "host": "XXXX", "appkey": "XXXX#XXXX", "from": "admin", "to": "user2", "eventType": "chat", "msg_id": "10XXXX24", "timestamp": 1651029973480 }