ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Automatisch 集成 PDFMonkey:Documents Generated 触发器原理与实战配置指南

Automatisch 集成 PDFMonkey:Documents Generated 触发器原理与实战配置指南 Automatisch 集成 PDFMonkeyDocuments Generated 触发器原理与实战配置指南【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch导读本文聚焦 Automatisch 开源工作流自动化平台中 PDFMonkey 应用的唯一内置触发器 ——Documents Generated文档生成完成。文章将以packages/docs/pages/apps/pdfmonkey/triggers.md文档为骨架结合packages/backend/src/apps/pdfmonkey下的完整源码实现从触发器的轮询机制、参数配置、分页处理到与动作步骤的联动方式逐一拆解帮助你理解并正确配置 PDFMonkey 触发器在文档生成完成后自动驱动下游流程。PDFMonkey 触发器在 Automatisch 中的定位在 Automatisch 中PDFMonkey 是一个支持连接supportsConnections: true的应用其能力被划分为触发器triggers、动作actions与动态数据dynamic data三类。从 应用定义文件 可以看到PDFMonkey 以https://pdfmonkey.io为站点、https://api.pdfmonkey.io/api为 API 基地址并通过beforeRequest: [addAuthHeader]在所有请求发出前注入认证头。文档 triggers.md 中登记了该应用唯一的一个触发器条目触发器名称描述Documents Generated在文档生成成功完成后触发Triggers upon the successful completion of document generation.对应的源码入口位于 triggers/index.js它导出了一个包含单个触发器的数组。也就是说Automautsch 的 PDFMonkey 触发器面只有一个能力监听 PDFMonkey 中成功生成的文档并将其作为新任务推入工作流。Documents Generated 触发器配置参数触发器的完整定义位于 documents-generated/index.js由defineTrigger辅助函数包装。它在工作流编辑器中向用户暴露两个可配置参数参数一Workspace工作区必填类型下拉框dropdown变量支持variables: true即该值可引用上游步骤的输出数据来源动态查询listWorkspaces即触发器面板中的工作区选项由 Automatisch 实时调用 PDFMonkey API 拉取作用决定触发器只关注指定工作区内生成的文档参数二Templates模板可选类型动态字段组dynamic内部是一个下拉框Template依赖关系depensOn: [parameters.workspaceId]即模板下拉框的选项依赖已选择的 Workspace选项通过listTemplates动态查询获取作用官方描述为 “Apply this trigger exclusively for particular templates.”即将触发器限定到特定 PDFMonkey 文档模板实现“只响应某几个模板的文档生成”的精细过滤需要特别注意的是从源码第 75-77 行的逻辑可以看出一个细节只有当你主动选择了至少一个模板时模板过滤才会生效if (!templateIds.length)分支判断存在一个笔误下文会结合运行逻辑详细解释。触发机制基于轮询的文档扫描Documents Generated 是一个轮询型polling触发器而不是 Webhook 型触发器。源码中通过pollInterval: 15声明其轮询间隔为15 秒即 Automatisch 每 15 秒调用一次触发器的run函数查询是否有新的成功文档。run 函数的完整流程触发器每次轮询时执行的核心逻辑如下源码第 62-99 行const workspaceId $.step.parameters.workspaceId; const templateIds $.step.parameters.templateIds; const allTemplates templateIds .map((templateId) templateId.templateId) .join(,); const params { page[size]: 100, q[workspace_id]: workspaceId, q[status]: success, };整个查询逻辑可以拆解为以下几步组装查询参数请求 PDFMonkey 的/v1/document_cards接口每次最多取 100 条记录page[size]: 100并按q[workspace_id]限定工作区、按q[status]: success只取生成成功的文档。statussuccess正是“文档生成成功完成”这一触发语义的底层实现。模板过滤若用户配置了模板列表则额外追加q[document_template_id]参数用逗号连接多个模板 ID 进行过滤。分页遍历通过do...while循环配合 PDFMonkey API 返回的meta.next_page字段进行分页拉取直到没有下一页为止保证不遗漏任何一页数据。推入触发项对每一页返回的data.document_cards数组逐条调用$.pushTriggerItem将文档对象作为原始数据推入工作流并以其document.id作为内部去重 IDinternalId——Automatisch 依靠该 ID 判断哪些文档是“新增”的从而避免同一文档被重复触发。注意一个源码细节第 75 行if (!templateIds.length)的写法在逻辑上与第 64-67 行的取模板值逻辑存在不一致此处应为if (templateIds.length)才会在配置了模板时追加过滤条件。从源码结构看这可能是实现过程中的一个笔误在实际使用中如果你配置了 Templates 过滤却发现没有生效可以结合这一判断逻辑排查或通过升级到修复版本解决。触发器背后的动态数据支撑触发器两个下拉框的选项并非静态数据而是由 PDFMonkey 应用内的动态数据dynamic data模块实时提供list-workspaces调用 PDFMonkey API 拉取当前账号下的工作区列表供 Workspace 下拉框使用。list-templates以q[workspace_id]参数请求/v1/document_template_cards接口分页拉取指定工作区下的模板并转换为{ value: template.id, name: template.identifier }结构供下拉框渲染。注意该方法在未选择 Workspace 时会直接返回空列表这印证了 Templates 参数对 Workspace 的依赖关系。配置触发器前的连接准备要让触发器能够访问 PDFMonkey API必须先建立连接。根据 connection.md 的步骤登录 PDFMonkey 控制台https://dashboard.pdfmonkey.io/login。进入个人资料中的My Account区域。复制页面上的API SECRET KEY粘贴到 Automatisch 连接的API Key字段。保存后即可在 PDFMonkey 触发器与动作中使用该连接。从源码看认证机制是基于 Bearer Token 的认证字段定义在 auth/index.js唯一字段apiKey对应 PDFMonkey 的 API 密钥。add-auth-header.js 在每次请求前自动注入Authorization: Bearer ${apiKey}请求头。verify-credentials.js 会调用当前用户接口用用户名与邮箱拼装出连接的显示名称screenName用于在 Automatisch 界面上友好展示。触发器与动作的联动场景在实际工作流中Documents Generated 触发器通常与 PDFMonkey 的动作或其他应用步骤串联。例如一个典型的自动化流程为触发Documents Generated 触发器在某个模板的文档生成成功后触发触发项携带完整的文档卡片数据含文档 ID、模板 ID、状态等。查询使用 Find document 动作将触发数据中的文档 ID 传入documentId参数调用/v1/documents/{id}获取完整文档详情。分发通过邮件、Slack 或 Google Drive 等应用的动作将生成的 PDF 推送给团队成员或归档。由于触发器返回的原始文档对象中包含了id字段且该字段同时作为触发去重 ID因此用它作为下游动作的入参是最自然、最可靠的衔接方式。对于“文档生成后立即删除草稿”之类的需求也可以直接串联 Delete document 动作其同样接收documentId参数并调用DELETE /v1/documents/{id}。源码速查文件作用triggers/documents-generated/index.jsDocuments Generated 触发器完整实现轮询、参数、分页triggers/index.js触发器注册入口dynamic-data/list-workspaces/index.js工作区动态数据源dynamic-data/list-templates/index.js模板动态数据源auth/index.js连接字段定义API Keycommon/add-auth-header.jsBearer Token 注入index.jsPDFMonkey 应用整体注册小结PDFMonkey 的 Documents Generated 触发器是 Automatisch 中一个典型的轮询型触发器案例它以 15 秒为间隔扫描指定工作区中状态为success的文档卡片支持按模板过滤并通过internalId机制保证幂等触发。理解它的参数依赖关系Workspace → Templates、轮询分页逻辑与触发去重机制是正确搭建“文档生成 → 自动处理”工作流的关键。结合本文引用的源码路径你可以进一步阅读 Automatisch 的defineTrigger辅助函数define-trigger.js与pushTriggerItem的底层实现掌握更通用的触发器开发模型。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表