こんにちは、あんこ先生です。
アプリからTeamsに投稿するついでに、メンションも付けたくありませんか?
Teams投稿だけでも便利なんですが、受け取る人がそのチャネルを非表示にしていると気づかれません。
反面、メンションを付けることでチャネルの表示設定に関係なく受け取る人に通知されます。
これを使わない手はありませんよね。
そこで今回はアプリからメンションを付けてTeamsに投稿する方法をコード付きで解説します。
メンション先をまとめたタグメンションにも対応しますよ。
Contents
アプリからメンションを付けて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を調べる手間はかかりますが、それを上回る効果が期待できます。
例えば、アプリで行った作業結果を特定の人やグループ宛にメンション投稿できるので口頭報告が不要になりとても便利です。
contentTypeがhtmlじゃないとエラーになるところは注意してくださいね。
コメントを残す