Skip to content

回调事件索引 ​

先按 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 秒。