Slack Bot プラグインの開発
Last updated
Last updated
この記事では、以下の内容を理解できます。
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 に返します。これにより、ユーザーは Dify アプリと直接やり取りできます。
Dify プラグインスキャフォールディングツール。詳細については、開発ツールの初期化を参照してください。
Python 環境。バージョンは 3.12 以上である必要があります。詳細については、Pythonインストールチュートリアルを参照するか、LLM に完全なインストールチュートリアルを問い合わせてください。
Slack App を作成し、OAuth トークンを取得します。
Slack API プラットフォームにアクセスし、scratch 方式で Slack App を作成し、アプリをデプロイする Slack ワークスペースを選択します。
;Webhooks 機能を有効にします。
App を Slack ワークスペースにインストールします。
今後のプラグイン開発に使用する OAuth トークンを取得します。
それでは、実際にプラグインのコーディング作業を始めましょう。その前に、クイックスタート:Extensionプラグインの開発 をお読みいただくか、Difyプラグインの開発経験があることをご確認ください。
以下のコマンドを実行して、プラグイン開発プロジェクトを初期化します。
プロンプトに従い、プロジェクトの基本情報を入力し、extension
テンプレートを選択してください。そして、Apps
と Endpoints
の2つの権限を付与します。
プラグインからDifyプラットフォームの機能を呼び出す方法については、逆呼び出し:App を参照してください。
このプラグインでは、どのDifyのAppを使って応答するかを指定する必要があり、さらに、応答時にSlackのAppトークンを使用する必要があるため、プラグインフォームにこれらの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
endpoints/slack.py
ファイルを修正し、以下のコードを追加してください:
プラグインのテストを容易にするため、現在はユーザーの入力をそのまま返すだけで、Difyアプリは呼び出さない設定になっています。
Difyプラットフォームにアクセスし、Difyプラグインのリモートデバッグに必要な接続アドレスとキーを取得します。
プラグインプロジェクトに戻り、.env.example
ファイルをコピーして.env
にリネームします。
python -m main
コマンドを実行してプラグインを起動します。プラグインページで、ワークスペースにこのプラグインがインストールされていることを確認できます。他のチームメンバーもこのプラグインを利用できます。
Difyのプラグイン管理ページで、自動インストールされたテストプラグインを見つけます。次に、新しいエンドポイントを作成し、名前、Botトークンを入力し、接続するアプリを選択します。
保存すると、POSTリクエストアドレスが生成されます。
次に、Slack Appの設定を完了する必要があります。
イベントサブスクリプションを有効にする
ここに、上記で生成したプラグインのPOSTリクエストアドレスを貼り付けます。
Slack Appに必要な権限にチェックを入れます。
コードでは、self.session.app.chat.invoke
を使ってDifyプラットフォーム内のAppを呼び出し、app_id
やquery
などの情報を渡します。そして、レスポンスの内容をSlack Botに返します。python -m main
コマンドを実行してプラグインを再起動し、デバッグを行います。Slack BotがDify Appからの応答メッセージを正しく出力できるか確認します。
プラグインが正常に動作することを確認したら、次のコマンドラインツールを使ってプラグインをパッケージ化して名前を付けることができます。実行すると、現在のフォルダにslack_bot.difypkg
ファイルが作成されます。これが最終的なプラグインパッケージです。
おめでとうございます!プラグインの完全な開発、テスト、パッケージ化のプロセスが完了しました。
作成したプラグインを Dify Marketplace リポジトリ にアップロードして公開できます。ただし、公開する前に、プラグインがプラグイン公開仕様に準拠しているか確認してください。
Difyプラグインの完全なプロジェクトコードを確認するには、Githubコードリポジトリにアクセスしてください。他のプラグインの完全なコードや詳細も確認できます。
プラグインの詳細については、以下を参照してください。
クイックスタート:
プラグインインターフェースドキュメント: