PowerApps│アプリからメンションを付けてTeamsに投稿する方法

こんにちは、あんこ先生です。

アプリからTeamsに投稿するついでに、メンションも付けたくありませんか?

Teams投稿だけでも便利なんですが、受け取る人がそのチャネルを非表示にしていると気づかれません。

反面、メンションを付けることでチャネルの表示設定に関係なく受け取る人に通知されます。

これを使わない手はありませんよね。

そこで今回はアプリからメンションを付けてTeamsに投稿する方法をコード付きで解説します。

メンション先をまとめたタグメンションにも対応しますよ。

アプリからメンションを付けてTeamsに投稿する方法


メンションについて

メンションとは、特定の人に向けた投稿で、名指しされた人に通知やマークが付きます。

これにより通常の投稿と比べ、相手に伝わる可能性が高まります。

Teamsでは@の後にそのチームメンバーを入力することで使用できます。


タグメンションについて

チームごとで固有に設定できるメンションをまとめたものです。

たとえばそのチームの営業メンバーにだけメンションしたいとします。

普通のメンションだと人数分入力が必要ですが、あらかじめタグメンションで設定していればひとつの入力で済みます。

複数者に対してメンションを頻繁に使う場合に向いています。

なお、タグメンションはチーム名横の三点リーダーから設定できます。


Teamsコネクタについて

アプリからTeamsに投稿するには、Teamsコネクタが必要です。

コネクタの接続や投稿方法は別記事にまとめてますのでこちらをご確認ください。

メンションする方法│atタグ

はじめに、メンションおよびタグメンションはHTMLのタグを使用します。

そのため、contentTypeは必ずhtmlに設定しておきましょう。

<at>UPN(ユーザープリンシパル名)</at>

メンションを行うには、atタグでユーザープリンシパル名を囲うだけです。

ユーザープリンシパル名はActiveDirectoryにおけるユーザー名の表記法で、ユーザー名+ドメイン名で構成されています。

厳密にはイコールではありませんが、M365ユーザーであればメアドがそのまま使えるケースが多いですよ。


チームの所属ユーザーを調べる│ListGroupMembers

アプリからメンションを行う場合、チームメンバー以外も指定できてしまいます。

とはいえ、そのチームに所属していないユーザーにメンションしても相手は気づきませんし投稿を見ることもできません。

誰がチームに参加しているのかOffice365グループコネクタを使って、一覧を作成してみましょう。

手順はかんたん、Office365グループコネクタを接続して、適当なギャラリーを用意して下記コードをコピペするだけです。

//適当なギャラリー galListMember.Items
Office365グループ.ListGroupMembers(drpSelTeam.Selected.id).value

//テンプレートのラベル lblName.Text
ThisItem.displayName


メンションしてみる

チームメンバーの一覧をギャラリーに表示できたらもう完成したも同然です。

そのギャラリーからSelected.userPrincipalNameとすればユーザープリンシパル名を取得できます。

あとはPostMessageToChannelV3アクションcontentに下記コードを加えるだけです。

MicrosoftTeams.PostMessageToChannelV3(
    drpSelTeam.Selected.id,
    drpSelChannel.Selected.id,
    {content:"<at>" & galListMember.Selected.userPrincipalName & "</at>" & //←ここ
     "<br>投稿内容",
     contentType:"html"}
)

投稿するとこんな感じです。

メンションのあとに<br>を入れとかないと改行されないので注意ですね。

もちろんユーザープリンシパル名の部分は直接入力しても機能しますよ。

    {content:"<at>nanakusa-anko@anko7793なんたら</at>" & 

タグメンションする方法│attagタグ

つづいてタグメンションのやり方です。

あらかじめタグは作成しておきましょう。

タグメンションに必要な情報はタグIDとグループIDの2つです。

<atTag><tagId>タグID</tagId><groupId>グループID</groupId></atTag>


タグリストを取得する│GetTags

特定チームのタグリストを取得するには、GetTagsアクションを使います。

こちらも適当なギャラリーに展開してみましょう。

指定するプロパティは1つで、グループID=チームIDです。

//適当なギャラリー galSelTag.Items
MicrosoftTeams.GetTags(drpSelTeam.Selected.id).value


//テンプレートのラベル lblTagName.Text
ThisItem.displayName


タグのメンバーリストを取得する│GetTagMembers

ついでなのでタグにどのユーザーが紐づけされているか可視化してみます。

タグメンションするだけなら不要なので飛ばしてもかまいません。

特定タグのユーザーリストを取得するには、GetTagMembersアクションを使います。

これまた適当なギャラリーに展開してみましょう。

指定するプロパティは2つで、タグIDとグループID=チームIDです。

//適当なギャラリー galTagMember.Items
MicrosoftTeams.GetTagMembers(galSelTeam.Selected.id,galSelTag.Selected.id).value

//テンプレートのラベル lblMemnberName.Text
ThisItem.displayName


タグメンションしてみる

おまちかねのタグメンションです。

といってもPostMessageToChannelV3アクションcontentに下記コードを加えるだけです。

通常のメンションと比べタグの数が多いですが必要なのはタグIDとグループIDの2つだけです。

ここまで作ってきている場合はギャラリーからそのまま持ってこれます。

そうでない場合も直接文字を入力すれば機能しますよ。

MicrosoftTeams.PostMessageToChannelV3(
    galSelTeam.Selected.id,
    galSelChannel.Selected.id,
    {content:"<atTag><tagId>" & galSelTag.Selected.id & "</tagId><groupId>" & galSelTag.Selected.teamId & "</groupId></atTag>" //←ここ
     & "<br>タグメンション投稿テスト",contentType:"html"}
)

投稿するとこんな感じです。

こちらも<br>を入れとかないと本文が改行されないので注意です。

アプリからメンションを付けてTeamsに投稿する方法のまとめ

今回はアプリからメンションを付けてTeamsに投稿する方法を紹介しました。

今回も投稿するだけならTeamsから直接行った方が早いです。

タグを使うところと各種IDを調べる手間はかかりますが、それを上回る効果が期待できます。

例えば、アプリで行った作業結果を特定の人やグループ宛にメンション投稿できるので口頭報告が不要になりとても便利です。

contentTypehtmlじゃないとエラーになるところは注意してくださいね。

ご支援よろしくおねがいします

この記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。

下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。

受取人のメールアドレスは amazon@anko7793.com までお願いします。

メッセージもいただけるとたいへん喜びます。

よろしくお願いします。

Amazonギフト券(Eメールタイプ) 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
七草あんこ
非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。主にTwitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。