やりたいことの確認
前回からの続きです。
Copilot Studioで生成された「AIの回答」をドキュメント化してその内容をCopilotに返答してもらおうという試みです。
Wordは通常コネクタ範囲内では難しいが、PDFであれば返せそう、ということで検証してみていたところでした。詳細は前の記事をご確認ください。
やったことは以下のような感じ。

1. Copilot → Power Automate を呼ぶ
2. Power AutomateでHTML文字列を組み立て
3. HTMLファイルを作成
4. HTML → PDF に変換
5. PDFを保存→保存したファイルをCopilotへ返す
前回、1~5でドキュメント化までは成功しました。
5の「保存したファイルをCopilotへ返す」の部分で、PDFファイル自体をCopilotで表示させることは出来なかったので、違った方向性として、作成したPDFのURLを出力できるようにしてみます。
検証の続き
では早速、やっていきましょう。
6. 出力されるファイルパスをURL化し、Copilotへ返す
「ファイルの作成」で実際に出力されるパスを、テストでフローを動かして確認すると、/(フォルダ)以降のファイル名しか存在していません。このため、動的に取得できるのはこのファイル名の部分のパスだけということが分かります。
ではどうやって総パス(URL)を取得するのか……力技でいきます!

フロー内構造の確認
まずこの「ファイルの作成」はOneDrive for Businessコネクタのアクションですから、自分のOneDrive内の指定したフォルダにファイルが作成されます。では、その自分のOneDriveの指定したフォルダURLが分かれば問題ないですよね!
ということで、OneDriveのURLを確認してみると、以下のような構造だと分かります。
https://{テナント名}-my.sharepoint.com/personal/{自分のUPNの.と@を_に変更した値}/Documents/{配置したフォルダ}/{ファイル名}.pdf

URL取得フローの作成
URLを取得するために1つ1つ確認してみましょう。
・テナント名 は自身の組織のテナント名が分かればOK、いずれかのサイトを開けばすぐに分かります。
・自分のUPNの.と@を_に変更した値 はCopilotを利用するユーザーのUPN(メールアドレス)が分かればOK。動的に取得するために少し工夫をします。
まず、Copilot Studio側のアクションで、既に入力している「生成型の回答の結果」の他、システム変数の「User.PrincipalName」を入力受け渡し値に追加します。


次に、Power Automate側のトリガーでUPNを引数と設定します。

コードを確認すると、この引数は実際に「text_2」というスキーマに格納されることが分かります。

この引数はUPNそのままの値のため、.および@の記号を全て_に変換する式を記載します。
元の値は、上記のスキーマから動的に triggerBody()?['text_2'] として取得し、replace関数を使用します。

・配置したフォルダ はフロー内で指定したフォルダを記載すればOK
・ファイル名(パス) は動的に取得可能
今回はDocumentsフォルダ直下に置いたため、以下のようにパスのみを動的に取得します。
最終的に引数へ http://~の文字列を記載し、動的な部分は各値を指定。このFilepathという引数をCopilotへ返却します。


すると、Copilot Studioのアクションを更新すると、FilePathが変数として出力されます。
この変数をメッセージに表示してあげると、URLが表示されます!

7. URLをリンク化する
少しtipsを追加。
以下①のように、この変数ををメッセージとして出力するとURLがそのまま出力されます。
これでも問題はありませんが、②のように文字リンクとすることも可能です。
[リンク文字としたい文字列(URL)]とすることで、Copilot Studioではリンク化出来ます。


まとめ
いかがでしょうか。以下のような流れでCopilot StudioとPower Autometeの連携を行いました。
- Copilot → Power Automate を呼ぶ
- Power AutomateでHTML文字列を組み立て
- HTMLファイルを作成
- HTML → PDF に変換
- PDFを保存
- 保存したファイルURLをCopilotへ返却
- ファイルURLをリンク化
他にも様々な連携が可能かと思いますので、ぜひ応用してみてください。
連携方法についてご質問などのお問い合わせもお待ちしております!

