はじめに
Power Automate でこれまでできなかった、チーム宛てのメンションやチャネル宛てのメンションを、TeamsコネクタのHTTPリクエストを使用して実現します。
この方法はプレミアムコネクタこそ必要ないものの、少し難しいアクションを使用しますので、本当に必要かどうかは慎重にご判断の上ご利用ください。
これまで
Power Automate のMicrosoft Teamsコネクタであつかえるメンションは、個人宛てのメンションとタグメンションの2種類だけでした。
<at>
タグで何とか頑張ってみても、チームやチャネルに対するメンションはできませんでした。
参考資料
Microsoft Graph API を使用することで、これまでできなかったことができるようになります。
下記のページの2つの例を参考に、Power Automate からリクエストを送信します。
やりかた
このチームを使って実演します。
既定で作成される一般(Genaral)
チャネルに加えて、3種類すべてのチャネルを用意しています。
情報の取得
メッセージの投稿やメンションのために、チームとチャネルそれぞれのIdが必要になります。
今回はすべての種類のチャネルでメンションが遅れるか確認するために、すべてのチャネルの情報を取得します。
下記のアクションで、チームの情報とそのチームのチャネルの一覧の情報を取得します。
今回は取得したすべてのチャネルを対象にするため、そのまま「それぞれに適応する(Apply to each
)」を使用します。
チームメンション
取得した情報を使って、「Microsoft Graph HTTP 要求を送信する」アクションを使用することで、チームメンションを行います。
https://graph.microsoft.com/v1.0/teams/@{outputs('チームの取得')?['body/id']}/channels/@{items('それぞれに適用する')?['id']}/messages
チーム宛てのメンションはconversationIdentityType
をteam
にします。
{
"body": {
"contentType": "html",
"content": "<div><div><at id=\"0\">@{outputs('チームの取得')?['body/displayName']}</at> チームメンションができるよ!</div></div>"
},
"mentions": [
{
"id": 0,
"mentionText": "@{outputs('チームの取得')?['body/displayName']}",
"mentioned": {
"conversation": {
"id": "@{outputs('チームの取得')?['body/id']}",
"conversationIdentityType": "team"
}
}
}
]
}
この本文
で大事な点が3つあります。
-
mentions
とcontent
で指定しているid
を揃える -
mentionText
と<at>
タグ内のテキストを揃える - チームのIdを使用する
ここを守っていれば、メンションとしての表示名を、チーム名以外にすることもできるようです。
また、displayName
はあってもなくても問題ありませんでした。
チャネルメンション
チャネルメンションを行う場合も、「Microsoft Graph HTTP 要求を送信する」アクションを使用します。
https://graph.microsoft.com/v1.0/teams/@{outputs('チームの取得')?['body/id']}/channels/@{items('それぞれに適用する')?['id']}/messages
チャネル宛てのメンションはconversationIdentityType
をchannel
にします。
{
"body": {
"contentType": "html",
"content": "<div><div><at id=\"0\">@{items('それぞれに適用する')?['displayName']}</at> チャネルメンションもできるよ!</div></div>"
},
"mentions": [
{
"id": 0,
"mentionText": "@{items('それぞれに適用する')?['displayName']}",
"mentioned": {
"conversation": {
"id": "@{items('それぞれに適用する')?['id']}",
"conversationIdentityType": "channel"
}
}
}
]
}
こちらも注意点はチーム宛ての場合と同様です。
結果
結果は以下の通り、すべてのチャネルでチーム・チャネルメンションをそれぞれ行うことができました。
ちょっと不思議な結果
本来、チームメンションができないはずの、プライベートチャネル・共有チャネルでも、Graph API を使うとチームメンションができてしまうようです。
だからと言ってこれといった用途や不都合は思いつきませんが、仕様の違いには注意しておきましょう。