资讯动态

Automatisch 中的 Pipedrive 触发器:四种轮询型触发器的原理与配置指南

发布时间:2026/9/15 10:26:41 来源:尧图企业网站定制
Automatisch 中的 Pipedrive 触发器四种轮询型触发器的原理与配置指南【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatischAutomatisch 作为开源 Zapier 替代方案通过内置的 Pipedrive 应用支持 CRM 数据的事件驱动自动化。本文以 Pipedrive 触发器文档 为核心系统讲解 Automatisch 中 Pipedrive 提供的四种触发器新活动、新交易、新线索、新备注的触发时机、轮询机制、去重原理与配置步骤并结合后端源码剖析其底层实现帮助你在实际工作流中正确选择与使用这些触发器。Pipedrive 触发器总览在 Automatisch 中Pipedrive 应用共提供四种触发器全部用于响应 Pipedrive 中新创建的数据实体。官方文档 triggers.md 的定义如下触发器名称触发时机触发定义 keyNew activities创建新活动Activity时触发newActivitiesNew deals创建新交易Deal时触发newDealsNew leads创建新线索Lead时触发newLeadsNew notes创建新备注Note时触发newNotes这些触发器均不需要任何参数配置源码中arguments: []即插即用适合作为自动化流程的起点步骤Trigger Step。例如当销售创建新交易时自动在 Slack 中通知团队成员当 Pipedrive 中出现新线索时自动在 Google Sheets 中追加一行记录当新增活动时自动同步到 Google Calendar。四种触发器的底层实现四种触发器的源码结构完全一致均位于 packages/backend/src/apps/pipedrive/triggers由 triggers/index.js 统一导出new-activities/index.js —— 轮询 Pipedrive/v1/activities接口new-deals/index.js —— 轮询 Pipedrive/v1/deals接口new-leads/index.js —— 轮询 Pipedrive/v1/leads接口new-notes/index.js —— 轮询 Pipedrive/v1/notes接口。以 New deals 为例其核心实现如下摘自 new-deals/index.jsexport default defineTrigger({ name: New deals, key: newDeals, pollInterval: 15, description: Triggers when a new deal is created., arguments: [], async run($) { const params { start: 0, limit: 100, sort: add_time DESC, }; do { const { data } await $.http.get(/v1/deals, { params }); if (!data?.data?.length) { return; } params.start data.additional_data?.pagination?.next_start; for (const deal of data.data) { $.pushTriggerItem({ raw: deal, meta: { internalId: deal.id.toString(), }, }); } } while (params.start); }, });这段代码体现了 Pipedrive 触发器的四个关键设计轮询间隔pollInterval: 15表示每 15 分钟向 Pipedrive API 发起一次查询分页拉取每页取 100 条记录通过additional_data.pagination.next_start自动翻页直到取完所有新增数据时间排序sort: add_time DESC保证新创建的对象最先被取到幂等去重以对象 ID 作为internalId交由引擎层去重避免重复执行。四种触发器的端点与差异触发器轮询接口数据字段New activitiesGET /v1/activitiesdata.data活动对象数组New dealsGET /v1/dealsdata.data交易对象数组New leadsGET /v1/leadsdata.data线索对象数组New notesGET /v1/notesdata.data备注对象数组从源码结构看四种触发器除接口路径与数据字段名不同外分页、排序、去重逻辑完全一致属于典型的模板化轮询触发器实现。触发器如何被引擎调度与执行定义与校验defineTrigger每个触发器文件都通过 define-trigger.js 工厂函数定义。该函数会对触发定义做合法性校验const isWebhookOrPoll triggerDefinition.pollInterval || triggerDefinition.type webhook; if (!haveValidTriggerType) { throw new Error( Trigger must have a poll interval or be a webhook for ${triggerDefinition.key} ); }即一个合法触发器必须要么配置pollInterval轮询型要么声明type: webhookWebhook 型否则直接抛错。Pipedrive 的四种触发器均采用pollInterval: 15属于轮询型触发器。轮询数据如何进入流程pushTriggerItem 与去重触发器调用$.pushTriggerItem({ raw, meta })将抓取到的对象推入触发输出。该能力由 global-variable.js 提供其去重逻辑值得关注pushTriggerItem: (triggerItem) { if ( isAlreadyProcessed(triggerItem.meta.internalId) !$.execution.testRun ) { // 正式执行时跳过已处理过的条目避免重复触发 throw new AlreadyProcessedError(); } $.triggerOutput.data.push(triggerItem); const isWebhookApp app.key webhook; const isFormsApp app.key forms; if ($.execution.testRun !isWebhookApp !isFormsApp) { // 测试运行只需一条数据即可收到一条即提前退出 throw new EarlyExitError(); } },引擎会加载流程最近 2000 个internalId见 global-variable.js用于查重。因此正式执行时重复抓到的活动/交易/线索/备注会被AlreadyProcessedError跳过不会造成下游步骤的重复执行测试运行Test Run时只需收到第一条数据就会触发EarlyExitError提前结束保证测试快速反馈。这解释了为什么即使 Pipedrive 端数据在轮询周期内被再次返回流程也只会对每一条新记录执行一次。触发器的网络与鉴权链路Pipedrive 触发器的 API 调用并非裸请求而是经过应用级beforeRequest钩子统一处理。见 pipedrive/index.jsbeforeRequest: [setBaseUrl, addAuthHeader],这两个钩子分别完成两件事动态 Base URLset-base-url.js从连接数据中读取apiDomain将请求基础地址指向用户自己的 Pipedrive 子域名https://apiDomain/api附加鉴权头add-auth-header.js从$.auth.data中读取tokenType与accessToken写入Authorization请求头格式如Bearer accessToken。也就是说四种触发器默认使用「Bearer Token 用户专属 API 域名」的方式访问 Pipedrive REST API无需在每个触发器内单独处理鉴权细节。前置条件完成 Pipedrive 连接配置使用上述任何触发器前必须先在工作区中创建 Pipedrive 连接。官方文档 connection.md 给出了完整步骤核心要点如下前往 Pipedrive 开发者页面注册Sandbox 账号并创建应用选择Create private app将 Automatisch 提供的OAuth Redirect URL格式为{WEB_APP_URL}/app/pipedrive/connections/add填入应用的Callback URL字段在OAuth Access scopes中勾选全部选项的完全访问权限将应用生成的Client ID与Client Secret分别填入 Automatisch 连接的对应字段保存后即可在流程中使用 Pipedrive 触发器。连接所需的字段定义见 auth/index.js包括只读展示的oAuthRedirectUrl、必填的clientId与clientSecret其余鉴权流程生成授权 URL、校验凭据、刷新令牌、保持验证由 auth 目录 下的generateAuthUrl.js、verify-credentials.js、refresh-token.js、is-still-verified.js协作完成。在流程中配置 Pipedrive 触发器在 Automatisch 界面中创建流程时在流程编辑器中选择 Pipedrive 作为应用步骤类型选择Trigger从「New activities / New deals / New leads / New notes」中按需选择一个触发器关联已创建的 Pipedrive 连接无连接时先按上文步骤完成 OAuth后续添加任意 Action 步骤如 Slack 通知、Google Sheets 写入等组成完整自动化保存并启用流程等待轮询按每 15 分钟一次的节奏自动执行。需要说明的是由于触发器为轮询型触发存在最长 15 分钟左右的延迟并非实时推送若业务对实时性要求更高可考虑 Automatisch 中支持 Webhook 的应用如 webhook结合 Pipedrive 自身的回调能力实现近似实时触发。常见问题与排查建议触发器一直不触发先确认连接状态是否正常同时注意轮询间隔为 15 分钟新建数据后需要等待下一个轮询周期。担心重复执行无需担心引擎以对象 ID 作为internalId维护了最近 2000 条记录的去重集合重复数据会被自动跳过。想扩大抓取范围当前每页limit: 100且自动翻页到全部数据如需调整可修改 new-deals/index.js 等触发器源码中的params注意这属于对当前仓库的自定义改造。接口地址不对确认连接中保存的apiDomain正确setBaseUrl钩子会据此拼接请求地址见 set-base-url.js。小结Pipedrive 的四种触发器——新活动、新交易、新线索、新备注——是 Automatisch 中 CRM 自动化的标准入口。它们以 15 分钟为间隔轮询 Pipedrive API通过分页拉取、按创建时间倒序、基于对象 ID 的去重机制将新增数据可靠地送入自动化流程底层由defineTrigger校验、beforeRequest鉴权钩子与引擎级pushTriggerItem去重共同支撑。理解这些实现细节可以帮助你更准确地评估触发延迟、排查不触发问题并在现有机制之上构建更复杂的销售自动化场景。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价