docs/docs/cn/integration/workflow-webhook/index.md
通过 Webhook 触发器,NocoBase 可以接收来自第三方系统的 HTTP 调用并自动触发工作流,实现与外部系统的无缝集成。
Webhook 是一种"反向 API"机制,允许外部系统在特定事件发生时主动向 NocoBase 发送数据。相比于主动轮询,Webhook 提供了更实时、更高效的集成方式。
外部问卷调查系统、报名表单、客户反馈表单等在用户提交数据后,通过 Webhook 将数据推送到 NocoBase,自动创建记录、触发后续处理流程(如发送确认邮件、分配任务等)。
第三方消息平台(如企业微信、钉钉、Slack)的事件(如新消息、@提醒、审批完成)可以通过 Webhook 触发 NocoBase 中的自动化处理流程。
当外部系统(如 CRM、ERP)的数据发生变化时,通过 Webhook 实时推送到 NocoBase,保持数据同步。
在插件管理器中找到并安装 工作流:Webhook 触发器 插件。
注意: 此插件为商业插件,需要单独购买或订阅。
根据业务需求添加工作流节点,例如:
工作流创建后,系统会生成唯一的 Webhook URL,格式通常为:
https://your-nocobase-domain.com/api/webhooks/your-workflow-key
将生成的 Webhook URL 配置到第三方系统中:
使用工具(如 Postman、cURL)测试 Webhook:
curl -X POST https://your-nocobase-domain.com/api/webhooks/your-workflow-key \
-H "Content-Type: application/json" \
-d '{"event":"test","data":{"message":"Hello NocoBase"}}'
在工作流中,可以通过变量访问 Webhook 接收的数据:
{{$context.data}}: 请求体数据{{$context.headers}}: 请求头信息{{$context.query}}: URL 查询参数{{$context.params}}: 路径参数工作流执行完成后返回结果,可配置:
立即返回确认响应,工作流在后台执行,适用于:
大多数第三方服务都支持签名机制:
// 示例: 验证 GitHub Webhook 签名
const crypto = require('crypto');
const signature = context.headers['x-hub-signature-256'];
const payload = JSON.stringify(context.data);
const secret = 'your-webhook-secret';
const expectedSignature = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
if (signature !== expectedSignature) {
throw new Error('Invalid signature');
}
确保 NocoBase 部署在 HTTPS 环境下,保护数据传输安全。
配置 IP 白名单,只允许可信来源的请求。
在工作流中添加数据验证逻辑,确保接收的数据格式正确、内容合法。
记录所有 Webhook 请求,便于追踪和排查问题。
某些第三方服务在未收到成功响应时会重试发送:
// 1. 验证数据来源
// 2. 解析表单数据
const formData = context.data;
// 3. 创建客户记录
// 4. 分配给相关负责人
// 5. 发送确认邮件给提交者
if (formData.email) {
// 发送邮件通知
}
// 1. 解析推送数据
const commits = context.data.commits;
const branch = context.data.ref.replace('refs/heads/', '');
// 2. 如果是主分支
if (branch === 'main') {
// 3. 触发部署流程
// 4. 通知团队成员
}