今回はCopilot Studioに最近追加された「(イベント)トリガー」機能を利用して、メールに自動で返信してくれる自律型エージェントを作る。
イベントトリガー
イベントトリガーはPower Automateのトリガーのように「メールの受信」や「データの追加/更新」などをトリガーとして、エージェントを動作させる機能。
ユーザーからのメッセージではなく、これらのイベントをもとにエージェントを起動するため、自律型のエージェントを簡単に作ることができる。
この機能を使って、今回はメール受信時に起動するエージェントを作ってみる。
サンプル構築:メール受信時に起動
この機能を使うためにはオーケストレーション機能が必要なので、有効にする。
※2025/1/3時点では言語が英語かつ生成AIがONである必要あり。

※2025/1/3時点では言語が英語かつ生成AIがONである必要あり。

イベントトリガー追加
まずは[トリガーの追加]から、


新しいメールが届いたときを選んで、


接続が作られたら、[次へ]を押す。


サンプルなので「メールフォルダ」だけを指定して、[Create trigger]を押す。


するとトリガーが追加されるので、[Power Automateで編集する]を押す。


Power Automate構築
Power Automateを開くと「トリガー」と「Copilotへのプロンプト送信」アクションが既定で追加されている。


今回は受信したメールの内容をコパイロットに知らせるところまで作成するので、[選択]アクションで最小限の情報に絞って、


Copilotに対してプロンプトを送る。
このとき、このBody/messageには「コパイロットに対するプロンプト(命令)」を記述すること。
※情報のみを送ればよいかと思って「選択」アクションの出力だけ渡したら、コパイロットが全然反応してくれずはまった。。

このとき、このBody/messageには「コパイロットに対するプロンプト(命令)」を記述すること。
※情報のみを送ればよいかと思って「選択」アクションの出力だけ渡したら、コパイロットが全然反応してくれずはまった。。

トピックの作成
先ほどのフローが実行されると、Copilotに対しプロンプトが送られる。今回はプロンプトに「トピック「メール受信」を起動する」と書いたので、該当のトピックを作成する。
新しいトピックを作成し、トピック名を「メール受信」にして、先ほどのPower Automateの[選択]アクションの出力を受ける文字列引数を作成。

※トピックの引数についてはこちら


※トピックの引数についてはこちら

Copilot Studio 変数の「型」と「種類(スコープ)」について調査|トピックの引数と戻り値の設定も
Copilot Studioにおける変数を詳しく調べてみた。変数の型Copilot Studioで用意されている変数の型はPower Apps(Power Fx)とほぼ同じで、以下の通り。 String:テキスト Bool:true or ...
続いて[値の解析]ノードで、Power Automateから渡された文字列をJSONオブジェクトとして扱う準備をする。

※値の解析についてはこちら


※値の解析についてはこちら

Copilot Studio 「値を解析する(値の解析)」ノードの使い方|トピック内でJSONを解析する
Copilot Studioの「値を解析する(値の解析)」ノードが便利だったので、使い方をメモ。ノード「値を解析する」「値の解析」ノードは、トピック内で扱う値の「型を変換する」ノード。主な使い道は、Power Automateの「JSONの...
メール受信トリガーは、受信したメールを複数渡してくるので、それらのメールすべてを処理するForeachを追加。

※Foreachの追加はこちら


※Foreachの追加はこちら

Copilot Studio 会話の中でForeachループを使う|テーブルや配列の操作に便利
Copilot Studioにおけるループについて調べていたらおもしろい記事を見つけたので紹介。会話の中でループを作る方法Copilot Studioにおいて、会話内のループを構築する場合は「手順に移動」ノードを使用していた。これはCとかの...
最後に、ループの中でメールが届いた旨メッセージを送って、


返信するか?を尋ねたら構築完了。


動作確認
動作を確認するには事前にPower Automateを一回起動しておく必要がある。


[概要]に戻って、トリガーのテストアイコンを押し、


先ほどのPower Automateの実行履歴を選んで、[テストを開始する]を押す。


すると「トリガーが動作した旨のデバッグ用メッセージ」が表示され、トピック内で作成した「メールの概要」と「返信するか?」のメッセージが送られてくる。


Yesを押すと条件分岐の左側が実行される。


あとは「返信しておきました」メッセージを送信する前に、返信を実行するPower Automateアクションを作れば自動で返信するエージェントが作成できる(はず)。
もちろん全てのメールに対してこのメッセージが来たらうざいので、AI BuilderなどのAIを使って「返信が必要な可能性があるか?」を事前に判断させる必要はあり。
問題1:作成者の接続が使われる
ただ注意があって、このつくり方だと「作成者」の接続でOutlookにアクセスしてしまうらしい。そのため他のユーザーに共有すると自分のメールが相手に見られてしまう可能性あり。


他のユーザーへの展開方法は模索中。
問題2:Teamsで実行すると動作しない
Teamsに展開した後何度かトリガーを起動してみたんだけど、


なぜか動作しない。。


この辺りも現在調査中。。
おまけ:イベントトリガーで参照するナレッジソースには制限がある
エージェントはイベントトリガーでの起動時に、以下のナレッジにはアクセスできないことがあるとのこと。
- SharePoint
- Dataverse
- グラフ コネクタ
- AI Builder プロンプト
コメント