Appearance
回调事件索引
先按 messageType 把推送分到不同的处理函数,再按具体字段处理。完整字段和示例在回调字典(优化版)。
事件分类
messageType 是 5 位数字字符串,看第一位就能分到四类;第二位是 5 的,是好友或群的变化,不是聊天消息。
| 第一位 | 分类 | 编号举例 | 详细字段 |
|---|---|---|---|
0、3 | 通知 | 00000 测试推送、30000 离线、30001 好友请求 | 通知类事件 |
6 | 私聊 | 60001 文本、60002 图片;65xxx 好友变化 | 私聊事件 |
8 | 群聊 | 80001 文本、80002 图片;85xxx 群变化 | 群聊事件 |
9 | 公众号 | 90001 文章、95001 取关 | 公众号事件 |
分发示例
js
// event 是推送的 JSON 正文
function handleWebhook(event) {
const messageType = String(event.messageType ?? '') // 控制台的测试推送可能没有这个字段
const data = event.data
switch (messageType[0]) {
case '0':
case '3':
return handleNotification(messageType, data) // 00000 是测试推送,确认收到即可
case '6':
return messageType[1] === '5' ? handleFriendChange(messageType, data) : handlePrivateMessage(messageType, data)
case '8':
return messageType[1] === '5' ? handleGroupChange(messageType, data) : handleGroupMessage(messageType, data)
case '9':
return handleOfficialAccount(messageType, data)
default:
console.warn('未识别的 messageType', messageType) // 记日志,照常返回 2xx
}
}60999、80999 是「其他消息」,收到不认识的私聊或群聊消息时用它兜底。每种类型的字段见回调字典(优化版)。
通用处理规则
- 先校验 JSON 结构,再读取业务字段。
- 未识别类型记录脱敏日志并返回成功,避免反复重试阻塞主链路。
- 去重:控制台配置的地址按请求头
X-Eyun-Event-Id,消息按账号与newMsgId。 - 耗时处理放入队列,保存成功后立即返回 2xx;用兼容接口设置的地址,推送超时为 6 秒。