🍉

Dify上でAIが生成した回答をMS Teamsへ通知する

に公開

はじめに

プログデンスの圓佛です。Difyを使うとAIを活用したワークフローアプリケーションを手軽に作成することができます。Difyのバージョン1.10.0からは「Event-Driven Workflows」という機能がサポートされ、ユーザとの対話的チャットだけでなく、「メールを受信した場合」「指定時間になったら」などのイベントを起点にアプリケーションを開始することができるようになりました。

今回はトリガーには一旦触れず、「Microsoft Teams(以下、MS Teams)へ通知する」設定方法について説明します。実際の利用に際してはDify上にトリガーフローアプリケーションを作成し、「トリガーが発生したら自動的にチャットへ通知する」という完全無人アプリケーションとして作成するのも良いと思います。

この記事で分かること

  • DifyからMS Teamsへ通知する方法

検証環境

今回の検証ではDifyのオンプレミス版(コンテナ版)を利用しています。

対象 バージョン
Dify 1.10.1

MS Teams側での通知先Workflowの作成

今回は「質問した内容をチャットへ通知する」というチャットフローアプリケーションを作成します。通知先になるMS Teams上には予め通知先になるWorkflowを作成し、通知先URLを取得しておきます。

アプリケーションのワークフロー全体像

今回作成するアプリケーションのワークフロー全体は以下を想定しています。今回はアプリケーションの種類に「チャットフロー」を選択しています。MS Teamsへ通知する為にHTTPリクエスト処理を追加しているところがポイントです。

実際のアプリケーション作成手順

ここからは実際に「MS Teamsへ通知するチャットフロー」アプリを作成していきます。

1.アプリの作成

アプリケーションの作成を開始します。

Step.1-1

画面上の「スタジオ」を選択した状態から「最初から作成」をクリックします。

image

Step.1-2

チャットフロー」を選択します。アプリケーションの名前を入力したら「作成する」をクリックします。

image

2.LLMの設定

アプリケーション内で利用したいLLMを選択します。オーケストレーション(アプリケーションの作成画面)が表示されたらワークフロー上の「LLM」をクリックしてプロパティを表示し、利用したいLLMを選択します。今回はAnthropic Claude Haiku 4.5を選択しました。

image

3.「HTTPリクエスト」の追加

Difyからチャットツールへ通知するには「MS Teams側に作成したWorkflowのIncoming WebhookのURL」へアクセスします。その為、ワークフロー上に「HTTPリクエスト」ツールを追加します。

Step.3-1

LLM」と「回答」を接続する線上にマウスカーソルを重ねると「+」(プラス)マークが表示されますので、これをクリックします。

image

Step.3-2

追加可能な「ブロック」や「ツール」が表示されます。デフォルトではブロック一覧が表示されています。ブロック一覧をやや下側へスクロールし、「HTTPリクエスト」をクリックします。

image

Step.3-3

追加した「HTTPリクエスト」のプロパティが表示されます。

image

Step.3-4

デフォルトでは「GETリクエスト」になっている為、これを「POSTリクエスト」へ変更します。「URLを入力」欄には事前にMS Teams上で作成したWorkflowのURLを入力します。

image

Step.3-5

デフォルトで「ボディ」は「none」が選択されています。これを「JSON」へ変更し、以下の内容を貼り付けます。

{
 "type": "message",
 "attachments": [
  {
   "contentType": "application/vnd.microsoft.card.adaptive",
   "contentUrl": null,
   "content": {
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.4",
    "msteams": { "width": "Full" },
    "body": [
     {
      "type": "TextBlock",
      "text": "{{#llm.text#}}",
      "wrap": true
     }
    ]
   }
  }
 ]
}

"text"」の値として「LLMからの回答」を変数として指定する部分がありますが、この部分は以下などの方法で入力します。

  • 変数の入力方法(例)
    1. 右上の「{x}」ボタンをクリックし、表示された一覧から変数を選択する
    2. {{#llm.text#}}」と入力する (※デフォルトで配置されているLLMの内部名は「llm」に設定されている。その「text」プロパティを利用したいので結果的に「llm.text」を指定する)

尚、「"wrap": true」を指定することでMS Teamsに送信されたメッセージが折り返して表示されるようになります。これを指定しないとメッセージが折り返して表示されず、見づらくなるケースが多いように思います。

実際にボディへJSONを設定すると以下のような画面表示になっているはずです。

image

4.アプリケーションを公開する

これでアプリケーションの作成は完了です。画面右上の「公開する」をクリックし、表示されたメニューから「更新を公開」をクリックしてアプリケーションをユーザへ公開します。

image

5.プレビューする

プレビュー機能でアプリケーションの動作を確認します。

Step.5-1

プレビュー」をクリックします。表示された入力欄に質問を入力します。今回は以下を入力し、送信ボタンをクリックしました。

世界で一番高い山は?

image

Step.5-2

回答が表示されました。

image

Step.5-3

DifyのWebUI上にLLMからの回答が表示されると同時に、Workflowを通じて同じ内容がMS Teamsにも通知されました。

image

株式会社プログデンス
設定によりコメント欄が無効化されています