このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。
トリガープラグインとは?#
トリガーは Dify v1.10.0 で新しいタイプの開始ノードとして導入されました。コード、ツール、ナレッジ検索などの機能ノードとは異なり、トリガーは サードパーティのイベントを Dify が認識して処理できる入力形式に変換します。

例えば、Gmail で Dify を new email イベントの受信者として設定すると、新しいメールを受信するたびに、Gmail はイベントを Dify に自動的に送信し、そのイベントでワークフローをトリガーできます。しかし:
- Gmail の元のイベント形式は Dify の入力形式と互換性がありません。
- 世界中には数千のプラットフォームがあり、それぞれ独自のイベント形式を持っています。
トリガープラグインはこのギャップを埋めます。異なるプラットフォームからのイベントを定義・解析し、Dify が受け入れられる入力形式に統一します。
技術概要#
Dify のトリガーは、Web 全体で広く採用されているメカニズムである webhook に基づいて構築されています。GitHub、Slack、Linear などの主要な SaaS プラットフォームは webhook をサポートし、充実したドキュメントを提供しています。
webhook は HTTP ベースのイベントディスパッチャーです。イベント受信アドレスを設定すると、プラットフォームは購読したイベントが発生するたびに、イベントデータをそのアドレスに自動的にプッシュします。
異なるプラットフォームからの webhook イベントを統一的に処理するために、Dify は 2 つのコアコンセプトを定義しています:Subscription と Event。
- Subscription:サードパーティプラットフォームの開発者コンソールで Dify のネットワークアドレスをターゲットサーバーとして登録する設定です。
- Event:プラットフォームは複数のタイプのイベント(メール受信、メール削除、メールを既読にマークなど)を送信する可能性があり、これらはすべて登録されたアドレスにプッシュされます。トリガープラグインは複数のイベントタイプを処理でき、各イベントは Dify ワークフロー内のインテグレーショントリガーノードに対応します。
プラグイン開発#
トリガープラグインの開発プロセスは、他のプラグインタイプ(ツール、データソース、モデルなど)と同じです。
dify plugin init コマンドを使用して開発テンプレートを作成します。生成されるファイル構造は標準のプラグイン形式仕様に従います。
manifest.yaml:プラグインの基本的なメタデータを記述します。providerディレクトリ:プロバイダーのメタデータ、サブスクリプション作成のコード、webhook リクエスト受信後のイベント分類のコードを含みます。eventsディレクトリ:イベント処理とフィルタリングのコードを含み、ノードレベルでのローカルイベントフィルタリングをサポートします。関連するイベントをグループ化するためにサブディレクトリを作成できます。
トリガープラグインの場合、最小必要 Dify バージョンを 1.10.0 に、SDK バージョンを >= 0.6.0 に設定します。
以降のセクションでは、GitHub を例にして開発プロセスを順を追って説明します。
サブスクリプションの作成#
Webhook の設定方法は、主要な SaaS プラットフォーム間で大きく異なります:
-
一部のプラットフォーム(GitHub など)は API ベースの webhook 設定をサポートしています。これらのプラットフォームでは、OAuth 認証が完了すると、Dify は自動的に webhook をセットアップできます。
-
他のプラットフォーム(Notion など)は webhook 設定 API を提供しておらず、ユーザーが手動で認証を行う必要がある場合があります。
これらの違いに対応するため、サブスクリプションプロセスを 2 つの部分に分けています:Subscription Constructor と Subscription 自体。
Notion のようなプラットフォームでは、サブスクリプションを作成するには、ユーザーが Dify から提供されたコールバック URL を手動でコピーし、Notion ワークスペースに貼り付けて webhook 設定を完了する必要があります。このプロセスは、Dify インターフェースの Paste URL to create a new subscription オプションに対応します。

手動 URL 貼り付けによるサブスクリプション作成をサポートするには、github.yaml と github.py の 2 つのファイルを変更します。
GitHub の webhook は暗号化メカニズムを使用しているため、受信リクエストを復号化して検証するためにシークレットキーが必要です。github.yaml で webhook_secret を宣言します。
まず、dispatch_event インターフェースを実装します。コールバック URL に送信されるすべてのリクエストはこのインターフェースによって処理され、処理されたイベントはデバッグと検証のために Request Logs セクションに表示されます。

コードでは、subscription.properties を通じて github.yaml で宣言された webhook_secret を取得できます。
dispatch_event メソッドは、リクエストの内容からイベントタイプを判定します。以下の例では、この抽出は _dispatch_trigger_event メソッドが処理します。
完全なコードサンプルについては、Dify の GitHub トリガープラグインを参照してください。
イベント処理#
イベントが抽出されると、対応する実装は元の HTTP リクエストをフィルタリングし、Dify ワークフローが受け入れられる入力形式に変換する必要があります。
Issue イベントを例にとると、events/issues/issues.yaml でイベントを、events/issues/issues.py でその実装を定義します。イベントの出力は issues.yaml の output_schema セクションで定義し、ツールプラグインと同じ JSON Schema 仕様に従います。
イベントフィルタリング#
特定のイベントをフィルタリングするには(例えば、特定のラベルを持つ Issue イベントのみに焦点を当てる場合)、issues.yaml のイベント定義に parameters を追加します。その後、_on_event メソッドで、設定された条件を満たさないイベントに対して EventIgnoreError 例外をスローします。
OAuth または API キーによるサブスクリプション作成#
OAuth または API キーによる自動サブスクリプション作成を有効にするには、github.yaml と github.py ファイルを変更します。
github.yaml に以下のフィールドを追加します。
subscription_constructor は、サブスクリプションの構築方法を定義するために Dify が抽象化した概念です。以下のフィールドが含まれます:
parameters(オプション):購読するイベントタイプやターゲット GitHub リポジトリなど、サブスクリプション作成に必要なパラメータを定義します。credentials_schema(オプション):API キーまたはアクセストークンを使用してサブスクリプションを作成するために必要な認証情報を宣言します(GitHub のaccess_tokensなど)。oauth_schema(オプション):OAuth によるサブスクリプション作成に必要です。定義方法の詳細については、ツールプラグインに OAuth サポートを追加する を参照してください。
github.py で、自動サブスクリプションロジックを実装する Constructor クラスを作成します。
これら 2 つのファイルを変更すると、Dify インターフェースに Create with API Key オプションが表示されます。
同じ Constructor クラスは OAuth による自動サブスクリプション作成もサポートします:subscription_constructor の下に oauth_schema フィールドを追加すると、OAuth 認証を有効にできます。

さらに詳しく#
トリガープラグイン開発におけるコアクラスのインターフェース定義は以下の通りです。