即时通讯 IM 支持 HTTP 回调(Webhook)。对你的即时通讯应用设置 HTTP 回调后,当指定事件发生时,即时通讯 IM 服务器会在事件发生时通过 HTTP POST 请求向你的应用服务器发送请求,请求体为 JSON 格式的字符串,字符集为 UTF-8。
本文介绍即时通讯 IM 支持的发送后回调事件。
当即时通讯 app 中有用户登录登出时,即时通讯 IM 服务端会向你的应用服务器发送回调事件,通知你当前的操作。
当本地有用户登录时,即时通讯 IM 服务会向你的应用服务器发送回调事件,示例如下:
{
"callId":"XXXX#XXXXe393c568-5ae5-4a0e-8a2c-008b52b49eed",
"reason":"login",
"security":"XXXXae2eXXXXced298883a0cf06d41b9",
"os":"ios",
"ip":"************",
"host":"*******",
"appkey":"XXXX#XXXX",
"user":"XXXX#XXXXtstXXXX/ios_XXXX01fd-b5a4-84d5-ebeb-bf10XXXX0442",
"version":"3.8.9.1",
"timestamp":1642585154644,
"status":"online"
}
字段 | 数据类型 | 描述 |
---|---|---|
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段值的格式为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
reason |
Object | 触发回调的原因。login 表示用户登录。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
os |
String | 设备类型,指设备的操作系统,包含 ios 、android 、linux 、win 及 other 。 |
ip |
String | 用户登录的 IP 地址。 |
host |
String | 即时通讯 IM 服务分配的 RESTful API 请求地址域名。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
user |
String | 登录用户的识别号,格式为 {appKey}/{OS}_{deviceId} 。 |
version |
String | SDK 版本号。 |
timestamp |
Number | 即时通讯 IM 服务器收到登录请求的 Unix 时间戳,单位为毫秒。 |
status |
String | 用户当前状态:
|
当本地有用户登出时,即时通讯 IM 服务会向你的应用服务器发送回调事件,示例如下:
{
"callId":"XXXX#XXXX25b54a81-1376-4669-bb3d-178339a8f11b",
"reason":"logout",
"security":"XXXXd77eXXXXf26801627fdaadca987e",
"os":"ios",
"ip":"223.71.97.198:4XXXX",
"host":"********",
"appkey":"XXXX#XXXX",
"user":"XXXX#XXXXtstXXXX/ios_XXXX0737-db3a-d2b5-da18-b604XXXX195b",
"version":"3.8.9.1",
"timestamp":1642648914742,
"status":"offline"
}
字段 | 数据类型 | 描述 |
---|---|---|
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段值的格式为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
reason |
Object | 触发回调的原因。logout 表示用户登出。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
os |
String | 设备类型,指设备的操作系统,包含 ios 、android 、linux 、win 及 other 。 |
ip |
String | 用户登出的 IP 地址。 |
host |
String | 即时通讯 IM 服务分配的 RESTful API 请求地址域名。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
user |
String | 登出用户的识别号,格式为 {appKey}/{OS}_{deviceId} 。 |
version |
String | SDK 版本号。 |
timestamp |
Number | 即时通讯 IM 服务器收到登出请求的 Unix 时间戳,单位为毫秒。 |
status |
String | 用户当前状态:
|
当本地有用户因被其他设备踢掉而登出时,即时通讯 IM 服务会向你的应用服务器发送回调事件,示例如下:
{
"callId":"XXXX#XXXX260ae3eb-ba31-4f01-9a62-8b3b05f3a16c",
"reason":"replaced",
"security":"XXXX00b1XXXX4fe76dbfdc664cbaa76b",
"os":"ios","ip":"223.71.97.198:52709",
"host":"msync@ebs-ali-beijing-msync40",
"appkey":"XXXX#XXXX",
"user":"XXXX#XXXXtst01XXXX/ios_XXXX01fd-b5a4-84d5-ebeb-bf10XXXX0442",
"version":"3.8.9.1",
"timestamp":1642648955563,
"status":"offline"
}
字段 | 数据类型 | 描述 |
---|---|---|
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段的值为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
reason |
Object | 触发回调的原因。replaced 表示用户被其他设备踢掉而登出。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
os |
String | 设备类型,指设备的操作系统,包含 ios 、android 、linux 、win 及 other 。 |
ip |
String | 用户登出的 IP 地址。 |
host |
String | 即时通讯 IM 服务分配的 RESTful API 请求地址域名。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
user |
String | 登出用户的识别号,格式为 {appKey}/{OS}_{deviceId} 。 |
version |
String | SDK 版本号。 |
timestamp |
Number | 即时通讯 IM 服务器收到登出请求的 Unix 时间戳,单位为毫秒。 |
status |
String | 用户当前状态:
|
当即时通讯 app 中有用户发送消息时,无论是单聊、群聊或聊天室,即时通讯 IM 服务均会向你的应用服务端发送回调事件。示例如下:
{
"callId":"{appkey}_{uuid}",
"eventType":"chat_offline",
"timestamp":1600060847294,
"chat_type":"groupchat",
"group_id":"1693XXXX238921545",
"from":"user1",
"to":"user2",
"msg_id":"8924XXXX42322",
"payload":{
// 具体的回调消息内容
},
"securityVersion":"1.0.0",
"security":"XXXX2c39XXXX9e7abc83958bcc3156d3"
}
参数 | 类型 | 描述 |
---|---|---|
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段值的格式为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
eventType |
String | 消息类型:
|
timestamp |
Number | 即时通讯 IM 服务器接收到此消息的 Unix 时间戳,单位为毫秒。 |
chat_type |
String | 会话类型:
|
group_id |
String | 消息回调所发生的群组或聊天室的 ID。当 chat_type 为 groupchat 时,才会有该参数。 |
from |
String | 消息的发送方。 |
to |
String | 消息的接收方。 |
msg_id |
String | 该回调事件的消息 ID,与用户发送消息时的 msg_id 一致。 |
payload |
Object | 消息回调事件的详细内容。根据用户在单聊、群聊和聊天室中发送的消息类型,回调事件中的 payload 包含的字段不同,具体示例及参数解释详见下文,也可参见历史消息记录。 |
securityVersion |
String | 预留参数。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
host |
String | 即时通讯 IM 分配的 RESTful API 请求地址域名。 |
当用户在单聊、群聊或聊天室中发送文字消息时,即时通讯 IM 服务会向你应用的服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"msg":"rr",
"type":"txt"
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
msg |
String | 文字消息内容。 |
type |
String | 消息类型。文字消息为 txt 。 |
当用户在单聊、群聊或聊天室发送图片消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"filename":"image",
"size":
{
"width":746,
"height":1325
},
"secret":"XXXXqnkRXXXXAUHNhFQyIhTJxWxvGOwyx1",
"file_length":118179,
"type":"img",
"url":"https://a1.agora.com/"
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
filename |
String | 图片文件名称。 |
secret |
String | 成功上传图片文件后返回的密钥。 |
file_length |
Number | 图片文件大小,单位为字节。 |
size |
JSON | 图片尺寸,单位为像素。包含如下字段:
|
url |
String | 图片 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid} ,其中 file_uuid 为文件 ID。成功上传图片文件后,从文件上传的响应 body 中获取。 |
type |
String | 消息类型。图片消息为 img 。 |
当用户在单聊、群聊或聊天室中发送语音消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"filename":"audio",
"length":4,
"secret":"XXXXynkRXXXX1e0Ksmmt2Ym6AzpRr9SxsUpF",
"file_length":6374,
"type":"audio",
"url":"https://a1.agora.com/"
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
filename |
String | 语音文件名称。 |
secret |
String | 成功上传语音文件后返回的密钥。 |
file_length |
Number | 语音文件大小,单位为字节。 |
length |
Number | 语音时间,单位为秒。 |
url |
String | 语音文件的 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid} ,其中 file_uuid 为文件 ID。成功上传语音文件后,从文件上传的响应 body 中获取。 |
type |
String | 消息类型。语音消息为 audio 。 |
当用户在单聊、群聊或聊天室中发送视频消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"thumb_secret":"t1AEXXXXEeyS81-d10_HOpjSZc8TD-ud40XXXXOStQrr7Mbc",
"filename":"video.mp4",
"size":
{
"width":360,
"height":480
},
"thumb":"https://a1.agora.com/agora-demo/shuang/chatfiles/XXXX0400-7a8b-11ec-8d83-7106XXXX33e6",
"length":10,
"secret":"XXXXgHqLXXXXBfuoalZCJPD7PVcoOu_RHTRa78bjU_KQAPr2",
"file_length":601404,
"type":"video",
"url":"https://a1.agora.com/agora-demo/shuang/chatfiles/XXXX3270-7a8b-11ec-9735-6922XXXXb891"
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
thumb_secret |
String | 成功上传视频缩略图后返回的密钥。 |
filename |
String | 视频文件的名称。 |
size |
Json | 缩略图图片大小,包含如下字段:
|
thumb |
String | 视频缩略图的 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid} ,其中 file_uuid 为缩略图文件 ID。成功上传视频缩略图文件后,从文件上传的响应 body 中获取。 |
secret |
String | 成功上传视频文件后返回的密钥。 |
file_length |
Number | 视频文件大小,单位为字节。 |
url |
String | 视频文件的 URL 地址,格式为 https://{host}/{org_name}/{app_name}/chatfiles/{file_uuid} ,其中 file_uuid 为视频文件 ID。成功上传视频文件后,从文件上传的响应 body 中获取。 |
type |
String | 消息类型。视频消息为 video 。 |
当用户在单聊、群聊或聊天室中发送位置消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"lng":116.32309156766605,
"type":"loc",
"addr":"********",
"lat":39.96612729238626
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
lng |
String | 纬度。 |
lat |
String | 经度。 |
addr |
String | 位置的文字描述。 |
type |
String | 消息类型。位置消息为 loc 。 |
当用户在单聊、群聊或聊天室中发送透传消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"msg":"rr",
"type":"cmd"
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
msg |
String | 透传消息内容。 |
type |
String | 消息类型。透传消息为 cmd 。 |
当用户在单聊、群聊或聊天室中发送自定义消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件,其中 payload
示例如下:
"payload":
{
"ext":{},
"bodies":[
{
"customExts": [ {"name": 1 } ],
"v2:customExts":{"k":"v","k1":"v1"},
"customEvent": "flower",
"type": "custom"
}
]
}
其中,ext
为消息的扩展字段,数据类型为 Object;bodies
为该回调的主体内容,数据类型为 Object。包含如下字段:
字段 | 数据类型 | 描述 |
---|---|---|
customExts/v2:customExts |
Array/JSON | 用户自定义的事件属性。该参数为可选,不需要可以不传。
|
customEvent |
String | 用户自定义的事件类型。该字段的值必须满足正则表达式,[a-zA-Z0-9-_/.]{1,32},不能超过 32 个字符。 |
type |
String | 消息类型。自定义消息为 custom 。 |
from |
String | 表示消息发送者。若无此字段,服务器会默认设置为 “from”:“admin”;若有该字段但值为空串 (“”),请求失败。 |
当即时通讯 IM app 中有用户在单聊、群聊或聊天室中撤回消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件。示例如下:
{
"chat_type":"recall",
"callId":"orgname#appname_9664XXXX5536657404",
"security":"ea7aXXXX14fbXXXX33d5f4f169eb4f8d",
"payload":
{
"ext":{},
"ack_message_id":"9664XXXX0900644860",
"bodies":[]
},
"host":"******",
"appkey":"orgname#appname",
"from":"tst",
"recall_id":"9664XXXX0900644860",
"to":"1709XXXX2023810",
"eventType":"chat",
"msg_id":"9664XXXX5536657404",
"timestamp":1642589932646
}
字段 | 数据类型 | 描述 |
---|---|---|
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段值的格式为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
eventType |
String | 消息类型:
|
timestamp |
Number | 即时通讯 IM 服务器接收到此消息的 Unix 时间戳,单位为毫秒。 |
chat_type |
String | 会话类型:
|
group_id |
String | 消息回调所发生的群组或聊天室的 ID。当 chat_type 为 groupchat 时,才会有该参数。 |
from |
String | 消息的发送方。 |
to |
String | 消息的接收方。 |
recall_id |
String | 要撤回的消息 ID。 |
msg_id |
String | 该撤回事件消息的 ID,与发送消息时的 msg_id 一致。 |
payload |
Object | 消息回调事件的内容结构体,包含如下字段:
|
securityVersion |
String | 预留参数。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
host |
String | 即时通讯 IM 分配的 RESTful API 请求地址域名。 |
当即时通讯 app 中有用户进行群组或聊天室操作时,即时通讯 IM 服务会向你的应用服务器发送回调事件。示例如下:
{
"chat_type": "muc",
"callId": "XXXX#XXXX",
"security": "XXXX",
"payload":{
// 具体的回调消息内容
},
"group_id": "1735XXXX6122369",
"host": "XXXX",
"appkey": "XXXX#XXXX",
"from": "XXXX#XXXX_1111@easemob.com/android_8070d7b2-795eb6e63d",
"to": "1111",
"eventType": "chat",
"msg_id": "9764XXXX3882744164",
"timestamp": 1644914583273
}
字段 | 数据类型 | 描述 |
---|---|---|
chat_type |
String | 事件类型。muc 表示群组或聊天室。 |
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段值的格式为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
eventType |
String | 消息类型:
|
timestamp |
Number | 即时通讯 IM 服务器接收到该消息的 Unix 时间戳,单位为毫秒。 |
group_id |
String | 消息回调所发生的群组或聊天室的 ID。当 chat_type 为 groupchat 时,才会有该参数。 |
from |
String | 消息的发送方。 |
to |
String | 消息的接收方。 |
msg_id |
String | 该消息回调的 ID,与发送消息时的 msg_id 一致。 |
payload |
Object | 回调事件的内容结构体。包含如下字段:
|
securityVersion |
String | 预留参数。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
host |
String | 即时通讯 IM 分配的 RESTful API 请求地址域名。 |
当用户创建群组或聊天室时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX_173556296122369@conference.easemob.com",
"reason": "",
"is_chatroom": false,
"operation": "create",
"status":
{
"description":"",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 create
。
当用户删除群组或聊天室时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX_173548612157441@conference.easemob.com",
"reason": "",
"is_chatroom": false,
"operation": "destroy",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 destroy
。
当用户申请加入群组时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX_.com",
"reason": "join group123",
"is_chatroom": false,
"operation": "apply",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中:
reason
为申请加入群组的消息。operation
为当前操作,即 apply
。当本地用户同意其他用户加入群组时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX",
"reason": "",
"is_chatroom": false,
"operation": "apply_accept",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 apply_accept
。
当本地用户邀请其他用户进入群组时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX",
"reason": "Hello",
"is_chatroom": false,
"operation": "invite",
"status": {
"description": "",
"error_code": "ok"
}
}
其中:
reason
为邀请入群的信息。operation
为当前操作,即 invite
。当受邀用户同意本地用户的进群邀请后,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"reason": "",
"is_chatroom": false,
"operation": "invite_accept",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 invite_accept
。
当受邀用户拒绝本地用户的进群邀请时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"reason": "",
"is_chatroom": false,
"operation": "invite_decline",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 invite_decline
。
当用户将其他成员添加至群组或聊天室黑名单时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173558358671361@conference.easemob.com",
"reason": "",
"is_chatroom": false,
"operation": "ban",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 ban
。
当用户将其他成员从群组或聊天室黑名单中移除时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"reason": "undefined",
"is_chatroom": false,
"operation": "allow",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 allow
。
当用户修改群组或聊天室信息时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549200408577XXXX",
"is_chatroom": false,
"operation": "update",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 update
。
当用户屏蔽群组或聊天室消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"is_chatroom": false,
"operation": "block",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 block
。
当用户取消屏蔽群组或聊天室消息时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"is_chatroom": false,
"operation": "unblock",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 unblock
。
若新用户加入了群组或聊天室时,即时通讯 IM 服务会向你的应用服务器发送用户加入了群组或聊天室的通知。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"is_chatroom": false,
"operation": "presence",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 presence
。
payload
示例如下:"payload": {
"muc_id": "XXXX#XXXX@conference.easemob.com",
"is_chatroom": false,
"operation": "leave",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 leave
。
payload
示例如下:"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"is_chatroom": false,
"operation": "kick",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 kick
。
当用户主动离开群组或聊天室或被移出时,即时通讯 IM 服务会向你的应用服务器发送用户离开的通知。其中 payload
示例如下:
"payload": {
"muc_id": "XXXX#XXXX_XXXX@conference.easemob.com",
"is_chatroom": true,
"operation": "absence",
"status": {
"description": "",
"error_code": "ok"
}
}
其中 operation
为用户主动离开群组或聊天室或被移出的结果,即 absence
。
当用户作为群主或聊天室所有者转让权限时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"is_chatroom": false,
"operation": "assing_owner",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 assing_owner
。
当用户添加群组或聊天室管理员时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"is_chatroom": false,
"operation": "add_admin",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 add_admin
。
当用户删除群组或聊天室管理员时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"is_chatroom": false,
"operation": "remove_admin",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 remove_admin
。
当用户禁言群组或聊天室成员时,即时通讯 IM 服务会向你的应用服务器发送回调事件。
将群成员禁言的回调的 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"reason": "",
"is_chatroom": false,
"operation": "ban",
"status":
{
"description": "",
"error_code": "ok"
}
}
将聊天室成员禁言的回调的 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"reason": "",
"is_chatroom": true,
"operation": "add_mute",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,群组为 ban
,聊天室为 add_mute
。
当用户取消群组或聊天室成员禁言时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"reason": "",
"is_chatroom": false,
"operation": "remove_mute",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 remove_mute
。
当用户更新群组或聊天室公告时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"reason": "gogngao",
"is_chatroom": false,
"operation": "update_announcement",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中:
reason
为群公告或聊天室公告内容。operation
为当前操作,即 update_announcement
。当用户删除群组或聊天室公告时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"reason": "",
"is_chatroom": false,
"operation": "delete_announcement",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中:
reason
为删除后的群公告,即为空。operation
为当前操作,即 delete_announcement
。当用户上传群组共享文件时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173560762007553XXXX",
"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"
}
}
其中:
reason
中为上传群共享文件的详情,包含如下字段:file_id
: 文件 ID。file_name
: 文件名。file_owner
: 文件所有者,即上传文件的用户。file_size
: 文件大小,单位为字节。created
: 文件创建的 Unix 时间戳,单位为毫秒。operation
为当前操作,即 upload_file
。当用户删除群组共享文件时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"reason": "79ddf840-8e2f-11ec-bec3-ad40868b03f9",
"is_chatroom": false,
"operation": "delete_file",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中:
reason
为删除的共享文件 ID,与上传群文件时的 file_id
一致。operation
为当前操作,即 delete_file
。当有成员被添加至群组或聊天室白名单时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"is_chatroom": false,
"operation": "add_user_white_list",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中 operation
为当前操作,即 add_user_white_list
。
当有成员被移出群组或聊天室白名单时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173549292683265XXXX",
"is_chatroom": false,
"operation": "remove_user_white_list",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中,operation
为当前操作,即 remove_user_white_list
。
当群组或聊天室全局禁言时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173553668390913XXXX",
"is_chatroom": false,
"operation": "ban_group",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中,operation
为当前操作,即 ban_group
。
当群组或聊天室全局禁言被解除时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"muc_id": "XXXX#XXXX173553668390913XXXX",
"is_chatroom": false,
"operation": "remove_ban_group",
"status":
{
"description": "",
"error_code": "ok"
}
}
其中,operation
为当前操作,即 remove_ban_group
。
当即时通讯 app 中有用户进行好友关系操作时,即时通讯 IM 服务会向你的应用服务器发送回调事件。示例如下:
{
"chat_type": "roster",
"callId": "orgname#appname_9664XXXX5536657404",
"security": "XXXXa9feXXXX69241e17b15e2783dbb1",
"payload": {
// 具体的回调事件
},
"host": "msync@ebs-ali-beijing-msync26",
"appkey":"orgname#appname",
"from":"tst",
"to":"tst01",
"eventType":"chat",
"msg_id":"9664XXXX5536657404",
"timestamp":1642589932646
}
字段 | 数据类型 | 描述 |
---|---|---|
chat_type |
String | 事件类型。roster 表示好友关系。 |
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段的值为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
eventType |
String | 消息类型:
|
timestamp |
Number | 即时通讯 IM 服务器接收到此消息的 Unix 时间戳,单位为毫秒。 |
from |
String | 发起好友操作的用户。 |
to |
String | 好友操作的目标用户。 |
msg_id |
String | 该消息回调的 ID,与发送消息时的 msg_id 一致。 |
payload |
Object | 消息回调事件的内容结构体。各回调事件包含的 payload 见下文。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
host |
String | 即时通讯 IM 分配的 RESTful API 请求地址域名。 |
当用户添加好友时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"reason":"",
"operation":"add"
}
其中,operation
为当前操作,即 add
。
当用户删除好友时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"roster_ver":"XXXXD920XXXX5B51EB0B806E83BDD97F089B0092",
"operation":"remove"
}
其中:
roster_ver
为好友列表的版本号。operation
为当前操作,即 remove
。当用户同意了其他用户的好友申请时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"roster_ver":"XXXX14FEXXXXA9ABC52CA86C5DE1601CF729BFD6",
"operation":"accept"
}
其中:
roster_ver
为好友列表版本号。operation
为当前操作,即 accept
。当用户拒绝了其他用户的好友申请时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"roster_ver":"XXXXEC24XXXX32B2EB1B654AA446930DB9BAFE59",
"operation":"decline"
}
其中:
roster_ver
为好友列表版本号。operation
为当前操作,即 decline
。用户发送好友申请后,对方用户同意加好友后,申请方会收到服务器发送的该事件。其中 payload 示例如下:
"payload": {
"roster_ver": "1BD5718E9C9D3F0C572A5157CFC711D4F6FA490F",
"operation": "remote_accept"
}
其中:
roster_ver
为好友列表版本号。operation
为当前操作,即 remote_accept
。用户发送好友申请后,对方用户拒绝添加好友后,申请方会收到服务器发送的该事件。其中 payload 示例如下:
"payload": {
"roster_ver": "CFC06E0BA39E8B7FD493D102E2F8F3CAE678B380",
"operation": "remote_decline"
}
其中:
roster_ver
为好友列表版本号。operation
为当前操作,即 remote_decline
。当用户将好友拉入黑名单时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"operation":"ban",
"status":
{
"error_code":"ok"
}
}
其中 operation
为当前操作,即 ban
。
当用户将好友从黑名单中移出时,即时通讯 IM 服务会向你的应用服务器发送回调事件。其中 payload
示例如下:
"payload":
{
"operation":"allow",
"status":
{
"error_code":"ok"
}
}
其中 operation
为当前操作,即 allow
。
当即时通讯 app 的用户发送消息回执时,即时通讯 IM 服务会向你的应用服务器发送回调事件。示例如下:
{
"chat_type": "read_ack",
"callId": "XXXX#XXXX968665325555943556",
"security": "bd63XXXX8f72XXXX6d33e09a43aa4239",
"payload": {
"ext": {},
"ack_message_id": "9686XXXX3572037776",
"bodies": []
},
"host": "msync@ebs-ali-beijing-msync45",
"appkey": "XXXX#XXXX",
"from": "1111",
"to": "2222",
"eventType": "chat",
"msg_id": "9686XXXX5555943556",
"timestamp": 1643099771248
}
字段 | 数据类型 | 含义 |
---|---|---|
chat_type |
String | 事件类型:
|
callId |
String | 回调 ID,即每条 HTTP 回调的唯一标识。该字段的值为 {appKey}_{uuid} ,其中 uuid 为随机生成。 |
reason |
Object | 触发回调的原因。login 表示用户登录。 |
security |
String | 消息回调请求中的签名,用于确认该回调是否来自即时通讯 IM 服务器。该签名使用 MD5 算法对 {callId}+{secret}+{timestamp} 进行加密,其中 secret 详见声网控制台的发送后回调规则。 |
payload |
Object | 回调的具体内容,包括如下字段:
|
host |
String | 即时通讯 IM 服务分配的 RESTful API 请求地址域名。 |
appkey |
String | 即时通讯 IM 服务分配给每个 app 的唯一标识。 |
from |
String | 发送回执的用户 ID。 |
to |
String | 接收回执的用户 ID。 |
eventType |
String | 消息类型:
|
timestamp |
Number | 即时通讯 IM IM 服务器收到回执事件的 Unix 时间戳,单位为毫秒。 |
msg_id |
String | 该回执的消息 ID。 |