尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Automatisch 集成 Changedetection:创建与删除 Watch 的 Action 配置与源码解析

Automatisch 集成 Changedetection:创建与删除 Watch 的 Action 配置与源码解析 Automatisch 集成 Changedetection创建与删除 Watch 的 Action 配置与源码解析【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch本篇技术指南聚焦 Automatisch 开源自动化平台中 Changedetection 集成模块的 Action 能力围绕官方文档定义的Create a watch创建监控与Delete a watch删除监控两个操作结合后端源码逐一还原其字段配置、API 调用链与返回数据格式并顺带梳理连接认证与触发器机制。读完本文你将掌握如何在 Automatisch 中为任意网站 URL 建立/移除变更检测 Watch理解其底层如何与 Changedetection 的 REST API 交互从而在业务流程中正确编排页面变更监控。一、模块总览Changedetection 在 Automatisch 中的定位Changedetection.io 是一款自托管/云托管的网页变更检测服务可周期性地抓取指定网页并在内容发生变化时给出通知。Automatisch 将其封装为独立 app 集成模块入口定义在 packages/backend/src/apps/changedetection/index.jsexport default defineApp({ name: Changedetection, key: changedetection, iconUrl: {BASE_URL}/apps/changedetection/assets/favicon.svg, authDocUrl: {DOCS_URL}/apps/changedetection/connection, supportsConnections: true, baseUrl: https://changedetection.io, primaryColor: #3056d3, beforeRequest: [setBaseUrl, addAuthHeader], auth, actions, dynamicData, triggers, });从该定义可以确认以下关键事实连接类型supportsConnections: true所有 Action 必须先建立 Changedetection 连接Connection才能使用官方默认服务baseUrl指向https://changedetection.io但连接配置允许填写自定义Instance URL因此也兼容自部署实例请求预处理beforeRequest注册了setBaseUrl与addAuthHeader两个拦截器负责拼接 API 地址与注入密钥所有 Action/Trigger 的 HTTP 请求都会自动经过这两步能力组成actions2 个、dynamicData下拉数据源、triggers1 个。本模块共有 3 份文档页面actions.md本文主体、connection.md连接配置、triggers.md触发器分别对应用户视角的三种交互形态。二、Action 清单官方文档定义的两大操作官方文档 packages/docs/pages/apps/changedetection/actions.md 采用清单式结构frontmatter 动态组件渲染明确定义了模块提供的全部 ActionAction 名称说明Create a watchCreates a new change detection watch for a specific website.为指定网站创建新的变更检测 WatchDelete a watchDeletes a change detection watch.删除一个变更检测 Watch两个 Action 分别对应源码 create-watch/index.js 与 delete-watch/index.js。下文逐一对它们的字段、执行逻辑与返回结果做深度展开。三、Action 一Create a watch创建监控3.1 字段配置由 create-watch/index.js 可知该 Action 仅需一个必填参数配置项键key类型必填变量支持说明URLurlstring是是想要监控的网页地址URL you want to monitortype: string表示编辑器渲染为单行文本框variables: true表示该字段可以插入上游步骤的输出变量例如用表单提交的链接、邮件正文中提取的 URL 作为监控目标这使该 Action 很容易嵌入收到新数据 → 自动开始监控这类动态流程。3.2 执行逻辑与 API 调用async run($) { const url $.step.parameters.url; const body { url, }; const response await $.http.post(/v1/watch, body); $.setActionItem({ raw: response.data }); }执行流程分为三步取值从$.step.parameters.url读取用户在流程编辑器中填写的 URL请求向/v1/watch发送POST请求请求体为{ url }。注意此处路径是相对路径实际完整地址由beforeRequest中的setBaseUrl拦截器在请求发出前拼接而成输出通过$.setActionItem({ raw: response.data })将 Changedetection 返回的完整响应体作为本步骤输出供后续步骤引用。3.3 底层请求构造baseURL 与鉴权头该 Action 之所以只写相对路径即可工作是因为模块在beforeRequest中注册了两个拦截器set-base-url.jsimport { URL } from node:url; const setBaseUrl ($, requestConfig) { requestConfig.baseURL new URL(/api, $.auth.data.instanceUrl).toString(); return requestConfig; };它将baseURL动态设置为Instance URL /api。因此连接时填写的 Instance URL 形如https://changedetection.io时Action 实际请求的完整地址为https://changedetection.io/api/v1/watch。这一设计同时兼容官方云服务和用户自部署的 Changedetection 实例——只需在连接时把 Instance URL 指到自己的服务即可。add-auth-header.jsconst addAuthHeader ($, requestConfig) { requestConfig.headers[x-api-key] $.auth.data.apiKey; return requestConfig; };它为每个请求附加x-api-key头值来自连接中保存的 API Key。这是 Changedetection 官方 API 的标准鉴权方式Automatisch 在每次调用前自动注入使用者无需在 Action 中手动维护凭证。3.4 输出与后续使用response.data直接透传 Changedetection 的响应通常包含新创建 Watch 的 ID、URL、创建时间等字段。典型用法是将响应中的 Watch ID 存入数据存储datastore或作为变量传给后续步骤——例如下一步立即执行Delete a watch或让Changed watch触发器监听该 ID。四、Action 二Delete a watch删除监控4.1 字段配置由 delete-watch/index.js 可知删除操作同样只有一个必填参数配置项键key类型必填变量支持说明Watch IDwatchIdstring是是想要删除的 Watch IDWatch ID you want to deletewatchId支持变量注入因此常与 Create a watch 或Changed watch触发器配合实现监控任务完成/不再需要 → 自动删除监控的闭环。4.2 执行逻辑与 API 调用async run($) { const watchId $.step.parameters.watchId; await $.http.delete(/v1/watch/${watchId}); $.setActionItem({ raw: { result: successful, }, }); }执行流程取值读取$.step.parameters.watchId请求向/v1/watch/{watchId}发送DELETE请求同样经过 baseURL 拼接与x-api-key注入输出与 Create 不同Delete 不依赖服务端响应体而是固定输出{ result: successful }作为 Action Item。后续步骤可以据此判断删除操作已成功执行。五、配套机制连接认证与Changed watch触发器虽然本文主体是 Action但两个 Action 的实际可用性高度依赖连接认证与触发器配合这里一并给出源码层面的佐证。5.1 连接Connection配置官方文档 connection.md 给出了建立连接的标准步骤进入你的 Changedetection 管理后台点击Settings按钮切换到API标签页将页面上的API key复制到 Automatisch 的API Key字段在 Automatisch 的Instance URL字段填入你的实例地址填写一个展示用的屏幕名称Screen Name保存后即可开始使用 Changedetection 连接。对应的字段定义位于 auth/index.js共三个必填项screenNameUI 展示名称、instanceUrl实例地址、apiKeyAPI 密钥。连接建立时会触发凭证校验见 verify-credentials.jsconst verifyCredentials async ($) { await $.http.get(/v1/systeminfo); await $.auth.set({ screenName: $.auth.data.screenName, apiKey: $.auth.data.apiKey, }); };即保存连接前Automatisch 会调用一次GET /api/v1/systeminfo验证 API Key 与 Instance URL 是否有效请求同样自动携带x-api-key头校验通过后才正式存储连接。这解释了为什么文档要求必须先在 Changedetection 后台开启 API Key——没有合法密钥连接无法建立后续 Action 自然无从执行。5.2 Changed watch触发器配套能力triggers.md 定义了唯一触发器Changed watch当检测到任何变更时触发源码位于 changed-watch/index.js轮询间隔pollInterval: 15即每 15 秒轮询一次参数watchId以下拉框形式从动态数据源选择source指向listWatches执行逻辑GET /v1/watch/{watchId}获取 Watch 状态若响应非空则推送触发项并以${watchId}-${data.last_changed}作为去重internalId——当last_changed时间戳变化时才会再次触发实现仅内容变更才触发。Watch 下拉框的数据来自 dynamic-data/list-watches/index.js它调用GET /v1/watch拉取全部 Watch遍历响应对象将watchId映射为下拉选项的 value、watchData.url作为展示名称。因此在流程编辑器中用户可以直接从下拉列表挑选要监听的 Watch而无需手抄 ID。这一触发器与两个 Action 形成了完整闭环Create a watch创建监控 →Changed watch在页面变动时触发后续通知/处理 →Delete a watch在任务完成后清理监控资源。六、实战编排建议基于以上源码证据可以给出两种贴合实际场景的编排方式均为 Automatisch 流程设计器内的配置思路动态监控链路某表单/邮件触发流程 → 提取 URL 变量 → 使用Create a watch创建监控URL 字段勾选变量→ 用Changed watch触发器监听该 Watch并在内容变化时执行通知如发送邮件、推送 Slack/Telegram 消息。此链路依赖url与watchId的变量透传能力。监控生命周期管理将Delete a watch挂在业务流程的收尾步骤Watch ID引用上游步骤如 Create a watch 的输出或数据存储中的值实现自动化清理避免 Watch 无限堆积、消耗 Changedetection 配额。七、总结Automatisch 的 Changedetection 集成以官方文档定义的Create a watch、Delete a watch两个 Action 为核心分别对应POST /api/v1/watch与DELETE /api/v1/watch/{watchId}两个底层 API 调用配合连接时的/v1/systeminfo凭证校验、Changed watch轮询触发器与 Watch 下拉动态数据源构成了从创建、监听、通知到删除的完整网页变更检测自动化闭环。两个 Action 的入参均支持变量注入非常适合嵌入数据驱动 → 自动监控 → 变更通知的真实业务场景。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表