Power Automate からのTeamsへのメンションはこのブログの中でも何度も紹介してきましたが、今回はOutlookのメールです。
Outlookのメールでもメンションを利用することができて、メールのフィルターに使えたり、またはメンション部分をマウスでホバーするとその人のプロファイルを見れたりします。
残念ながら Power Automate の Outlookコネクターでは未だに@メンション入りメッセージの送信がサポートされていません。
そこで、本投稿ではGraph APIを利用してメンション入りのメッセージを送信するフローを紹介します。
なお、サンプルのパッケージは以下からダウンロードいただけます。
フローの全体は下図の通りです。
Graph API でのメール送信
Graph APIでメールを送る場合には https://graph.microsoft.com/beta/me/sendMail
のURLにリクエストを送ります。
その際、リクエストの本文は以下の形式組み立てる必要があります。
{ "message": { "subject": "Mention message", "body": { "contentType": "HTML", "content": "Message Body" }, "toRecipients": [ { "emailAddress": { "address": "user@example.com" } } ] } }
より詳細には以下のDocsで確認してください。(ちょっと難解ですが)
メンションを含める
メンションを送信するには2つの手順が必要です。
- HTML形式のメッセージにメンションになるようなタグを含める
- リクエストの本文に
mentions
のプロパティを追加する
簡単な例は以下でも紹介されています。ただし本文が書かれていないですね。
1. HTMLの整形
ここは決まったフォーマット(classとかidとか)でメンション部分を作る必要があります。
<a id="OWAAM123456" class="J9Y1oNF3ZpoR5LC3M2PHm mention ms-bgc-nlr ms-fcl-b" href="mailto:user@example.com"> @Display Name </a>
ポイントはhref
のメールアドレス部分と、id
のOWAAMxxxxxx
です。OWAAM
のあとは数字6桁なら何でもよさそうです。あとはメンションする相手に合わせてメールアドレスと表示名を設定してください。
今回のフローでは数字6桁の部分はrand()
関数でランダムな数字を与えています。
また、Graph APIの実行には、PaulのOffice 365 Groupコネクターの方法を利用します。
2. mentionsプロパティ追加
HTMLだけを加工した状態では、メッセージがただしく「メンションされたもの」として扱われません。
Outlook のWebやクライアントアプリ上で"@"が表示されるためにはメッセージの属性にも「誰宛のメンションか」を含める必要があります。
この属性を追加した後のリクエスト本文は以下のようになります。
{ "message": { "subject": "Test message", "body": { "contentType": "HTML", "content": "HTML text" }, "toRecipients": [ { "emailAddress": { "address": "user@example.com" } } ], "mentions": [ { "mentioned": { "address": "user1@example.com" } }, { "mentioned": { "address": "user2@example.com" } } ] } }
mentions
プロパティは配列で、複数人へのメンションがサポートされています。入れ子になっていることにも注意してください。
これで準備はできました。あとはフローを実行するだけです。
サンプルをインポートして接続情報を直せばすぐに使えますので、試してみてください。