8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automateを使ってTeamsのチャネルメンション付き投稿をしたい

Posted at

はじめに

Microsoft Team使ってますか?
この記事を見ている方は使ってますよね。
Power Automate使ってますか?
こちらも使ってますよね。

この2つそれぞれはとても便利で、Power AutomateからTeamsへメッセージを送るコネクタも用意されているのでここも楽ができていいんです!
が、Power Automateからの投稿ではチームやチャネルにメンションできないんです:cry:
人やタグに対してならメンションできるんで、チャネルにだってメンションする手段はあるだろう。ということで探し、試した記録です。

おわりにへ記載していますが、すでに同様の悩みをもっていて解決された方の記事を元に自分が触れる環境でも試したよというの投稿です。

結論

Power AutomateのTeams用コネクタでは実現できませんが、
Microsoft Graphを使ってPower AutomateからPOSTリクエストを投げることで実現できます。
チャネルあてにメンションした投稿をするには、こうなりました。
投稿者は、コネクタの接続に利用しているアカウントになります。
connector_setting.png

実現方法

チャネルメンション付き投稿をするまでに大きく2つのステップが必要です。

ステップ1:チームID、チャネルIDを取得する

Graphを使うためにチームとチャネルのIDが必要になります。
これを取得するためにGraph ExplorerなどからID取得のリクエストをしてもよいのですが、自分の使っている環境では叶いませんでした。
取得しようと試みたのですが、permission不足でした。管理者により制限されており、いくつか必要な権限の内1つをリクエストしてみたら、管理者から「どういうこと?」って連絡来ちゃいまして、、、諦めました!
ではどうするかというと、Teamsから取得します。
teams_geturl.png
投稿したいチャネルの「…」をクリックして「チャネルへのリンクを取得」を選びます。
copy_url.png
そして表示されたリンクをコピーします。
(ほとんど塗りつぶしていますが。。)
このリンクはURLエンコードされているため、デコードします。
デコードの方法は何でも良いですが、元記事でも紹介されていたWebサービス(https://meyerweb.com/eric/tools/dencoder/)を使いました。
デコードするとこうなります。
(「*」はマスキングしている箇所です)

デコード前
https://teams.microsoft.com/l/channel/19%3ad0f*************************04bc%40thread.skype/%25E9%2596%258B%25E7%2599%25BA%25E7%2594%25A8%25E3%2581%25A1%25E3%2582%2583%25E3%2581%25AD%25E3%2582%258B?groupId=3c4******************************1b2&tenantId=7ef******************************812
デコード後
https://teams.microsoft.com/l/channel/19:d0f*************************04bc@thread.skype/%E9%96%8B%E7%99%BA%E7%94%A8%E3%81%A1%E3%82%83%E3%81%AD%E3%82%8B?groupId=3c4******************************1b2&tenantId=7ef******************************812

このデコードしたURLからチームIDチャネルIDを取得します。
URLはこのルールで作られています。(元記事と少し違いました)

URLの形式
https://teams.microsoft.com/l/channel/{チャネルID}/{チャネル名}?groupId={チームID}&tenantId={テナントID}

このルールに従って先程のデコード後のURLからチームIDとチャネルIDを抜き出します。

ステップ2:Power Automateでフローを作る

Power Automateで任意のフローを作成または、編集中の場合はメンション付き投稿をしたい箇所を開いて、コネクタを追加します。
この時、「HTTP」で検索するとプレミアムコネクタの「HTTP」がでてきますが、それは使いません。
プレミアムコネクタが使えない環境でもHTTPリクエストをすることができるコネクタがあります。
Office 365 Groupsを探してください。
そしてHTTP 要求を送信しますアクションを選択します。
o365groups.png
次の通り設定します。
本文の形式はMicrosoftサイト(https://learn.microsoft.com/ja-jp/graph/api/chatmessage-post?view=graph-rest-1.0&tabs=javascript#example-7--mention-a-channel-in-a-channel-message)も参考にしてください。

項目
URI https://graph.microsoft.com/v1.0/teams/{チームID}/channels/{チャネルID}/messages
メソッド POST
本文 (テーブル外に記載します)
コンテンツタイプ application/json
本文
{
  "body": {
    "contentType": "html",
    "content": "<at id=\"0\">開発用ちゃねる</at>はろー"
  },
  "mentions": [
    {
      "id": 0,
      "mentionText": "開発用ちゃねる",
      "mentioned": {
                        "conversation": {
                            "id": "{チャネルID}",
                            "conversationIdentityType": "channel"
                        }
      }
    }
  ]
}

これで完成です!
フローを実行するとこんな感じでメッセージが飛びました。
(黒塗りだらけですが)
result.png

おわりに

本記事は
https://www.teijitaisya.com/powerautomate-team-mention/
の内容を元に作業した記録を兼ねています。
元記事の作成、公開に感謝します。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?