前回は、AI Builderで、写真からブログコンテンツを生成するカスタムプロンプトを作成しました。

今回は、Power Automateから、作成したカスタムプロンプトを呼び出すフロー処理を作成します。
作成するフロー処理

- とあるメールに、画像添付ファイル付きのメールが届くことをトリガーとします。
- メールの画像添付ファイルを、前回作成したAI Builderのカスタムプロンプトに渡し、画像をもとにブログコンテンツ記事(テキスト)を生成します。
- 生成されたブログコンテンツ記事(テキスト)と添付画像ファイルを、Teamsのチャネルに投稿します。
Power Automateでフローを作成する
Power Automateの画面を開きます。

左側メニューより、「テンプレート」をクリックします。
今回作成する処理に近いテンプレートを探しますが、見つかりませんでした。
とりあえずトリガーが似ていそうな、「Outlook.comのメールの添付ファイルをOneDriveに保存する」を選択しました。

適宜フロー名を入力し、トリガーをOutlookの「新しいメールが届いたとき(V3)」にチェックをつけ、作成をクリック。

トリガー以外の処理は不要そうなので削除しました。
トリガーの「新しいメールが届いたとき(V3)」をクリックすると、左側に処理の詳細設定が表示されます。まず、「接続参照を変更する」をクリックし、接続設定を行います。

「新しく追加する」をクリックし、既存のOutlookアカウントを指定しました。

パラメーターの設定を行います。
詳細パラメーターの「すべて表示」をクリックしたのち、表示された「添付ファイルを含める」にチェックを入れます。

添付ファイルを含めるを「はい」に設定します。
これで、メールに添付された画像ファイルをPower Automateで取得することが可能です。

メールが届いた後のフローを追加します。
トリガーの「新しいメールが届いたとき(V3)」の下にある+をクリックします。
アクションを追加するより、AI機能の「プロンプトを実行する」をクリック。

接続設定を行います。
「接続参照を変更する」をクリックし、接続設定を行います。

「新しく追加する」をクリックします。

接続名に適宜名前を入力し、認証の種類を「OAuth」にします。
サインインをクリックします。

アカウントを選択します。

接続が確立したのち、パラメーターの設定を行います。
プロンプトに、前回作成したカスタムプロンプトを指定します。

前回作成したカスタムプロンプトは、「photo」という画像ファイルを引数としていました。
ここに、メールの画像添付ファイルを指定します。
右側にある雷マーク?「前のステップからデータを入力します。」をクリックします。

トリガーの「新しいメールが届いたとき(V3)」から、添付ファイルを指定したいのですが、表示されません。
「表示数を増やす」をクリックします。

添付ファイル関連の項目が表示されるようになりました。
「添付ファイルコンテンツ」をクリックします。

このように、パラメーターの「Photo」に、「添付ファイルコンテンツ」が指定されました。
この画像をもとに、カスタムプロンプトでブログコンテンツが作成されます。

カスタムプロンプト後の処理フローを追加します。
+をクリックし、「Microsoft Teams」を選択します。

Teamsのアクションのうち、「チャットまたはチャネルでメッセージを投稿する」をクリックします。

投稿者に「ユーザー」を指定します。画像をつけてメッセージを送信するにはボットではなくユーザーである必要があるようです。
投稿先に「チャネル」を指定し、チーム・チャネルを設定します。
メッセージの欄に入力する前に、「コードビューの切り替え」をクリックします。

コードベースでの入力で、HTML形式で以下のコードを記入しました。
@{outputs(‘プロンプトを実行する’)?[‘body/responsev2/predictionOutput/text’]}
<img src=”../hostedContents/photo1/$value”><br>
</p>
@{outputs(‘プロンプトを実行する’)?[‘body/responsev2/predictionOutput/text’]}
は、アクション「プロンプトを実行する」のText項目です。
<img src=”..の部分は、画像を指定する箇所になります。

詳細パラメーターの「すべて表示」をクリックし、ホスト型コンテンツ欄に以下を入力しました。
{
“@microsoft.graph.temporaryId”: “photo1”,
“contentBytes”: “@{base64ToBinary(base64(item()?[‘contentBytes’]))}”,
“contentType”: “@{item()?[‘contentType’]}”
}
]
Teamsに画像を表示するためのJSONです。
@microsoft.graph.temporaryId”: “photo1″
↑は、<img src=”../hostedContents/photo1/$value”>と対応しており、photo1は任意の文字列で設定が可能です。

@{base64ToBinary(base64(item()?[‘contentBytes’]))}
は、「新しいメールが届いたとき(V3)」の「添付ファイルコンテンツ」をbase64()関数で変換したのち、base64ToBinary()関数で変換したものになります。

contentType”: “@{item()?[‘contentType’]}
上は、「新しいメールが届いたとき(V3)」の「添付ファイルコンテンツの種類」を指定しました。
テストの実行
処理が完成したので、テストを行います。

保存したのち、テストをクリックします。

フローのテストで「手動」を選択し、「テスト」をクリックします。

待機状態になります。
指定したメールアドレスに、画像添付付きのメールを送付します。

処理が実行されました。
エラーがないことを確認します。

Teamsのチャネルには、上記の通り自動で投稿されました。
これで完成です。
次回からはメールを送付するだけで、この処理が自動で行われます。
まとめ
メール受信した画像添付ファイルをもとに、AI Builderのカスタムプロンプトでブログコンテンツを生成、その結果をTeamsに投稿するフローをPower Automateで作成しました。
このような処理が、ノーコードで安全に作成できるというのはいい世の中だなと実感しました。
今回はAI Builderのカスタムプロンプトでテキストを生成する処理を使用しましたが、これを画像やPDFからテキストを抽出処理に置き換えたりすると、業務効率化にも活用できるのではないかと思います。
