- きっかけ
- Teamsコネクタのアクションではサポートされていない
- Graph API でもサポートされていない
- 文書化されていないTeams の ネイティブ API?
- Power Automate クラウドフローでアクセスしてみる
- ついでに確認してみた
- 最後に
きっかけ
Teams チャットのピン留めは、画面一番上に固定表示されなかなか目立ちます。しかし、チャネルのピン留めされたメッセージは情報パネルを表示しないとアクセスできずなかなか気づきにくい状態です。
Power Automate クラウドフローでピン留めされたメッセージの情報が得られないか?と考え調べてみました。
Teamsコネクタのアクションではサポートされていない
まずはTeamsコネクタのアクションを確認しましたが、使えそうなアクションは見当たりません。
「メッセージを取得する」アクションでチャネルのメッセージを取得し、出力を確認しましたが使えそうな情報は持っていないようです。
Graph API でもサポートされていない
Graph API でも チャットのピン留めメッセージの取得についてはページがありますが、チャネルのピン留めに関しては見当たりません。
現時点ではサポートされていないと思われます。
文書化されていないTeams の ネイティブ API?
こちらのページに興味深い内容が載っていました。
チャネルのメッセージをピン留めする手段を調べたページ(chatと書かれていますがchannel)でしたが、Graph API 非対応な機能の為、Webブラウザの開発者モードでブラウザ版Teamsのアクセス先URLを調べてTeams ネイティブのREST APIを探るというアプローチです。
※リンク先のページにも書かれていますが、このアプローチで実現できたとしても、文書化されていない Teams API を使用することになりMSのサポート対象外の使い方になりますので、運用環境では使用しない方が良さそうです。ここから先は興味本位で検証を進めます。
早速真似して調べてみました。
- EdgeでTeamsのチャネルにアクセスし(i)アイコンをクリックし情報パネルを展開しておく
- Edge の開発者モード→Networkを表示しておく
- 1.で開いた情報パネルの「ピン留めされた投稿」をクリック
すると、それっぽいURLが取得できました。
何度か試行しid部分の変化を確認しましたが
https://teams.microsoft.com/api/csa/amer/api/v1/teams/{一般チャネルのchannel id}/channels/{ピン留めの情報を取得したいchannel id}/pins
という形式でいけそうです。
Power Automate クラウドフローでアクセスしてみる
いつものSharePoint コネクタの「SharePoint に HTTP 要求を送信します」アクションで試してみます。
すると取得に成功しました!
こんな感じです。
チャネルでピン留めされているメッセージのリストが取得できています!
ついでに確認してみた
チャネルのメッセージをピン留めする
https://teams.microsoft.com/api/csa/amer/api/v1/teams/{一般チャネルのchannel id}/channels/{メッセージがあるchannel id}/posts/{メッセージID}/pin
※メソッド:POST
チャネルのメッセージのピン止めを解除する
https://teams.microsoft.com/api/csa/amer/api/v1/teams/{一般チャネルのchannel id}/channels/{メッセージがあるchannel id}/posts/{メッセージID}/pin
※メソッド:DELETE
最後に
興味本位で試してみましたが、文書化されていない Teams ネイティブな? API を使用しています。MSのサポート対象外の使い方になりますので、運用環境では使用しない方が良いかと思います。
Graph API でチャネルのピン留めメッセージの情報取得がサポートされるのを待ちましょう!