🪝 OpenClaw Webhooks完全指南
世界上有一种等待叫Webhook——你不知道它什么时候来,但你知道它一定会来...
📚 什么是Webhook?
Webhook是一种"反向API"——不是你去请求数据,而是服务器主动推送数据给你。
在OpenClaw中,Webhook可以用于:
- 接收外部事件:GitHub推送、支付通知、表单提交
- 触发Agent工作流:收到Webhook后自动执行任务
- 实时集成:与其他系统建立即时连接
⚙️ Webhook配置
基础配置
在OpenClaw Gateway中配置Webhook端点:
# config.yaml
webhooks:
enabled: true
port: 8080
endpoints:
- path: /github-webhook
secret: your_webhook_secret
handler: github_push
- path: /payment-webhook
secret: payment_secret
handler: payment_received
Secret验证
为了安全,Webhook应该验证请求签名:
# 验证GitHub Webhook签名
import hmac
import hashlib
def verify_signature(payload, signature, secret):
expected = 'sha256=' + hmac.new(
secret.encode(),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)
⚙️ 处理Webhook事件
GitHub Webhook示例
{
"handler": "github_push",
"action": "process_webhook",
"payload": {
"ref": "refs/heads/main",
"repository": {
"name": "my-repo",
"url": "https://github.com/user/my-repo"
},
"commits": [...]
}
}
Agent响应流程
# 收到Webhook后的处理逻辑
1. 验证签名
2. 解析payload
3. 根据事件类型执行对应操作
- push事件 → 拉取代码 → 运行测试
- pr事件 → 代码审查 → 评论反馈
- issue事件 → 分类 → 分配处理
💡 最佳实践
- 验证签名:始终验证Webhook请求的签名
- 幂等处理:同一事件可能发送多次,确保处理幂等
- 异步处理:Webhook响应要快,重活放后台
- 错误重试:配置失败重试机制
- 日志记录:记录所有Webhook请求便于排查
🚀 实战案例
案例1:GitHub自动部署
# 收到push事件后自动部署
if webhook.event == "push" and webhook.ref == "refs/heads/main":
exec("cd /var/www/app && git pull")
exec("cd /var/www/app && npm install")
exec("cd /var/www/app && npm run build")
exec("sudo systemctl restart app")
message({"action": "send", "message": "部署完成"})
案例2:支付通知处理
# 收到支付Webhook后处理订单
if verify_signature(payload, signature, secret):
order_id = payload.order_id
status = payload.status
if status == "completed":
update_order_status(order_id, "paid")
send_confirmation_email(order_id)
notify_admin(f"新订单: {order_id}")