# 回调结构说明

<div class="qiwe-hero" style="background: linear-gradient(135deg, rgba(255, 213, 145, 0.45) 0%, rgba(255, 255, 255, 0.06) 100%); border: 1px solid rgba(255, 236, 202, 0.7); border-radius: 12px; padding: 28px 32px; margin-bottom: 24px; box-shadow: 0 4px 12px rgba(250, 140, 22, 0.08);">
 <h1 style="margin: 0 0 10px 0; font-size: 26px; font-weight: 600; color: inherit; border: none; padding-bottom: 0;">回调结构说明</h1>
 <p style="margin: 0 0 16px 0; font-size: 15px; color: inherit; line-height: 1.6;">
 配置 Webhook 后，平台将以 HTTP POST 方式将事件推送至你的回调地址。通过 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">data[].cmd</code> 区分事件类型，通过 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgType</code> 区分具体消息。
 </p>
 <div style="display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px;">
 <span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 500;">HTTP 回调</span>
 <span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 500;">cmd 事件</span>
 <span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 500;">msgType 消息</span>
 <span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 500;">JSON 结构</span>
 </div>
</div><div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:20px;">
 <div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);">
 <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px;">
 <span style="background:#FA8C16;color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;">1</span>
 11016 · 账号状态
 </div>
 <p style="margin:0;font-size:12px;color:inherit;opacity:0.75;">登录/离线/顶号等设备状态变更</p>
 </div>
 <div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);">
 <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px;">
 <span style="background:#FA8C16;color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;">2</span>
 20000 · API 异步
 </div>
 <p style="margin:0;font-size:12px;color:inherit;opacity:0.75;">异步任务完成通知（如文件上传）</p>
 </div>
 <div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);">
 <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px;">
 <span style="background:#FA8C16;color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;">3</span>
 15500 · 系统消息
 </div>
 <p style="margin:0;font-size:12px;color:inherit;opacity:0.75;">联系人/群/标签/会话等系统事件</p>
 </div>
 <div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);">
 <div style="display:flex;align-items:center;gap:8px;margin-bottom:6px;">
 <span style="background:#FA8C16;color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;">4</span>
 15000 · 普通消息
 </div>
 <p style="margin:0;font-size:12px;color:inherit;opacity:0.75;">文本/图片/文件等聊天消息</p>
 </div>
</div>

<div class="qiwe-notice" style="background: rgba(255, 247, 230, 0.35); border: 1px solid rgba(255, 213, 145, 0.55); border-radius: 6px; padding: 12px 16px; margin-bottom: 20px;">
 <p style="margin:0;font-size:13px;line-height:1.6;">
 解析建议：先判断 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">cmd</code> 确定事件大类，再根据 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgType</code> 解析 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgData</code> 结构。所有回调均包含 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">guid</code>，用于区分来源设备。
 </p>
    
     <p style="margin:0;font-size:13px;line-height:1.6;">全量消息去重可使用 seq；仅针对聊天消息去重，可使用消息 ID。
 </p>
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">账号状态变化消息响应</h4>

```
 {
 "code": 0,
 "data": [
 {
 "TenantId": 0,
 "guid": "a3318ad6-5544-4a4f-a1bb-2aa667b2ipad",
 "userId": "1688*****804",
 "requestId": "901efcada57ff16a469411b3e7f1b009",
 "customParam": "",
 "cmd": 11016,
 "msgServerId": 0,
 "msgType": 0,
 "msgUniqueIdentifier": "901efcada57ff16a469411b3e7f1b009",
 "senderId": 0,
 "seq": 1759125951405848,
 "timestamp": 1759125951,
 "msgData": {
 "guid": "a3318ad6-5544-4a4f-a1bb-2aa667b2ipad",
 "msg": "login ok",
 "code": 11001, // 账号状态，见下列表
 "status": 2, // 二维码状态 0和-1 -离线 1-已扫码待确认 2-在线 3-登录失败 4-用户取消登录 10-已扫码确认，待输6位验证码 
 "serverReboot": false //服务重启维护标记（功能与热修复合并）
 }
 }
 ],
 "msg": "成功"
}
```
<div style="width:100%; border:1px solid rgba(255, 241, 214, 0.65); border-radius:6px; overflow:hidden; font-size:13px; box-sizing:border-box;">

 <div style="display:flex; width:100%; background:rgba(255, 247, 230, 0.35);">
 <div style="width:130px; flex-shrink:0; padding:10px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); font-weight:600; box-sizing:border-box;">msgData.code码</div>
 <div style="flex:1; min-width:0; padding:10px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); font-weight:600; box-sizing:border-box;">说明</div>
 </div>

 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">10000</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">网络异常离线</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11001</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">登录成功</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11002</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">注销成功</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11013</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">刷新session失败</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11017</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">其它端顶号</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11022</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">手机端主动退出，取消设备授权</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11023</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">账号环境出现异常，请重新登录使用</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11024</div>
 <div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">登录态已过期，请重新登录</div>
 </div>
 <div style="display:flex; width:100%;">
 <div style="width:130px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">11025</div>
 <div style="flex:1; min-width:0; padding:8px 12px; opacity:0.85; box-sizing:border-box;">你正在一台新设备上使用企业微信，需通过手机企业微信扫码进行安全验证</div>
 </div>

</div>
</div>

<div style="margin: 28px 0 16px 0; display: flex; align-items: center; gap: 10px;"><span style="font-size: 20px;"></span><h2 style="margin: 0; font-size: 18px; color: inherit; font-weight: 600; border: none; padding-bottom: 0;">API异步消息</h2></div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">API异步消息头</h4><span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 400; font-size: 13px">cmd = 20000</span>
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">API异步消息响应</h4>

```
{
 "code": 0,
 "data": [
 {
 "TenantId": 0,
 "guid": "a3318ad6-5544-4a4f-a1bb-2aa667b2ipad",
 "userId": "16****1804",
 "requestId": "57a360fd-f920-4b4d-84c0-351ec1c63fe8",
 "customParam": "",
 "cmd": 20000,
 "msgServerId": 0,
 "msgType": 0,
 "msgUniqueIdentifier": "cf3e312fbae0f4f9a20422609a203a66",
 "senderId": 0,
 "seq": 1759127702979498,
 "timestamp": 1759127702,
 "msgData": {
 "cloudUrl": "https://foo.com/0485.jpg"
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div style="margin: 28px 0 16px 0; display: flex; align-items: center; gap: 10px;"><span style="font-size: 20px;"></span><h2 style="margin: 0; font-size: 18px; color: inherit; font-weight: 600; border: none; padding-bottom: 0;">系统消息</h2></div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">系统消息头</h4><span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 400; font-size: 13px">cmd = 15500</span>
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">系统消息响应</h4>
 
```
{
 "data" : [{
 "cmd":15500,
 "msgServerId" : 1017723,
 "msgType" : 2131,
 "msgUniqueIdentifier" : "9FcHZl98QZK_AlX",
 "senderId" : 10030,
 "seq" : 9409929,
 "timestamp" : 1682676419
 }],
 "error" : 0,
 "msg" : "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">系统消息类型</h4>
<table style="width:100%;border-collapse:collapse;margin:12px 0;font-size:13px;">
 <thead>
 <tr>
 <th style="padding: 10px 12px; text-align: left; font-size: 13px; color: inherit; border-bottom: 2px solid rgba(255, 213, 145, 0.65); background: rgba(255, 247, 230, 0.35);">模块</th>
 <th style="padding: 10px 12px; text-align: left; font-size: 13px; color: inherit; border-bottom: 2px solid rgba(255, 213, 145, 0.65); background: rgba(255, 247, 230, 0.35);">v1版本msgType</th>
 <th style="padding: 10px 12px; text-align: left; font-size: 13px; color: inherit; border-bottom: 2px solid rgba(255, 213, 145, 0.65); background: rgba(255, 247, 230, 0.35);">v2版本newMsgType</th>
 <th style="padding: 10px 12px; text-align: left; font-size: 13px; color: inherit; border-bottom: 2px solid rgba(255, 213, 145, 0.65); background: rgba(255, 247, 230, 0.35);">说明</th>
 </tr>
 </thead>
 <tbody>
 
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;" rowspan="7">联系人相关</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2131</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_EXTERNAL_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">外部联系人信息（备注/描述/手机号）变动或删除通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2313</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_EXTERNAL_BLACKLIST</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">外部联系人加入黑名单通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2188</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_INTERNAL_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">内部联系人信息（备注/描述/手机号）变动通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2357</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_FRIEND_REQUEST_2357</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">好友申请通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2132</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_FRIEND_REQUEST_2132</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">好友申请通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2104</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_DND_TOP</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">联系人免打扰/置顶通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2115</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CONTACT_MARK</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">联系人标记操作通知</td>
 </tr>

 
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;" rowspan="4">标签相关</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2160</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">TAG_CHAT_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">聊天标签变动通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2161</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">TAG_CHAT_CONTACT_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">聊天标签中的联系人变动通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2185</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">TAG_CORP_ADD_DEL</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">企业标签新增或删除回调通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2186</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">TAG_PERSONAL_ADD_DEL</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">个人标签新增或删除回调通知</td>
 </tr>

 
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;" rowspan="11">群相关</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1001</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_NAME_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群名变换通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1002</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_MEMBER_ADD</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">新增群成员通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1003</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_MEMBER_REMOVE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">移除群成员通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1005</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_MEMBER_QUIT</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群成员自己退群通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1006</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_CREATE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群新增通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1011</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_OPERATION_TIP</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">操作提示（如聊天窗口灰小字体消息）</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1022</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_OWNER_TRANSFER</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">转让群主通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1023</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_DISMISS</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群解散通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1029</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_INVITE_APPLY</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群成员邀请其他人进群申请</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">1043</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_ADMIN_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群管理员变动通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2118</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">GROUP_INFO_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">群信息变动通知：群个微成员自己退群通知</td>
 </tr>

 
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;" rowspan="4">会话消息</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2055</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">SESSION_CLEAR</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">清空聊天记录通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2002</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">SESSION_DELETE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">删除聊天通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">40</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CALL_END</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">（属于15000，VX普通消息）语音、视频通话结束通知：挂断、拒接、超时等</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">503或2166</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">CALL_NOTIFY (503) / CALL_NOTIFY_2166 (2166)</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">语音、视频通话通知：发起、接通、未接等</td>
 </tr>

 
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;" rowspan="2">朋友圈</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">2215</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">MOMENT_CHANGE</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">朋友变动通知</td>
 </tr>
 <tr>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">517</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">MOMENT_PUSH</td>
 <td style="padding: 8px 12px; border-bottom: 1px solid rgba(255, 241, 214, 0.65); font-size: 13px; color: inherit; opacity: 0.85;">朋友圈推送通知</td>
 </tr>
 </tbody>
</table>
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">外部联系人信息（备注/电话/描述）变动或删除通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2131</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "1c9013db6fa072d9a2e79ebbbc2c377e",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 1001601,
 "msgType": 2131,
 "msgUniqueIdentifier": "GAC_jZSwSYK4nIv",
 "senderId": 10030,
 "seq": 4649391,
 "timestamp": 1759061799,
 "msgData": null
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">外部联系人加入黑名单通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2313</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "4d61e7b3d86c7ee7b1a5cd25ae21d799",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2313,
 "msgUniqueIdentifier": "4d61e7b3d86c7ee7b1a5cd25ae21d799",
 "senderId": 0,
 "seq": 1759062285546080,
 "timestamp": 1759062285,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">内部联系人信息（备注/描述）变动通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2188</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "37b9d5e6db0f99c7549747973026a134",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2188,
 "msgUniqueIdentifier": "37b9d5e6db0f99c7549747973026a134",
 "senderId": 0,
 "seq": 1759062864546227,
 "timestamp": 1759062864,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">好友申请通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2357</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "3088f0f7e621896ba62b193fe608311f",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 1001679,
 "msgType": 2357,
 "msgUniqueIdentifier": "contact_apply_friend_across_corp_1821945318",
 "senderId": 10030,
 "seq": 4649430,
 "timestamp": 1759063190,
 "msgData": {
 "applyTime": 1759063191,
 "contactId": 78813****061361,
 "contactNickname": "nihao～",
 "contactType": "微信",
 "userId": 197032****006843
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">好友申请通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2132</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "3088f0f7e621896ba62b193fe608311f",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 1001677,
 "msgType": 2132,
 "msgUniqueIdentifier": "1#queue5@21_98_245_170@8#1759063190|603963534",
 "senderId": 10030,
 "seq": 4649429,
 "timestamp": 1759063190,
 "msgData": null
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">联系人免打扰/置顶通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2104</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "bdbebbf12778f5e5518d4ad962ec601b",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2104,
 "msgUniqueIdentifier": "bdbebbf12778f5e5518d4ad962ec601b",
 "senderId": 0,
 "seq": 1759066658546173,
 "timestamp": 1759066658,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">联系人标记操作通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2115</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "4ed8af85726cfc9312129f17fb975580",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 1001823,
 "msgType": 2115,
 "msgUniqueIdentifier": "QldP57zKTmiicaB",
 "senderId": 10008,
 "seq": 4649501,
 "timestamp": 1759066380,
 "msgData": null
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">聊天标签变动通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2160</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "d9f9a49b83f689153deeeaa2fe9ad39b",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2160,
 "msgUniqueIdentifier": "d9f9a49b83f689153deeeaa2fe9ad39b",
 "senderId": 0,
 "seq": 1759063590545703,
 "timestamp": 1759063590,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">聊天标签中的联系人变动通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2161</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "6e63b099cb77beedbf63a6a8344c1249",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2161,
 "msgUniqueIdentifier": "6e63b099cb77beedbf63a6a8344c1249",
 "senderId": 0,
 "seq": 1759067145546389,
 "timestamp": 1759067145,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">企业标签新增或删除通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2185</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "4e86da4e6cb1399b51d73b7b5ce04d5e",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2185,
 "msgUniqueIdentifier": "4e86da4e6cb1399d73b4d5e",
 "senderId": 0,
 "seq": 1759127100514634,
 "timestamp": 1759127100,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成 功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">个人标签新增或删除通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2186</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "4ae8e01dd86b9fa0db0aaeec83e2658d",
 "customParam": "",
 "cmd": 15500,
 "msgServerId": 0,
 "msgType": 2186,
 "msgUniqueIdentifier": "4ae8e01dd86b9fa0db0aaeec83e2658d",
 "senderId": 0,
 "seq": 1759062104545868,
 "timestamp": 1759062104,
 "msgData": {
 "base64RawData": ""
 }
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">群名变更通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1001</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "ce6a7f71fe54e031d6dd279a4718a59e",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "MTExx",
 "fromRoomId": 239655862281126,
 "isRoomNotice": 0,
 "msgData": {
 "changedMemberList": "MTExx"
 },
 "msgServerId": 1001723,
 "msgType": 1001,
 "msgUniqueIdentifier": "980B862017D3D56CCA29049",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064201,
 "seq": 4649451
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">新增群成员通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1002</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "ec91d856e9ef964069edf6c3d7814fa8",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "MTY4ODg1NTk4OTY0MjQ4Nw==",
 "fromRoomId": 239655862281126,
 "isRoomNotice": 0,
 "msgData": {
 "changedMemberList": "MTY4ODg1NTk4O0MjQ4Nw=="
 },
 "msgServerId": 1001731,
 "msgType": 1002,
 "msgUniqueIdentifier": "CAMQleLkxgYYCCPydH7AQ==",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064340,
 "seq": 4649455
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">移除群成员通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1003</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "a2cf5549a40a49c30c0b646b41dddd32",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "MTY4ODg1NTk4OTY0MjQ4Nw==",
 "fromRoomId": 239655862281126,
 "isRoomNotice": 0,
 "msgData": {
 "changedMemberList": "MTY4ODg1NTk4OTY0MNw=="
 },
 "msgServerId": 1001727,
 "msgType": 1003,
 "msgUniqueIdentifier": "CAMQ0uHkxgYYACCklNg==",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064273,
 "seq": 4649453
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">群成员自己退群通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1005</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "2e1142644d91dca1348ac4501944b358",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "",
 "fromRoomId": 239655862281126,
 "isRoomNotice": 0,
 "msgData": {
 "changedMemberList": ""
 },
 "msgServerId": 1001741,
 "msgType": 1005,
 "msgUniqueIdentifier": "CAMQ6OPkxgYYACD8rNBQ==",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064552,
 "seq": 4649460
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">群新增通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1006</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "e5cd23ac9a9efe94e2886b69b8a51881",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "MTY4ODg1NTk4OTY0MjQ4NzsxNjODjUxzQwOzE2ODg4NTc2MzE2NTE4MDQ=",
 "fromRoomId": 239655862281126,
 "isRoomNotice": 0,
 "msgData": {
 "changedMemberList": "MTY4ODg1NTk4OTY0MjQ4NzsxNjg4ODxNzQwOzE2ODg4NTc2MzE2NTE4MDQ="
 },
 "msgServerId": 1001717,
 "msgType": 1006,
 "msgUniqueIdentifier": "01C91A68CA77CE2ADE2FA65",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064011,
 "seq": 4649448
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">转让群主通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1022</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "799da03e3f6ce387be909d89afd8506c",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "CiMInLvZs5CAgAMSGOW3sueaIkOS4uuaWsOeahOe+pOS4uw==",
 "fromRoomId": 239655862281126,
 "isRoomNotice": 0,
 "msgData": {
 "base64RawData": "CiMInLvZs5CAgAMSGOW3sueaIkOS4uuaWsOeahOe+pOS4uw=="
 },
 "msgServerId": 1001735,
 "msgType": 1022,
 "msgUniqueIdentifier": "8CF3D1CDBB1DE9F41767EA8B54DFB4D2",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064436,
 "seq": 4649457
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">群解散通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1023</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "83716546c7981e9e9750a05543419e99",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "CKXD3OKIAD",
 "fromRoomId": 261023134682181,
 "isRoomNotice": 0,
 "msgData": {
 "base64RawData": "CKXD3OKIAD"
 },
 "msgServerId": 1001757,
 "msgType": 1023,
 "msgUniqueIdentifier": "3A6ED270EF7DBA9E19A63BBEE8B50",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064794,
 "seq": 4649468
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">群管理员变动通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 1043</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "36c20d59707dc5a42965adab9b062ffc",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "CKXD3OKRgIADEJy72bOIADGAA=",
 "fromRoomId": 261023134682181,
 "isRoomNotice": 0,
 "msgData": {
 "base64RawData": "CKXD3OKRgIADEJy72bOIADGAA="
 },
 "msgServerId": 1001749,
 "msgType": 1043,
 "msgUniqueIdentifier": "W_03aLPiSBCJFck",
 "receiverId": 0,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759064693,
 "seq": 4649464
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">清空聊天记录通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2055</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "5136bc98b58102fe96ff481ca6535045",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "CI+U==",
 "fromRoomId": 0,
 "isRoomNotice": 0,
 "msgData": {
 "base64RawData": "CI+U=="
 },
 "msgServerId": 1002015,
 "msgType": 2055,
 "msgUniqueIdentifier": "CAMQ2frkxgYYpMg0s+M7gE=",
 "receiverId": 168885****651740,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759067481,
 "seq": 4649597
 }
 ],
 "msg": "成功"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">删除聊天通知</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 2002</span>

```
{
 "code": 0,
 "data": [
 {
 "guid": "29348d4d-5ee4-46c4-d458-7ff764959f16",
 "userId": "168885****703525",
 "requestId": "e5126ebae55db04c445179237baa8229",
 "customParam": "",
 "cmd": 15000,
 "base64RawData": "",
 "fromRoomId": 0,
 "isRoomNotice": 0,
 "msgData": {
 "base64RawData": ""
 },
 "msgServerId": 1002021,
 "msgType": 2002,
 "msgUniqueIdentifier": "CAMQ+PvkxgYYpcP57/BhQ8=",
 "receiverId": 168885****651740,
 "senderId": 168885****703525,
 "senderName": "",
 "timestamp": 1759067640,
 "seq": 4649600
 }
 ],
 "msg": "成功"
}
```
</div>

<div style="margin: 28px 0 16px 0; display: flex; align-items: center; gap: 10px;"><span style="font-size: 20px;"></span><h2 style="margin: 0; font-size: 18px; color: inherit; font-weight: 600; border: none; padding-bottom: 0;">普通消息</h2></div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">普通消息头</h4><span class="qiwe-tag" style="background: rgba(255, 247, 230, 0.55); border: 1px solid rgba(255, 213, 145, 0.65); border-radius: 4px; padding: 2px 10px; color: #AD6800; font-weight: 400; font-size: 13px">cmd = 15000</span>
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">普通消息响应</h4>
 
```
{
 "code": 0,
 "msg": "成功",
 "data": [{
 "guid": "2cc69541-4e71-46e6-9389-65563e0da1c2",
 "cmd":15000,
 "base64RawData": "CAMQ0e+yBA==",
 "fromRoomId": 10791082136095292,
 "isRoomNotice": 0,
 "msgData": null,
 "msgServerId": 1002114,
 "msgType": 2001,
 "msgUniqueIdentifier": "CAQQnLb7rgYY1+C/qomAgAMgk+2roAM=",
 "receiverId": 0,
 "senderId": 1688852365307991,
 "senderName": "",
 "timestamp": 1709103900
 }]
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">普通消息类型</h4><p style="margin: 8px 0 0; font-size: 13px; color: inherit; line-height: 1.6;"><p style="margin:0 0 10px;font-size:13px;color:inherit;line-height:1.6;">通过 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgType</code> 区分消息类型，不同类型对应不同的 <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgData</code> 结构。</p>

<div style="width:100%; border:1px solid rgba(255, 241, 214, 0.65); border-radius:6px; overflow:hidden; font-size:13px; box-sizing:border-box;">
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:10px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); font-weight:600; background:rgba(255, 247, 230, 0.35); box-sizing:border-box;">v1版本msgType</div>
<div style="width:200px; flex-shrink:0; padding:10px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); font-weight:600; background:rgba(255, 247, 230, 0.35); box-sizing:border-box;">v2版本newMsgType</div>
<div style="flex:1; min-width:0; padding:10px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); font-weight:600; background:rgba(255, 247, 230, 0.35); box-sizing:border-box;">说明</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">0 or 2</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">TEXT, TEXT_ALT</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">文本</div>
</div>
  
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">7 OR 14 OR 101</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">IMAGE, IMAGE_14, IMAGE_101</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">一般图片</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">22 OR 23 OR 103</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">VIDEO, VIDEO_23, VIDEO_103</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">一般视频</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">20 OR 15 OR 102</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">FILE_20, FILE, FILE_102</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">一般文件</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">29 OR 104</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">GIF_29, GIF_104</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">Gif</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">20</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">FILE_20</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">大文件(&gt; 20M)</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">22</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">VIDEO</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">大视频(&gt; 20M)</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">6</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">LOCATION</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">位置</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">13</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">LINK</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">链接</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">41</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">BUSINESS_CARD</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">名片</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">26</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">RED_PACKET</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">红包</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">16</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">VOICE</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">语音</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">78</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">MINI_PROGRAM</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">小程序</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">123</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">MIXED</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">图文混合消息</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">141</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">VIDEO_CHANNEL</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">视频号</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">146</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">LIVE</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">直播</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">213</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">SOLITAIRE</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">接龙</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">2001</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">READ_NOTIFY</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">消息已读通知</div>
</div>
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">2005</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">UNREAD_NOTIFY</div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">消息未读通知</div>
</div>
    

<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">4</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;"></div>
<div style="flex:1; min-width:0; padding:8px 12px; border-bottom:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">合并转发消息</div>
</div>  
    
    
    
<div style="display:flex; width:100%;">
<div style="width:120px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">2063</div>
<div style="width:200px; flex-shrink:0; padding:8px 12px; border-right:1px solid rgba(255, 241, 214, 0.65); opacity:0.85; box-sizing:border-box;">REVOKE</div>
<div style="flex:1; min-width:0; padding:8px 12px; opacity:0.85; box-sizing:border-box;">撤回消息</div> 
</div>  
</div>
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;">
<h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">文本消息</h4>
 
```
{
 "atList": [
 {
 "userId": "788FFFFFF987664",
 "nickname": "全*X"
 },
 {
 "userId": "168BBBBBB0713881",
 "nickname": "陈*X"
 }
 ],
 "content": "@全*X aaa @陈*X bbb"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">企微图片消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 14</span>

```
json
{
 "fileAeskey": "63663835383636623339343264346435",
 "fileId": "30680201020461305f0201000204445cc78202030f42410204bf7a587502046437f134042464383364663233352d326538362d346432392d386134312d3033643932303835623266620201000202034004101e3cfce05a05bbfafbc6c80a3444f7a40201010201000400",
 "fileMd5": "1e3cfce05a05bbfafbc6c80a3444f7a4",
 "fileName": "5LyB5Lia5b6u5L+h5oiq5Zu+XzE2ODEzODc4MjgyMTk2LnBuZw==",
 "fileSize": 819,
 "imageHasHd": true
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">个微图片消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 101</span>

```
{
 "fileAeskey" : "01bbda3d34aac6def0f9551979a7055e",
 "fileAuthkey" : "v1_9a250fbfeb25d7839e2df608373d037d2b8e6cc04af8e8eb3eb8bdf55148a704f8311bef995cc94fd279e901f8795ecd32fd7500e10a60d41bb1093b9cfa1e92",
 "fileBigHttpUrl" : "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia?param=v1_9a250fbfeb25d7839e2df608373d037d2b8e6cc04af8e8eb3eb8bdf55148a704de7335ff6b87fa02a75297341f4b53f723cca99e61929bca36385fb490c40d711be3df5688bb34d6500ae587d3bedca1e6722226551f589d3849c8ba89e03d908ab54ab63c3610b6b098e71a14eb2b422b1113a518638437556caa395851dfcc5007d3348c707f295a016bdf9859399ef975faa462b2ccca3e3a3bf5855360014b8dbbeea745f1e21d2378e5fec93000c967940afb736c039258d104e6cd8ce658be635ddf692704915348800a3cb18b31ece7a2347d4f3affbeb43277089589e10fcbd44a6a8108a9bf84d14689d7e91e90699fe2388d507932ad7700c278ab",
 "fileBigSize" : 254,
 "fileMd5" : "a1aeb5166748cb66189c733e9b68f4a9",
 "fileMiddleHttpUrl" : "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia?param=v1_9a250fbfeb25d7839e2df608373d037d2b8e6cc04af8e8eb3eb8bdf55148a704de7335ff6b87fa02a75297341f4b53f723cca99e61929bca36385fb490c40d711be3df5688bb34d6500ae587d3bedca1e6722226551f589d3849c8ba89e03d908ab54ab63c3610b6b098e71a14eb2b422b1113a518638437556caa395851dfcc5007d3348c707f295a016bdf9859399ef975faa462b2ccca3e3a3bf5855360014b8dbbeea745f1e21d2378e5fec93000c967940afb736c039258d104e6cd8ce658be635ddf692704915348800a3cb18b31ece7a2347d4f3affbeb43277089589e10fcbd44a6a8108a9bf84d14689d7e91e90699fe2388d507932ad7700c278ab",
 "fileMiddleSize" : 254,
 "fileName" : "",
 "fileThumbHttpUrl" : "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia?param=v1_9a250fbfeb25d7839e2df608373d037d2b8e6cc04af8e8eb3eb8bdf55148a704be0538b3487a5a0b5a07d22b74a09c2bfc2f458402c83f1bf27df723f8a568ca55c9bc5d23532c326c4c5d4d97e74dbcabde472465c1ea966b9d63c1836ce94c118082ce46210a82c82eb8f606945fa4f5e4ef316140eaa4adc4eaa146e65e86c9a9f31e430761e19f7686211c5628e8c3a0814c336ad97ce6e5f03de0f1745dae8423e77ca259979635923789194fa7bbc092a3577f6e910571f9d237e663767deccaa1d456be5eab661e8ac9a4561c06dc19373b769f08c6bba8061c3f72993090a580e5446fce9a92e8b6ed4d345972b60314d5b132d9e89be5ae87c2976b",
 "fileThumbSize" : 739,
 "imageHasHd" : false
 }
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">企微视频消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 23</span>

```
{
 "coverImageAeskey": "",
 "coverImageId": "3069020102046230600201000204445cc78202030f42410204bf7a587502046437f19e042436313635363664652d356534302d343732652d383636642d663434373639633934353661020100020304de5004104df4e056138311f099819fbcfe14e7a10201040201000400",
 "coverImageMd5": "fe3b08a566af99e7ab2c964464402ee2",
 "coverImageSize": 11284,
 "duration": 5,
 "fileAeskey": "38663530393138623030313335333533",
 "fileId": "3069020102046230600201000204445cc78202030f42410204bf7a587502046437f19e042436313635363664652d356534302d343732652d383636642d663434373639633934353661020100020304de5004104df4e056138311f099819fbcfe14e7a10201040201000400",
 "fileMd5": "4df4e056138311f099819fbcfe14e7a1",
 "fileName": "ZG93bmxvYWRfeG1sX3ZpZC5tcDQ=",
 "fileSize": 319044
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">个微视频消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 103</span>

```
{
 "coverImageHttpUrl": "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia?param=v1_9",
 "coverImageSize": 11284,
 "duration": 5,
 "fileAeskey": "38663530393138623030313335333533",
 "fileAuthkey": "38663530393138623030313335333533",
 "fileHttpUrl": "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia",
 "fileMd5": "4df4e056138311f099819fbcfe14e7a1",
 "fileName": "ZG93bmxvYWRfeG1sX3ZpZC5tcDQ=",
 "fileSize": 319044
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">企微文件消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 15</span>

```
{
 "fileAeskey": "38663530393138623030313335333533",
 "fileId": "38663530393138623030313335333533",
 "fileMd5": "4df4e056138311f099819fbcfe14e7a1",
 "fileName": "ZG93bmxvYWRfeG1sX3ZpZC5tcDQ=",
 "fileNameExt": "excel",
 "fileSize": 319044
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">个微文件消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 102</span>

```
{
 "fileAeskey": "38663530393138623030313335333533",
 "fileAuthkey": "38663530393138623030313335333533",
 "fileHttpUrl": "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia",
 "fileMd5": "4df4e056138311f099819fbcfe14e7a1",
 "fileName": "ZG93bmxvYWRfeG1sX3ZpZC5tcDQ=",
 "fileSize": 319044
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">GIF消息</h4><p style="margin: 8px 0 0; font-size: 13px; color: inherit; line-height: 1.6;">企微GIF消息， <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgType = 29</code></p>
<p style="margin: 8px 0 0; font-size: 13px; color: inherit; line-height: 1.6;">个微GIF消息， <code style="color: inherit; background: rgba(82, 196, 26, 0.08); border: 1px solid rgba(82, 196, 26, 0.1); padding: 2px 4px; border-radius: 3px;">msgType = 104</code></p>

```
{
 "fileHttpUrl": "https://imunion.weixin.qq.com/cgi-bin/mmae-bin/tpdownloadmedia",
 "fileMd5": "4df4e056138311f099819fbcfe14e7a1",
 "fileName": "ZG93bmxvYWRfeG1sX3ZpZC5tcDQ=",
 "fileSize": 319044
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">位置消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 6</span>

```
{
 "address": "5LqR5Y2X55yB5b63*****5bee55Ge5Li95biC",
 "latitude": 24.085241,
 "longitude": 97.93544,
 "title": "",
 "zoom": 8
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">链接消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 13</span>

```
 {
 "desc": "NOaciDnml6UtNOaciDE55pel56aP5Yip5Lqr5LiN5YGc",
 "iconAeskey": "",
 "iconAuthkey": "",
 "iconSize": 0,
 "iconUrl": "https://mmbiz.qpic.cn/mmbiz_jpg/N8l8hBLgLnBhKCwiaj2QQiaDJKa2pgIdlm8pibaSricnKlV4Vecia1q0PxyzEZcibxDUxKSCksCn8FCibKZ5IBnVicczfg/300?wxtype=jpeg&wxfrom=0",
 "linkUrl": "http://mp.weixin.qq.com/s?__biz=MjM5MzMwNTIyNQ==&mid=2889322723&idx=2&sn=473d7af39094956add11035e97edfc55&chksm=8f5a3705b82dbe13d3e2524127312cb1a26ebc452fbd90e8a166192d67451269923e32675518#rd",
 "title": "5YWR56ev5YiG6LWiaVBob25l44CB55u05pKt56aP5Yip5aSn5pS+6YCBLi4uNOaciOmCruaUv+S8muWRmOaXpeeyvuW9qeW8gOWQr++8gQ=="
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">名片消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 41</span>

```
{
 "avatarUrl": "http://wx.qlogo.cn/mmhead/PiajxSqB***w/0",
 "corpId": 0,
 "corpName": "5b6u5L+h",
 "nickname": "eHhx",
 "realName": "",
 "shared_id": "78813*****"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">红包消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 26</span>

```
{
 "coverUrl1x": "http://dldir1.qq.com/qqcontacts/hongbao1x_20160413.png",
 "coverUrl2x": "http://dldir1.qq.com/qqcontacts/hongbao2x_20160413.png",
 "hongbaoSubtype": 3,
 "hongbaoType": 1,
 "lookWording": "来自*的红包，请进入手机版企业微信查看",
 "orderId": "1800008896202304147042530242005",
 "recvWording": "来自*的红包，请进入手机版企业微信领取",
 "ticket": "CMmt/ciXgIADEvIBQUFSeEh*FQMGN5SDNvcENsc3YlMkZCY05kZUk5byUyRjdJeTYzOXQ1VGclM0QlM0QYAg==",
 "toIdList": [
 "1688*01"
 ],
 "totalAmount": 1,
 "wishingContent": "5oGt5Zac5*Sn5Yip"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">语音消息 （下载请走 <a href="api-361694421">企微文件异步下载</a>，格式 .silk）</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 16</span>

```
{
 "fileAesKey": "7866746C766E6967706173667363786A",
 "fileId": "308183020***002040b80dfe20201000400",
 "fileMd5": "18eee3d1cc8401c059fb2bd075bb1a44",
 "fileSize": 8934,
 "voiceTime": 5
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">小程序消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 78</span>

```
{
 "appid" : "wxbb58*e267a6",
 "coverImageAeskey" : "79736C7*7A687A61796E79",
 "coverImageId" : "306a0201020******000201010201000400",
 "coverImage_md5" : "7d39f52a8f****f0713e039db4",
 "coverImageSize" : 29973,
 "desc" : "5Yi356CB5LmY6L****35Ye66KGM",
 "iconUrl" : "http://mmbiz.qpic.cn/mmbiz_png/8WyShxgibG6r7ULkN1s2B4GKsAVaMu7ibUbnoed9XsF3I72FibRiataPOOSIx9Qh0yOGu2M4oMicRGGQULGCvJF50IQ/640?wx_fmt=png&wxfrom=200",
 "pagepath" : "pages/qrcode/index.html?city_code=**&yktId=**",
 "title" : "5LmY6L2m56CB",
 "username" : "gh_3cf62f4f1d52@app"
}
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">文字图片混合消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 123</span>

```json
 {
 "subMsgData" : {
 "fileAeskey" : "333936643*3638653330323865",
 "fileId" : "30680201020461305f0201000204791f56c90*1000400",
 "fileMd5" : "2c5817af1f2b45b9*2f74",
 "fileName" : "5LyB5Lia5b6*1MzkxMzkzLnBuZw==",
 "fileSize" : 1467,
 "imageHasHd" : true
 },
 "subMsgType" : 14
 },
 {
 "subMsgData" : {
 "atList" : null,
 "content" : "NDQ="
 },
 "subMsgType" : 2
 }
]
```
</div>

<div class="qiwe-card" style="background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 236, 202, 0.22) 100%); border: 1px solid rgba(255, 241, 214, 0.65); border-radius: 10px; padding: 16px 20px; box-shadow: 0 2px 6px rgba(250, 140, 22, 0.06);; margin-bottom: 16px;"><h4 style="margin: 0 0 10px 0; font-size: 15px; color: inherit; font-weight: 600;">视频号消息</h4><span style="background: rgba(82, 196, 26, 0.15); border: 1px solid rgba(255, 213, 145, 0.45); border-radius: 4px; padding: 4px 12px; color: inherit; font-weight: 600; font-size: 13px; display: inline-block;">msgType = 141</span>

```json
{
 "channelName" : "56S+5Lqk5oKN5*rCPmkJ7nrJE=",
 "channelUrl" : "https://channels.weixin.qq.com/web/pages/feed?eid=export%2FUzFfAgtgekIEAQAAAAAAbGcKSpm5SQAAAAstQy6ubaLX4KHWvLEZgBPEmqNgX0kxabqAzNPgMIIxoXjcO3PYZnnb79Etrr24",
 "coverUrl" : "http://wxapp.tc.qq.com/251/20304/stodownload?encfilekey=oibeqyX228riaCwo9STVsGLIBn9G5YG8Znb7zEwxdcZBiczmey8uf0s0RYcKa5sasQ75PcLrwyIKHzuDPJ3svQ3Uue9SoSQPJq639RqKpWmib*WLkLjxUmN2RAianLzWToEciaDVic2BApomqBPSYQ&finder_expire_time=1682070545&finder_eid=export%2FUzFfAgtgekIEAQAAAAAAbGcKSpm5SQAAAAstQy6ubaLX4KHWvLEZgBPEmqNgX0kxabqAzNPgMIIxoXjcO3PYZnnb79Etrr24",
 "encodeData" : "CAEQACL+GwAE9OmXBAAAAQAAAAAAXdoVrf3L1a0P3JEhOWQgAAAAaeq5SzX7s7sPwaz04zCEwYwyALHFYGIb/l1etP1AtP0Q+cWXZRxa*F19seb6eqleM3L1H1kJczStWQyWdq5ez0ZWYUmKdvSkwrL6qF0VFnRumXxiCJ9ZqNXw*A",
 "headImgUrl" : "http://wx.qlogo.cn/finderhead/ver_1/k9HrnDHS*KdzG60kpz8rklSiarmaHUKuiaibDQo68hUEYPE5EtQsibiaC3R8zOejrs8gDZ0IA/0",
 "username" : "5LiK5a*566r"
}
```
</div>

<div style="background:rgba(82,196,26,0.12);border:1px solid rgba(82,196,26,0.35);border-radius:6px;padding:12px 16px;margin-top:20px;">
 <p style="margin:0;font-size:14px;color:#389E0D;"> 建议搭配阅读 <a href="doc-8947796" style="color:#389E0D;">Webhook 事件</a> 与 <a href="doc-8947798" style="color:#389E0D;">调试指南</a>，快速完成回调接入。</p>
</div>
