Slack Bot プラグインの開発
このドキュメントでは、プロジェクトの初期化、設定フォームの編集、機能コードの実装、プラグインのデバッグ、エンドポイントの設定、効果検証からパッケージ化、リリースまでの完全なSlack Botプラグイン開発ガイドを提供します。Slackプラットフォーム上でAI駆動のチャットボットを構築するために、Difyプラグインスキャフォールディングツールと作成済みのSlack Appが必要です。
本稿では、次のことをお手伝いします。
Slack Bot の構築方法を深く理解し、AI 駆動の Slack チャットボットを作成し、 Slack プラットフォームでユーザーの質問にインテリジェントに応答します。プラグイン開発の経験がない場合は、まずプラグイン開発入門ガイドを読むことをお勧めします。
プロジェクトの背景
Dify プラグインエコシステムは、よりシンプルで使いやすいアクセス方法のサポートに取り組んでいます。本稿では Slack を例に、Slack Bot プラグインの開発方法を詳しく説明し、チームメンバーが Slack プラットフォーム内で直接 LLM と対話し、AI サービスの使用効率を向上させるのに役立ちます。
Dify プラグインエコシステムは、よりシンプルで便利なアクセス方法を提供することを目指しています。本稿では Slack を例に、Slack Bot プラグインの開発方法を詳細に解説し、チームメンバーが Slack プラットフォームで直接 AI アプリケーションを使用し、業務効率を向上させるのに役立ちます。
Slack は、自由でオープンなリアルタイムオフィスコミュニケーションプラットフォームであり、豊富な API を備えています。その中でも、イベントベースの Webhook 機能は開発に着手しやすいです。このメカニズムを利用して Slack Bot プラグインを作成します。その原理は下図の通りです。
混乱を避けるため、以下の概念について説明します。
- Slack Bot は Slack プラットフォーム上のチャットボットであり、仮想キャラクターと見なすことができ、チャットで対話することができます。
- Slack Bot プラグインとは、Dify Marketplace 上のプラグインで、Dify アプリケーションと Slack プラットフォームを接続するために使用されます。本稿では、主にこのプラグイン開発について説明します。
原理の概要:
-
Slack Bot にメッセージを送信
ユーザーが Slack で Bot にメッセージを送信すると、Slack Bot は Dify プラットフォームに Webhook リクエストを送信します。
-
メッセージを Slack Bot プラグインに転送
ユーザーが Slack bot と対話する際、メッセージを Dify アプリケーションに転送する必要があります。メールシステムが受信者のメールアドレスを必要とするように、Slack の API を介して Slack Webhook のアドレスを設定し、それを Slack Bot プラグインに入力して接続を確立することができます。
-
プラグインがメッセージを受信後、特定の Dify アプリケーションに返す
Slack Bot プラグインは Slack リクエストを処理し、Dify 内のアプリケーションに送信します。LLM がユーザーの入力内容を分析し、応答します。
-
Dify アプリケーションが応答後、メッセージを Slack Bot に返し、ユーザーに回答する
Slack Bot は Dify アプリケーションの応答を取得後、プラグインを介してメッセージを元の経路で Slack Bot に返し、ユーザーが Slack を使用しながら直接 Dify アプリケーションと対話できるようにします。
事前準備
- Dify プラグインスキャフォールディングツール。詳細については、開発ツールの初期化を参照してください。
- Python 環境、バージョン番号 ≥ 3.12。詳細については、Python インストールチュートリアルを参照するか、LLM に完全なインストールチュートリアルを問い合わせてください。
- Slack App を作成し、OAuth トークンを取得する
Slack API プラットフォームにアクセスし、scratch 方式で Slack APP を作成し、アプリケーションをデプロイする Slack スペースを選択します。
Webhooks 機能を有効にします。
App を Slack ワークスペースにインストールします。
OAuth トークンを取得し、後続のプラグイン開発に使用します。
1. プラグインの開発
ここから実際のプラグインコーディング作業を開始します。開始する前に、Extension プラグインの開発を読んだか、Dify プラグインを一度開発したことがあることを確認してください。
プロジェクトの初期化
以下のコマンドを実行してプラグイン開発プロジェクトを初期化します。
プロンプトに従ってプロジェクトの基本情報を入力し、extension
テンプレートを選択し、Apps
と Endpoints
の 2 つの権限を付与します。
プラグインが Dify プラットフォームの機能を逆引き呼び出しする方法の詳細については、逆引き呼び出しを参照してください。
1. 設定フォームの編集
このプラグインでは、どの Dify の App を使用して返信するかを指定する必要があり、返信する際には Slack の App token を使用する必要があるため、プラグインフォームにこれらの 2 つのフィールドを追加する必要があります。
group パス以下の yaml ファイルを変更します。例:group/slack.yaml
。フォーム設定ファイルの名前は、プラグイン作成時に記入した基本情報によって決まります。対応する yaml ファイルを変更できます。
サンプルコード:
slack.yaml
コードデータ構造の説明:
-
type
フィールドはapp-selector
フィールドとして指定されます。ユーザーはプラグイン使用時に特定の Dify アプリケーションにアクセスし、メッセージ転送を行うことができます。
-
scope
フィールドはchat
フィールドとして指定されます。agent
、chatbot
、chatflow
などのタイプのアプリのみ使用できます。
最後に endpoints/slack.yaml
ファイル内のリクエストパスとリクエストメソッドを変更し、method を POST 方式に変更する必要があります。
サンプルコード:
endpoints/slack.yaml
2. 機能コードの編集
endpoints/slack.py
ファイルを変更し、以下のコードを追加します。
テストを容易にするため、プラグイン機能は現在ユーザーの入力内容を繰り返すことしかできず、Dify app の呼び出しは一時的に行いません。
2. プラグインのデバッグ
Dify プラットフォームにアクセスし、Dify プラグインのリモートデバッグ接続アドレスとキーを取得します。
プラグインプロジェクトに戻り、.env.example
ファイルをコピーして .env
に名前を変更します。
python -m main
コマンドを実行してプラグインを起動します。プラグインページで、このプラグインがワークスペースにインストールされていることが確認できます。他のチームメンバーもこのプラグインにアクセスできます。
プラグインのエンドポイントを設定
Dify のプラグイン管理ページで、自動インストールされたテストプラグインを見つけ、新しいエンドポイントを作成し、名前、Bot token を入力し、接続するアプリを選択します。
保存後、POST リクエストアドレスが生成されます。
次に、Slack App の設定を完了する必要があります。
- Event サブスクリプションを有効にする
上記で生成されたプラグインの POST リクエストアドレスを貼り付けます。
Slack App が持つべき権限にチェックを入れます。
3. プラグイン効果の検証
コードは self.session.app.chat.invoke
を使用して Dify プラットフォーム内の App を呼び出し、app_id
や query
などの情報を渡し、最後にレスポンスの内容を Slack Bot に返します。python -m main
コマンドを実行してプラグインを再起動してデバッグし、Slack Bot が Dify App の応答メッセージを正しく出力できるか確認します。
4. プラグインのパッケージ化(オプション)
プラグインが正常に動作することを確認した後、以下のコマンドラインツールを使用してプラグインをパッケージ化し、名前を付けることができます。実行後、現在のフォルダに slack_bot.difypkg
ファイルが見つかります。これが最終的なプラグインパッケージです。パッケージ化の詳細な手順については、ローカルファイルとしてパッケージ化して共有を参照してください。
おめでとうございます。これでプラグインの完全な開発、テスト、パッケージ化プロセスが完了しました!
5. プラグインの公開(オプション)
これで、Dify Marketplace リポジトリにアップロードしてプラグインを公開できます!ただし、公開する前に、プラグインがDify Marketplace への公開の規範に従っていることを確認してください。
関連リソース
- プラグイン開発の基本概念 - Difyプラグイン開発の全体像を理解する
- プラグイン開発入門ガイド - ゼロからプラグインを開発する
- Extension プラグインの開発 - 拡張プラグイン開発を理解する
- Dify サービスの逆引き呼び出し - Dify プラットフォームの機能を呼び出す方法を理解する
- App の逆引き呼び出し - プラットフォーム内の App を呼び出す方法を理解する
- プラグインの公開 - 公開プロセスを学ぶ
- Dify Marketplace への公開 - マーケットプレイス公開ガイド
- エンドポイントの詳細定義 - エンドポイントの詳細定義
参考文献
完全な Dify プラグインのプロジェクトコードを確認したい場合は、Github コードリポジトリにアクセスしてください。その他、他のプラグインの完全なコードと詳細を確認できます。
さらに多くのプラグインについて知りたい場合は、以下の内容を参照してください。
クイックスタート:
プラグインインターフェースドキュメント:
- マニフェストファイルによるプラグイン情報の定義 - マニフェスト構造
- エンドポイント - エンドポイントの詳細定義
- 逆引き呼び出し - Dify 機能の逆引き呼び出し
- 共通仕様 - ツール仕様
- モデルアーキテクチャ - モデル