如何使用 Automatisch 内置的 Webhooks 触发器接收外部请求并执行 Flow?
【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch
如果你的外部系统(表单提交、其他服务的回调等)需要在事件发生时通知 Automatisch 去跑一段自动化,可以不用任何第三方凭证:Automatisch 内置了 Webhooks 应用,它的Catch raw webhook触发器会在收到 HTTP 请求时启动 Flow。本文以"外部请求进来 → Flow 执行 → 返回响应"为一条完整路径,覆盖创建 Flow、选择同步/异步模式、获取并测试 webhook URL、发布与验证的全过程。
前提与工作方式
- Webhooks 是随 Automatisch 内置的应用,不需要与任何外部服务认证即可运行,因此建 Flow 时无需先创建 Connection。
- 触发器Catch raw webhook支持GET、POST、PUT、PATCH四种请求方法,webhook URL 在编辑器的测试子步骤(test substep)中给出(见 触发器文档 与 连接文档)。
- 该触发器有一个必填参数Wait until flow is done(
Yes/No,定义在 catch-raw-webhook/index.js),它决定请求的返回行为:- Yes(同步):Automatisch 会等 Flow 执行完,用 Flow 中配置的响应状态码、请求头和 Body 直接答复外部请求;
- No(异步):Flow 在后台执行,请求立即以
204结束、不带响应体(对应 异步处理器 固定返回204的逻辑)。
- 触发器把请求的
headers、body、query作为原始数据(raw)推入 Flow,供后续步骤引用。
第一步:创建 Flow 并配置 Webhook 触发器
- 进入Flows页面,点击Create flow,得到一个空的 trigger 和 action 步骤(流程创建指南)。
- 在触发步骤(第 1 步)的
Choose an app下拉中选择Webhook。 - 事件选择Catch raw webhook,点击Continue。
- 在Wait until flow is done下拉中选择
Yes或No,再点击Continue。选择依据只有一条:外部请求方是否需要拿到 Flow 执行结果的响应——需要选Yes,只需要"请求到了就行"选No。 - 完成后进入测试子步骤,页面上会出现
webhookUrl输入框,里面就是当前 Flow 的 webhook URL。异步模式下该 URL 不包含sync字样,同步模式则包含(这一点在 e2e 测试夹具 中作为断言被明确区分)。
第二步:用真实请求测试触发器
在测试子步骤中,直接向拿到的 webhook URL 发一个请求即可,方法限 GET/POST/PUT/PATCH。例如:
curl -i -X POST "<你的webhookUrl>" \ -H "Content-Type: application/json" \ -d '{"event": "order.created", "orderId": 1001}'把<你的webhookUrl>替换成测试子步骤中实际显示的 URL。在 Flow 尚未发布(test run)状态下,测试请求会以204返回(见 e2e 测试 中对axios.get(webhookUrl)的断言)。
随后点击Test & Continue:测试输出区会显示本次请求进入 Flow 的数据,确认请求已被 Flow 捕获后点Continue进入 action 步骤。
第三步(可选):添加 Respond with 动作定义响应
只有在Wait until flow is done = Yes时,定义响应才有意义。在第 2 步选择Webhook应用、事件选择Respond with(动作定义),配置三个参数:
- Status code:字符串,必填,默认值
200; - Headers:可选,按需添加
Key/Value请求头,支持变量; - Body:必填,响应体内容,支持引用前面步骤的变量。
e2e 测试中的示例配置是statusCode = 200、body = response from webhook,可照此填写自己的值。配置完成后点击Test & Continue验证,再点Continue。
第四步:发布 Flow
点击Publish发布。发布后 Flow 会在触发事件发生时自动执行;已发布的 Flow 不能直接修改,需要改动时先Unpublish再编辑(见 流程创建指南 的 Publish 章节)。
验证:同步与异步的返回差异
发布后对 webhook URL 再发一次请求,两种模式的返回是可直接核对的判断标准(与 webhook.spec.js 中的断言一致):
| 模式 | 请求 | 返回 |
|---|---|---|
Wait until flow is done = Yes | GET <webhookUrl> | 状态码200,响应体为 Respond with 中配置的 Body(测试示例中为response from webhook) |
Wait until flow is done = No | GET <webhookUrl> | 状态码204,响应体为空 |
同步模式返回的内容由 同步处理器 写入:状态码、请求头和 Body 全部取自 Flow 执行结果;如果 Flow 中没有有效的 Respond with 动作,就按异步行为处理(固定204、空响应体,逻辑见 异步处理器)。
限制与边界
- 只支持 GET、POST、PUT、PATCH;webhook URL 必须在编辑器测试子步骤中获取,不要手工拼接。
- 触发器拿到的是原始请求数据(
raw.headers/raw.body/raw.query),它本身不做业务解析;需要过滤或转换时,在后续 action 步骤中处理。 - Flow 发布后不可编辑,改配置前必须先 Unpublish。
- 调试请求详情时,后端会以 debug 级别记录
Handling incoming webhook request at <originalUrl>及请求载荷(见两个 webhook 处理器中的logger.debug调用),可用于确认请求是否到达 Automatisch。
完成发布并通过上面的状态码核对后,这个 Flow 就可以长期作为外部系统的回调入口使用;后续要调整响应结构,只需 Unpublish 后修改 Respond with 参数再重新发布。
【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考