GEO webhook 怎么配置?

GEO webhook 的价值

Webhook 允许 GEO 体检仪在特定事件发生时主动通知你的系统,实现实时集成,参考GEO API

  • 实时性:事件发生即刻推送,无需轮询
  • 自动化:触发内部系统自动化流程
  • 低延迟:相比定时拉取,延迟更低
  • 省资源:无需持续轮询 API

webhook 支持的事件类型

事件触发时机用途
diagnose.completed诊断完成自动拉取报告/通知团队
alert.mention_drop提及率下降预警触发应急优化流程
alert.competitor_overtake竞品反超预警通知管理层
alert.negative_sentiment负面描述预警触发危机公关
report.monthly_ready月度报告生成自动分发报告

webhook 配置流程(年度套餐)

Step 1: 设置回调 URL

  • 在你的服务端准备一个可接收 POST 请求的 URL
  • URL 必须为 HTTPS(生产环境)
  • 确保 URL 可公网访问

Step 2: 选择触发事件

根据需求选择要订阅的事件类型,建议:

  • 诊断完成(必选)
  • 所有预警事件(必选)
  • 月度报告就绪(推荐)

Step 3: 配置签名验证

为防止伪造请求,GEO 体检仪对 webhook 请求签名:

  • 每个 webhook 配置有一个 secret
  • 请求头含 X-GEO-Signature,值为 HMAC-SHA256 签名
  • 你的服务端应验证签名,确认请求来自 GEO 体检仪

Step 4: 测试 webhook

配置完成后,点击「发送测试事件」验证:

  1. GEO 体检仪发送测试事件到你的 URL
  2. 你的服务端应返回 200 状态码
  3. 确认能正确解析请求体

webhook 请求格式

POST <your_url>
Content-Type: application/json
X-GEO-Signature: <HMAC-SHA256 signature>

{
  "event": "diagnose.completed",
  "timestamp": "2026-07-01T10:30:00Z",
  "data": {
    "diagnose_id": "diag_xxx",
    "brand": "品牌名",
    "overall_score": 78,
    "report_url": "https://..."
  }
}

webhook 处理的最佳实践

1. 及时响应

收到 webhook 后立即返回 200,耗时操作异步处理:

// Node.js 示例
app.post('/geo-webhook', (req, res) => {
  // 验证签名
  if (!verifySignature(req)) return res.status(401).send();
  // 立即返回 200
  res.status(200).send();
  // 异步处理
  processEvent(req.body);
});

2. 幂等处理

同一事件可能推送多次,你的系统应幂等处理:

  • 用 event_id 去重
  • 已处理的事件直接返回 200

3. 错误重试

GEO 体检仪的重试策略:

  • 首次推送失败后,重试 3 次(间隔 1/5/30 分钟)
  • 连续失败 3 次后暂停推送,需手动恢复
  • 你的服务端恢复后可手动触发重试

webhook vs API 轮询

方式实时性资源消耗实现复杂度
Webhook实时低(被动接收)中(需服务端接收)
API 轮询延迟(轮询间隔)高(持续请求)低(主动请求)

建议:关键事件用 webhook,历史数据用 API 轮询。参考GEO 自动化