この記事ではPower Automateでチームメンション・チャネルメンションを使う方法について学習します。
この記事でわかること
- Power AutomateでTeamsにチームメンション付きメッセージを送信する方法
- Power AutomateでTeamsにチャネルメンション付きメッセージを送信する方法
チームメンション・チャネルメンションを送る方法は?
まずPower Automateのメンションの基本のおさらいしましょう。
Power Automateのメンションを付けるにはTeamsコネクタの「ユーザーの@mentionトークンを取得する」アクションを使うのが基本で一番簡単かと思います。
しかし、このアクションはチームメンション・チャネルメンション・タグメンションなどには対応していないため、チーム全員へメンションを付けるには不便です。(2021年12月現在)
以前書いた記事ではループ処理を使って強引にチームメンバー全員のメンショントークンを付ける方法を紹介しましたがこの方法では宛先メンバーの数が増えるとメンショントークンの文字列がずらーっと並んでしまい不格好でした。(下記の記事参照ください)
Microsoft 365 groupsコネクタの「HTTP要求を送信します」アクションを使います。
そこで、上記の方法以外でチームメンション・チャネルメンションを使用する方法を調べたところMicrosoft Graph APIを使ってメンション付きメッセージを送信する方法があるということがわかりました。
Graph APIとは、Microsoftが提供するAPIでTeamsなどのMicrosoftの様々なクラウドサービスにアクセスするための窓口的役割を担っています。Graph APIにHTTP Requestを送信すればTeamsにメンション付きメッセージを送信できるようです。
では「Power AutomateからHTTP Reqestを送信する方法はどのようなコネクタがあるのか?」ということなのですが、いくつかあるのですが今回はMicrosoft 365 groupsコネクタの「HTTP要求を送信します」アクションを使う方法を紹介します。このアクションはプレミアムコネクタではありませんので、Microsoft 365に付属するPower Automate for Microsoft 365のライセンスの範囲でも使用することができます。有料版Power Automateを契約していない環境でご利用されている方にオススメの方法です。
Graph APIの参考ページ
この記事で紹介する内容は下記のGraph APIのリファレンスを参考にしました。
事前準備
チームIDとチャネルIDを取得しましょう。
Graph APIからチームメンション・チャネルメンション付きメッセージを送信するには、チームIDとチャネルIDが必要です。チームIDはチームを識別するための固有のID・チャネルIDです。
Graph APIでチームメンション・チャネルメンションに必要なもの!
- チームID
- すべてのチームが持つ固有の識別子
- チャネルID
- すべてのチャネルが持つ固有の識別子
チームIDとチャネルIDを取得する方法は?
チームIDとチャネルIDを取得する方法はいくつかありますが、2つの方法を紹介します。どちらかの方法を参考に取得してください。
Teamsアプリケーションから取得する方法がわかりやすいかなと思います。
チームIDとチャネルIDを取得する2つの方法!
- Teamsアプリケーションから取得する
- Graph API Explorerで取得する
TeamsアプリからチームID・チャネルIDを取得する方法
▲表示されたURLをコピーしましょう。このURLにチームIDもチャネルIDも含まれています。
取得したURLにチームIDとチャネルIDが含まれているわけですが、エンコードされているのでまずはデコードします。デコードする方法はいろいろありますがわたしは下記のWebサービスを利用しました。
https://meyerweb.com/eric/tools/dencoder/
▲上記の無料WebサービスにTeamsから取得したURLを張り付けて「Decode」ボタンをクリックするとデコードできます。
https://teams.microsoft.com/l/channel/{チャネルID}/Mention?groupId={チームID}&tenantId=tenandID
▲デコードしたURLは上記のような文字列で構成されています。チャネルIDの部分(オレンジ)とチームID(グリーン)の部分をどこかにコピーしておきましょう。Power Automateフローを作成する時に使用します。
Graph API ExplorerからチームID・チャネルIDを取得する方法
Graph API Explorerのくわしい使い方については省略します。下記の記事をあわせてご覧いただくとわかりやすいかなと思います。
▲ (GET)my joined teamsクエリを実行してチームIDを取得します。
クエリ(GET)
https://graph.microsoft.com/v1.0/me/joinedTeams
▲チームIDを取得できましたら次のクエリを実行します。
①左側メニューの「channels of a team which I am member of」というクエリ をクリックします。②クエリに先ほど取得したチャネルIDを挿入して、③Run Queryボタンをクリックします。④チャネル一覧が表示されるのでターゲットとなるチャネルのIDをコピーします。
クエリ(GET)
https://graph.microsoft.com/v1.0/teams/{team-id}/channels
▲「channels of a team which I am member of」クエリ。マーカー部分にSTEP3で入手したチームIDに差し替えてクエリを実行します。
Power Automate フロー作成手順
チームID・チャネルIDを取得できましたのでフローを作成していきましょう!
▲まずはこれから作成するフローの完成図をお見せします(上図)。下の2つの「HTTP要求を送信します」アクションがTeamsにメッセージを送信する役割です。
ここではテストのために2つ「HTTP要求を送信します」アクションを使っています。1つがチームメンション、もう1つがチャネルメンションを付けてメッセージを送信しています。
今回はテストのためにインスタントクラウドフローで作成します。
▲左側メニューの「作成」をクリックします。インスタントクラウドフローをクリックします。
▲フロー名を入力して「手動でフローをトリガーします」をトリガーに選択して「作成」をクリックします。
▲「変数」コネクタ>「変数を初期化する」アクションを追加します。この変数はTeamsに送信するメッセージの本文を格納しています。パラメータは下記のように入力しました。
- 名前:本文
- 種類:文字列
- 値:Teamsで送信するメッセージの本文です。HTML形式で記述します。今回は下記のように記述しました。
<p>お疲れ様です!</p> <p>このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。このメッセージはテストのメッセージです。</p> <ul> <li>テストのリスト1</li> <li>テストのリスト2</li> <li>テストのリスト3</li> </ul> <p>以上、よろしくお願いします。</p>
▲今回は上記のようにメッセージを作成しました。HTMLを簡単に入力する方法はこちらで紹介しています。
Graph APIを使う場合、Teamsに送信するメッセージ本文はHTMLで記述しないといけませんので注意してくださいね。
▲「変数」コネクタ>「変数を初期化する」アクションを追加します。前の項で取得したチームIDを格納します。
- 名前:チームID
- 種類:文字列
- 値:チームIDを張り付けます。
▲「変数」コネクタ>「変数を初期化する」アクションを追加します。前の項で取得したチャネルIDを格納します。
- 名前:チャネルID
- 種類:文字列
- 値:チャネルIDを張り付けます。
▲「Microsoft 365 Groups」コネクタの「HTTP要求を送信します」アクションを追加します。
- URI:https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
- メソッド:POST
- 本文:下記のように入力しました。
{ "body": { "contentType": "html", "content": "@{variables('本文')}<at id=\"0\">All team members</at>" }, "mentions": [ { "id": 0, "mentionText": "All team members", "mentioned": { "conversation": { "id": "@{variables('チームID')}", "conversationIdentityType": "team" } } } ] }
URIは、下記のURIの{チームID}と{チャネルID}の部分をご自身の環境のIDに差し替えて指定してください。
URI
https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
▲「Microsoft 365 Groups」コネクタの「HTTP要求を送信します」アクションを追加します。
- URI:https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
- メソッド:POST
- 本文:下記のように入力しました。
{ "body": { "contentType": "html", "content": "@{variables('本文')}<at id=\"0\">一般</at>" }, "mentions": [ { "id": 0, "mentionText": "一般", "mentioned": { "conversation": { "id": "@{variables('チャネルID')}", "conversationIdentityType": "channel" } } } ] }
URIは、下記のURIの{チームID}と{チャネルID}の部分をご自身の環境のIDに差し替えて指定してください。
URI
https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
フローは完成です。テスト実行をしてみます。
▲上図がチームメンションです。チームメンションのメンション文字列はチーム名と異なる文字列を使うこともできます。
「HTTP要求を送信します」アクションのまとめ
チームメンションとチャネルメンションの違い
「HTTP要求を送信します」アクションのJSONのここが違います。
▲図の赤枠の部分が異なります。
"conversation": { "id": "チームID", "conversationIdentityType": "team" }
"conversation": { "id": "チャネルID", "conversationIdentityType": "channel" }
エラー「Neither Body nor adaptive card content contains marker for mention with Id ‘0’. Add ‘****’ to the body or an adaptive card.」
Neither Body nor adaptive card content contains marker for mention with Id ‘0’. Add ‘****’ to the body or an adaptive card.
▲Power Automateに上記のエラーがでた場合、JSONの中身に誤りがある可能性があります。下記を参考にしてください。
▲bodyの中のContentで使用するid・メンションテキストと、mentionsに設定しているid・mentionTextは揃えてください(上図)。逆にいうと、ここが揃えてあればチーム名とは異なるメンションテキストでチームメンションできます。例えば私はtejilaboというチームに所属していますが、そのチームに「チームメンバー各位」というメンションテキストでチームメンションすることができます。
エンドポイントURI
URI
https://graph.microsoft.com/beta/teams/{チームID}/channels/{チャネルID}/ messages
▲チームメンションもチャネルメンションも、どちらを使用する場合もGraph APIのエンドポイントは同じです。
メッセージ本文に渡すHTMLを簡単に書く方法は?
Graph APIを使用する場合、メッセージ本文はHTMLで書かないといけません。(Mrakdownも使えるかもしれませんが使い方わかりませんでした)HTMLタグを使って自分で記述しても良いのですが面倒です。楽をする方法として「オンラインHTMLエディタ」という無料サービスを利用してHTMLを生成する方法を紹介します。
HTMLが簡単にかけるよ。
▲図の赤枠に送信するメッセージを入力します。上部メニューには、強調表示・リスト・番号付きリスト・表組みなどのメニューがありますのでこれらを使って見栄えよく文章を整形しましょう。
▲メッセージを入力したらメニューの右のほうにある「<>(ソースコード)」をクリックします。
▲ユーザーが入力した文字列からHTMLタグを含めたテキストを生成してくれます。コピーして利用しましょう。<body>タグは含めないように注意してくださいね。
タグメンションを付ける方法は?
Power Automateからタグメンションを付けてメッセージを送信する方法はわかりませんでした。わかれば記事を書こうと思います。
Microsoft 365 グループに設定した役職などの属性を使ってメンションを付ける方法は下記の記事が参考になるかもしれません。
まとめ
以上、この記事ではPower Automateからチームメンション・チャネルメンション付きメッセージを送信する方法について学習しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。