🙆

Dify.AI ワークフローからDiscordへ通知を送信する方法

2024/06/16に公開

Dify.AI ワークフローからDiscordへ通知を送信する方法

Dify.AIは、コードを書かずに強力なAIアプリケーションを構築できるプラットフォームです。Dify.AIのワークフロー機能を使えば、複雑なタスクを自動化し、効率を大幅に向上できます。本稿では、Dify.AIのワークフローからDiscordへ通知を送信する方法について解説します。

Discord Webhook の設定

まず、Discord側でWebhook URLを取得する必要があります。

  1. 通知を送信したいDiscordサーバーとチャンネルを開きます。
  2. チャンネル名の横にある歯車アイコンをクリックし、「チャンネルを編集」を選択します。
  3. 左側のメニューから「連携サービス」を選択し、「Webhookを作成」をクリックします。
  4. Webhookの名前とアイコンを設定し、「コピー」ボタンをクリックしてWebhook URLをクリップボードにコピーします。

Dify.AI ワークフローへの組み込み

Dify.AIのワークフローにDiscord通知機能を組み込むには、以下の手順に従います。

  1. Dify.AIのワークフローエディターを開き、Discordへ通知を送信したい場所に「Webhook」ノードを追加します。

  2. 「Webhook」ノードの設定画面で、以下の項目を設定します。

    • メソッド: POST を選択します。

    • URL: コピーしたDiscord Webhook URLを貼り付けます。

    • ボディタイプ: JSON を選択します。

    • ボディ: 送信するメッセージの内容をJSON形式で記述します。

      {
        "content": "Dify.AI ワークフローが完了しました!"
      }
      
  3. ワークフローを保存し、実行します。

まとめ

Dify.AIのワークフローからDiscordへ通知を送信することで、ワークフローの進捗や結果をリアルタイムに把握できます。これにより、作業効率の向上や迅速な問題解決が可能になります。

本稿で紹介した方法を参考に、Dify.AIとDiscordを連携させて、より快適なAI開発体験を実現してください。


Discordは、ゲーマーを中心に広く利用されているコミュニケーションツールです。そのDiscordには、外部サービスからの通知を特定のチャンネルに投稿できる便利な仕組みであるwebhookが用意されています。本記事では、Difyを使ってDiscord webhookにメッセージを送信するコードを解説し、その活用方法について詳しく説明します。

コード解説

今回解説するコードは、webhook URLと送信したいメッセージを受け取り、Discordへメッセージを投稿するPythonの関数です。Difyのワークフローで使います

def main(message: str, webhook: str) -> dict:
    import requests
    import json
    url = webhook

    message = message[:2000] 
    headers = {
        "Content-Type": "application/json",
    }

    body = {
        'content': message
    }

    response = requests.post(url, headers=headers, data=json.dumps(body))

    if response.status_code == 204 or response.status_code == 200 :
        return {
            "result": str(response),
        }
    else:
        print(f"Error post for discord: {response}")
        return {
            "result": "error",
        }

各要素の詳細

  1. import: この部分では、コードに必要なライブラリをインポートしています。

    • requests: HTTPリクエストを送信するために使用します。
    • json: PythonオブジェクトをJSON形式に変換するために使用します。
  2. main関数: この関数は、メッセージとwebhook URLを引数として受け取り、Discordへのメッセージ投稿処理を実行します。

    • message: str: Discordに送信したいメッセージ内容です。文字列型で指定します。
    • webhook: str: Discord webhookのURLです。文字列型で指定します。
  3. メッセージの長さ制限: Discord webhookでは、メッセージの長さに制限があります。このコードでは、message = message[:2000] の部分でメッセージが2000文字を超える場合、先頭から2000文字までに切り詰める処理を行っています。

  4. ヘッダーとボディ: HTTPリクエストを送信する際には、ヘッダーとボディを指定する必要があります。

    • headers: リクエストヘッダーを指定します。今回は、データ形式がJSONであることを示すために "Content-Type": "application/json" を設定しています。
    • body: リクエストボディを指定します。Discord webhookにメッセージを送信する場合、contentキーにメッセージ内容を設定します。
  5. requests.postメソッド: requests.postメソッドを使って、指定したwebhook URLへHTTP POSTリクエストを送信します。このリクエストによって、メッセージがDiscordへ送信されます。

  6. ステータスコード: リクエスト送信後、Discord webhookからはレスポンスが返されます。このレスポンスには、処理が成功したかどうかを示すステータスコードが含まれています。

    • response.status_code == 204 または response.status_code == 200: これらのステータスコードは、リクエストが成功したことを示します。
    • それ以外のステータスコード: リクエストが失敗したことを示します。エラーメッセージを出力して、原因を調査する必要があります。
  7. 返り値: main関数は、処理結果を辞書型で返します。

    • "result": str(response): リクエストが成功した場合、レスポンスの内容を文字列に変換して返します。
    • "result": "error": リクエストが失敗した場合、"error"という文字列を返します。

注意点

  • 投げられるメッセージの文字数に上限があるようです。
  • そのため前2000文字のみ出力するようにしました。

応用例

Discord webhookは、様々なサービスと連携して活用することができます。

  • Bot開発: 独自のbotを開発し、webhookを使ってDiscordにメッセージを送信することができます。例えば、特定のキーワードがツイートされたら通知するbotや、Webサイトの更新情報を通知するbotなどを作成できます。
  • サービス連携: webhookに対応している外部サービスと連携することで、様々なイベント通知をDiscordに集約することができます。例えば、GitHubのプッシュ通知や、CI/CDツールのビルド結果通知などをDiscordに送信することができます。
  • Youtube翻訳:
    https://github.com/tregu148/public/blob/main/dify/url2discord.yml

まとめ

今回は、Pythonを使ってDiscord webhookにメッセージを送信するコードを解説しました。
webhookは簡単に実装できるにもかかわらず、様々なサービスと連携して活用できる強力なツールです。ぜひ、本記事を参考にwebhookを活用してみてください。

https://github.com/tregu148/public/blob/main/dify/url2discord.yml

Discussion