Skip to main content
本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版

什么是触发器插件?

触发器是 Dify v1.10.0 版本中引入的一种新型起始节点。与代码、工具或知识库检索等功能节点不同,触发器 将第三方事件转换为 Dify 可以识别和处理的输入格式
触发器插件介绍
例如,如果你在 Gmail 中将 Dify 配置为 new email 事件接收器,每当收到新邮件时,Gmail 会自动向 Dify 发送一个事件,该事件可用于触发工作流。然而:
  • Gmail 的原始事件格式与 Dify 的输入格式不兼容。
  • 全球有数千个平台,每个平台都有其独特的事件格式。
触发器插件填补了这一空缺:它们定义和解析来自不同平台的事件,并将其统一为 Dify 可以接受的输入格式。

技术概述

Dify 触发器基于 webhook 构建,这是一种在网络上被广泛采用的机制。GitHub、Slack、Linear 等主流 SaaS 平台都支持 webhook,并提供完善的文档。 Webhook 是一种基于 HTTP 的事件分发器:一旦配置了事件接收地址,平台会在订阅的事件发生时自动将事件数据推送到该地址。 为了以统一的方式处理来自不同平台的 webhook 事件,Dify 定义了两个核心概念:订阅(Subscription)事件(Event)
  • 订阅(Subscription):在第三方平台的开发者控制台中将 Dify 的网络地址注册为目标服务器的配置。
  • 事件(Event):一个平台可能发送多种类型的事件(例如收到邮件删除邮件标记邮件为已读),所有这些都会推送到注册的地址。触发器插件可以处理多种事件类型,每个事件对应 Dify 工作流中的一个插件触发器节点。

插件开发

触发器插件的开发流程与其他插件类型(工具、数据源、模型等)相同。 使用 dify plugin init 命令创建开发模板。生成的文件结构遵循标准的插件格式规范。
  • manifest.yaml:描述插件的基本元数据。
  • provider 目录:包含提供者的元数据、创建订阅的代码,以及接收 webhook 请求后对事件进行分类的代码。
  • events 目录:包含事件处理和过滤的代码,支持在节点级别进行本地事件过滤。你可以创建子目录来分组相关事件。
对于触发器插件,将 Dify 最低版本设置为 1.10.0,SDK 版本设置为 >= 0.6.0
以下各节以 GitHub 为例,逐步介绍开发流程。

创建订阅

主流 SaaS 平台的 Webhook 配置方式差异很大:
  • 一些平台(如 GitHub)支持基于 API 的 webhook 配置。对于这些平台,一旦完成 OAuth 认证,Dify 可以自动设置 webhook。
  • 其他平台(如 Notion)不提供 webhook 配置 API,可能需要用户手动进行认证。
为了适应这些差异,我们将订阅过程分为两部分:**订阅构造器(Subscription Constructor)订阅(Subscription)**本身。 对于像 Notion 这样的平台,创建订阅需要用户手动复制 Dify 提供的回调 URL,并将其粘贴到他们的 Notion 工作区以完成 webhook 设置。这个过程对应 Dify 界面中的粘贴 URL 创建新订阅选项。
粘贴 URL 创建新订阅
要支持通过手动粘贴 URL 创建订阅,需修改两个文件:github.yamlgithub.py
GitHub webhook 使用加密机制,因此需要一个密钥来解密和验证传入的请求。在 github.yaml 中声明 webhook_secret

事件处理

一旦提取了事件,相应的实现必须过滤原始 HTTP 请求并将其转换为 Dify 工作流可以接受的输入格式。 以 Issue 事件为例,在 events/issues/issues.yaml 中定义事件,在 events/issues/issues.py 中定义其实现。在 issues.yamloutput_schema 部分定义事件的输出,它遵循与工具插件相同的 JSON Schema 规范。

事件过滤

要过滤掉某些事件(例如,只关注具有特定标签的 Issue 事件),在 issues.yaml 的事件定义中添加 parameters。然后,在 _on_event 方法中,对不符合配置条件的事件抛出 EventIgnoreError 异常。

通过 OAuth 或 API 密钥创建订阅

要启用通过 OAuth 或 API 密钥自动创建订阅,需修改 github.yamlgithub.py 文件。
github.yaml 中,添加以下字段。
subscription_constructor 是 Dify 抽象出来的一个概念,用于定义如何构造订阅。它包含以下字段:
  • parameters(可选):定义创建订阅所需的参数,例如要订阅的事件类型或目标 GitHub 仓库。
  • credentials_schema(可选):声明使用 API 密钥或访问令牌创建订阅所需的凭据,例如 GitHub 的 access_tokens
  • oauth_schema(可选):通过 OAuth 创建订阅时需要。有关定义方法的详细信息,参见 为你的工具插件添加 OAuth 支持

修改完这两个文件后,你将在 Dify 界面中看到使用 API 密钥创建选项。 同一个 Constructor 类也支持通过 OAuth 自动创建订阅:在 subscription_constructor 下添加 oauth_schema 字段即可启用 OAuth 认证。
OAuth 和 API 密钥选项

深入探索

触发器插件开发中核心类的接口定义如下。

Trigger

TriggerSubscriptionConstructor

Event

Last modified on June 24, 2026