深度

OpenClaw Webhook 完全指南:接收任意平台事件触发 AI 自动化工作流

OpenClaw Webhook 集成完整教程:配置 Webhook 端点接收外部事件、签名验证防伪造、GitHub/Stripe/自定义系统 Webhook 处理、事件解析与路由、基于 Webhook 的自动化工作流设计,以及内网穿透(ngrok/Cloudflare Tunnel)本地调试方案。

2026/3/164分钟 阅读ClaudeEagle

Webhook 是 OpenClaw 最强大的集成方式之一——任何能发 HTTP 请求的系统, 都可以触发你的 AI 助手执行任务。GitHub Push、Stripe 支付、监控告警…… 一个 Webhook 端点,连接所有系统。

核心原理

外部系统(GitHub/Stripe/任意服务) | | HTTP POST(携带事件数据) v OpenClaw Webhook 端点 | | 验证签名 + 解析事件 v AI 处理(Claude 分析事件内容) | | 执行动作(发通知/调用API/更新数据) v Telegram/Slack/邮件通知

基础配置

json
// ~/.openclaw/config.json
{
  "webhooks": {
    "enabled": true,
    "port": 3001,
    "basePath": "/webhook",
    "endpoints": [
      {
        "path": "/github",
        "secret": "你设置的github-webhook-secret",
        "handler": "github"
      },
      {
        "path": "/stripe",
        "secret": "whsec_你的stripe-webhook-secret",
        "handler": "stripe"
      },
      {
        "path": "/custom",
        "token": "你自定义的bearer-token",
        "handler": "custom"
      }
    ]
  }
}

启动后,Webhook 端点地址:

  • https://你的域名/webhook/github
  • https://你的域名/webhook/stripe
  • https://你的域名/webhook/custom

场景 1:GitHub Webhook

配置

GitHub 仓库 Settings → Webhooks → Add webhook:

  • Payload URL: https://你的域名/webhook/github
  • Content type: application/json
  • Secret: 与 config 里一致
  • 事件: push, pull_request, issues, workflow_run

SOUL.md 处理逻辑

markdown
## GitHub Webhook 处理规则

### push 事件
- 推送到 main 分支:发 Telegram 通知(推送人 + commit 摘要)
- 推送到 release/* 分支:发告警到 #releases 频道

### pull_request 事件
- opened:AI 分析 diff,生成代码审查要点,发到 Telegram
- merged:汇总本次 PR 的改动,更新项目 CHANGELOG 草稿

### workflow_run 事件
- failure:立刻发告警,包含失败的 step 和错误摘要
- success(main 分支):发部署成功通知

场景 2:Stripe 支付 Webhook

markdown
## Stripe Webhook 处理规则

### payment_intent.succeeded
提取:金额、用户邮箱、订单ID
动作:
1. 更新 Notion 订单数据库状态为「已付款」
2. 发 Telegram 通知:新订单 $金额(用户邮箱)
3. 触发发货流程(POST 到内部 API)

### payment_intent.payment_failed
提取:失败原因、用户邮箱
动作:
1. 发 Telegram 告警(需要人工处理)
2. 记录到错误日志数据库

### customer.subscription.deleted
动作:
1. 发 Telegram 通知(哪个用户取消了,订阅了多久)
2. 标记用户状态为「已取消」

场景 3:自定义系统 Webhook

任何内部系统都可以向 OpenClaw 发事件:

bash
# 服务器监控系统发告警
curl -X POST https://你的openclaw域名/webhook/custom   -H "Authorization: Bearer 你的token"   -H "Content-Type: application/json"   -d '{
    "event": "server_alert",
    "severity": "critical",
    "server": "prod-web-01",
    "metric": "cpu_usage",
    "value": 95.2,
    "threshold": 80
  }'
markdown
## 自定义 Webhook 处理规则

### server_alert 事件
- severity=critical:立刻发 Telegram 告警 + @oncall
- severity=warning:记录日志,每小时汇总一次
- 连续 3 次同一告警:升级为 critical

### deploy_complete 事件
- 发部署通知:版本号、环境、耗时、操作人

### backup_failed 事件
- 立刻发告警,标记需要手动干预

本地调试(内网穿透)

方案 1:ngrok

bash
# 安装 ngrok
brew install ngrok

# 暴露本地 3001 端口
ngrok http 3001

# 获得临时公网 URL:https://xxxx.ngrok.io
# 在 GitHub/Stripe 填这个 URL + /webhook/github

方案 2:Cloudflare Tunnel(免费,更稳定)

bash
# 安装 cloudflared
brew install cloudflared

# 创建免费隧道
cloudflared tunnel --url http://localhost:3001

# 获得固定 URL:https://xxx.trycloudflare.com

Webhook 签名验证原理

OpenClaw 自动验证签名,防止伪造请求:

python
# GitHub 签名验证示例(OpenClaw 内部处理,无需手动写)
import hmac, hashlib

def verify_github_signature(payload: bytes, signature: str, secret: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), payload, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

只有签名匹配的请求才会被处理,其余返回 401。

常见问题

Q:Webhook 没有触发 检查:1) URL 是否正确;2) 签名 Secret 是否一致;3) 查看 openclaw logs 是否有收到请求

Q:本地开发没有公网 IP 使用 ngrok 或 Cloudflare Tunnel 暴露本地端口,见上方教程

Q:怎么重放历史 Webhook Stripe 控制台可以重发;GitHub 在 Webhook 设置页面有 Recent Deliveries,可重发


来源:OpenClaw 官方文档

相关文章推荐

深度OpenClaw Hooks 自动化进阶:消息前后的智能拦截、转换与触发机制OpenClaw Hooks(钩子)自动化系统进阶教程:Hooks 的触发时机(before-send/after-receive/on-tool-call)、用 Hooks 拦截消息并修改内容(自动翻译/过滤/格式化)、基于条件的 Hook 触发(渠道过滤/关键词匹配)、Hook 中调用外部 API(Notion 记录/Bark 通知/监控告警)、exec 工具二次确认 Hook,以及 Hooks 与 SOUL.md 和 Standing Orders 的优先级关系详解。2026/3/26深度OpenClaw API 开发指南:用 REST API 和 Webhook 把 AI 助手集成到任意系统OpenClaw API 完整开发文档:Gateway REST API 端点说明、会话管理 API、消息发送 API、Webhook 接收外部事件、MCP(Model Context Protocol)服务器集成、API 认证方式、限流配置,以及将 OpenClaw AI 能力嵌入自有应用的完整代码示例。2026/3/17深度OpenClaw Session ID 生命周期规则:什么时候会开新会话,什么时候延续旧会话详解 OpenClaw sessionKey 与 sessionId 的区别,以及触发新会话的四种情形:手动重置、每日重置、空闲过期、父级分叉保护,附 Session Store 字段说明和 Cron 会话保留策略。2026/8/13深度OpenClaw 计费故障处理机制:余额不足时系统怎么办,Backoff 退避策略详解详解 OpenClaw 账单/额度类故障处理机制:与普通限流超时不同,计费故障采用更长的指数退避(5小时起步翻倍至24小时封顶)并标记禁用,附三类故障处理力度对比表和多账号部署实战建议。2026/8/13深度OpenClaw Model Failover 完全解析:Auth Profile 怎么轮换,为什么你的 OAuth 账号会"莫名其妙"被切走详解 OpenClaw Model Failover 机制:Auth Profile 轮换顺序、Session Stickiness 会话粘性、指数退避冷却规则,解释多账号场景下 OAuth 与 API Key 切换的常见困惑及固定账号的配置方法。2026/8/13深度OpenClaw Context Engine 完全指南:四个生命周期钩子如何决定模型看到什么详解 OpenClaw 可插拔上下文引擎架构:Ingest/Assemble/Compact/After turn 四个生命周期钩子的工作原理,systemPromptAddition 动态注入机制,以及如何安装和配置自定义 Context Engine 插件。2026/8/12