トリガープラグインとは?
トリガー(Trigger) は、Dify v1.10.0で導入された新しいタイプの開始ノードです。Code、Tool、Knowledge Retrievalなどの機能的なノードとは異なり、トリガーの目的は、サードパーティのイベントをDifyが認識・処理できる入力形式に変換することです。new emailイベントの受信先としてDifyを設定すると、新しいメールを受信するたびに、Gmailはワークフローを起動するためのイベントをDifyに自動的に送信します。しかし、これには課題があります。
- Gmailの元のイベント形式は、Difyの入力形式と互換性がありません。
- 世界中には何千ものプラットフォームが存在し、それぞれが独自のイベント形式を持っています。
技術概要
Difyのトリガーは、Webで広く採用されているメカニズムであるWebhookに基づいて実装されています。多くの主流SaaSプラットフォーム(GitHub、Slack、Linearなど)は、包括的な開発者向けドキュメントと共にWebhookをサポートしています。 Webhookは、HTTPベースのイベントディスパッチャと理解することができます。イベント受信アドレスを設定すると、これらのSaaSプラットフォームは、登録したイベントが発生するたびに、ターゲットサーバーにイベントデータを自動的にプッシュします。 異なるプラットフォームからのWebhookイベントを統一的に処理するために、Difyはサブスクリプション (Subscription) と イベント (Event) という2つのコアコンセプトを定義しています。- サブスクリプション: Webhookベースのイベントディスパッチでは、サードパーティプラットフォームの開発者コンソールでDifyのネットワークアドレスをターゲットサーバーとして登録する必要があります。Difyでは、この設定プロセスをサブスクリプションと呼びます。
- イベント: プラットフォームは、メール受信、メール削除、メール既読など、複数のタイプのイベントを送信することがあり、これらはすべて登録されたアドレスにプッシュされます。トリガープラグインは複数のイベントタイプを処理でき、各イベントがDifyワークフロー内のプラグイントリガーノードに対応します。
プラグイン開発
トリガープラグインの開発プロセスは、他のプラグインタイプ(Tool、Data Source、Modelなど)と一貫しています。dify plugin initコマンドを使用して開発テンプレートを作成できます。生成されるファイル構造は、標準のプラグイン形式仕様に準拠しています。
-
manifest.yaml: プラグインの基本的なメタデータを記述します。 -
providerディレクトリ: プロバイダーのメタデータ、購読を作成するためのコード、Webhookリクエスト受信後にイベントを分類するためのコードが含まれます。 -
eventsディレクトリ: イベント処理とフィルタリングのコードが含まれ、ノードレベルでのローカルイベントフィルタリングをサポートします。関連するイベントをグループ化するためにサブディレクトリを作成できます。
トリガープラグインの場合、要求されるDifyの最小バージョンは
1.10.0、SDKバージョンは>= 0.6.0に設定する必要があります。Subscription(購読)の作成
Webhookの設定方法は、主流のSaaSプラットフォーム間で大きく異なります。- 一部のプラットフォーム(GitHubなど)は、APIベースのWebhook設定をサポートしています。これらのプラットフォームでは、OAuth認証が完了すると、Difyが自動的にWebhookをセットアップできます。
- 他のプラットフォーム(Notionなど)は、Webhook設定APIを提供しておらず、ユーザーによる手動認証が必要な場合があります。
github.yamlとgithub.pyの2つのファイルを変更する必要があります。
- github.yaml
- github.py
GitHubのWebhookは暗号化メカニズムを使用しているため、受信リクエストを復号化して検証するにはシークレットキーが必要です。そのため、
github.yamlでwebhook_secretを宣言する必要があります。イベント処理
イベントが抽出されると、対応する実装は元のHTTPリクエストをフィルタリングし、Difyワークフローが受け入れ可能な入力形式に変換する必要があります。 Issueイベントを例にとると、events/issues/issues.yamlとevents/issues/issues.pyを通じてイベントとその実装を定義できます。イベントの出力はissues.yamlのoutput_schemaセクションで定義でき、これはツールプラグインと同じくJSON Schema仕様に従います。
- issues.yaml
- issues.py
イベントフィルタリング
特定のイベント(例えば、特定のラベルを持つIssueイベントのみ)をフィルタリングするには、issues.yamlのイベント定義にparametersを追加します。その後、_on_eventメソッド内でEventIgnoreError例外をスローすることで、設定された基準を満たさないイベントを除外できます。
- issues.yaml
- issues.py
OAuthまたはAPIキーによるサブスクリプションの作成
OAuthまたはAPIキーを介した自動的なサブスクリプション作成を有効にするには、github.yamlとgithub.pyファイルを変更する必要があります。
- github.yaml
- github.py
github.yamlに以下のフィールドを追加します。subscription_constructorは、サブスクリプションがどのように構築されるかを定義するためにDifyによって抽象化された概念です。以下のフィールドが含まれます。-
parameters(任意): 購読するイベントタイプやターゲットのGitHubリポジトリなど、サブスクリプション作成に必要なパラメータを定義します。 -
credentials_schema(任意): APIキーでサブスクリプションを作成する際に必要な認証情報(例: GitHubのaccess_tokens)を宣言します。 -
oauth_schema(任意): OAuth経由でのサブスクリプション作成を実装する場合に必要です。定義方法の詳細は、ツールプラグインにOAuthサポートを追加するを参照してください。
これら2つのファイルを変更すると、DifyインターフェースにAPIキーで作成オプションが表示されます。 OAuth経由の自動サブスクリプション作成も同じ
Constructorクラスで実装できます。subscription_constructorの下にoauth_schemaフィールドを追加することで、OAuth認証を有効にできます。

さらに詳しく
トリガープラグイン開発における核心クラスのインターフェース定義と実装方法は以下の通りです。Trigger
TriggerSubscriptionConstructor
Event
このページを編集する | 問題を報告する