2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Teams会議終了後に自動で録画ファイルへのリンクを取得する Power Automate フロー

Posted at

はじめに

Teams会議でレコーディングを行った際に保存される、録画データへのリンクを自動的に取得するフローを作成しました。

image.png

応用すれば、会議への参加記録とともにListsに保存したり、ファイルをOneDriveに保存したりすることができると思います。
今回はリンクを自分宛てにチャットで送信しています。
image.png

取得方法の概要

録画が保存されると、会議のチャットに投稿されるシステムメッセージから、ファイルへのリンクを取得します。
ちなみに、このシステムメッセージからは、他にも会議の開始や終了などの情報取得できます。
image.png

予定表に登録されたイベントの開始をトリガーに、会議のチャットIDを取得し、会議の終了を見計らってメッセージの一覧を取得、リンクの含まれたメッセージをうまく見つけ出し、そこからリンクを取得します。

会議のスレッドIdの取得

フローの全体像です。
make.powerautomate.com_environments_Default-b794cd83-44cc-447c-856e-a27e55624c65_flows_b5e5c0d6-5e05-4e3b-b884-ad35e6b4487f_v3=true(Power Automate).png

このうちの、会議のスレッドIdを取得するところまでは他の記事で書いた内容と同一ですのでそちらをご覧ください。

  • 前回記事

  • 前回記事の元ネタ

会議の終了まで待機

録画が終了して保存が完了してからでないと、録画のリンクを取得することはできません。
そのため、少なくとも会議の終了まで待機するように設定しています。

image.png

必要であれば追加で遅延アクションを設定し、保存が完了するまでの猶予を持たせることもできます。
また、後述の方法をDo untilで取得できるまで繰り返す方法もあるかと思います。

会議スレッドのメッセージ一覧を取得する

会議スレッドIdが取得できたところから解説をはじめます。
ここではchatIdという変数に格納しています。
image.png

それから、取得したメッセージの一覧を格納するための配列型変数も初期化しておきます。
image.png

チャネル会議の場合

まずはチャネル会議の場合です。
チャネル会議の場合、取得したchatIdはチャネルのIdとなっており、別途チームのIdも必要になります。
チームIdの取得方法も前回記事で紹介しています。
image.png

チームId(groupId)、チャネルId(chatId)、スレッドId(messageId)が揃ったらメッセージの一覧を取得します。
取得にはMicrosoft Graph APIを使用します。

image.png

メソッド
GET
URI
https://graph.microsoft.com/v1.0/teams/@{outputs('作成:groupId')}/channels/@{variables('chatId')}/messages/@{variables('messageId')}/replies?$top=50
コンテンツタイプ
application/json

URIの末尾$top=50は、最新のメッセージから順に取得できるメッセージの件数を、最大である50件に設定するためのパラメータです。
録画が通知されてからメッセージの一覧を取得するまでの間に、追加で50件以上のメッセージがあると、最大取得件数を超過し取得できない可能性があります。

取得できたら、メッセージの一覧を変数に格納しておきます。
image.png

変数の設定
@{body('Microsoft_Graph_HTTP_要求を送信する_1')?['value']}

チャネル会議以外の場合

チャネル会議以外の場合、チャットにメッセージが投稿される場合も、同様にMicrosoft Graph APIを使用して、メッセージの一覧を取得します。
チャットの場合とチャネルスレッドの場合は取得方法が異なりますので、URIの違いに注意してください。

image.png

URI
https://graph.microsoft.com/v1.0/me/chats/@{variables('chatId')}/messages?$top=50

こちらも取得結果を変数に格納しておきます。

録画を通知するシステムメッセージを探す

メッセージの一覧から、録画を通知するメッセージを探します。

image.png

取得した結果を見るとそれらしい結果がありました。
リンクのURLや、保存されたファイルの表示名も含まれていますね。
image.png

一覧からこのメッセージに絞り込む条件には、callRecordingStatusを見ると良さそうです。
通話記録、録画の保存が成功したときには、この値がsuccessになります。

image.png

From
@{variables('messages')}
Filter Query
@equals(@{item()?['eventDetail/callRecordingStatus']},'success')

取得したリンクを通知

絞り込んだメッセージから、リンクとファイルの表示名を取り出します。
image.png

変数を初期化する:callRecordingUrl
@{body('アレイのフィルター処理')?[0]?['eventDetail/callRecordingUrl']}
変数を初期化する:callRecordingDisplayName
@{body('アレイのフィルター処理')?[0]?['eventDetail/callRecordingDisplayName']}

リンクが取得できたら、Htmlタグでハイパーリンクを作ってあげて、自分にチャットで通知して完了です!
image.png

おわりに

自分が開催した会議の録画を一覧管理したかったので、何とかフローで自動化してみました。
そもそも会議スレッドの取得が難しい、チャネル会議がちょっと特殊、イベント情報から録画を直接取得する方法がない(なさそう)、といたるところにハードルがあり、フローも複雑になってしまいましたが、なんとか目的は達成できました。

今度はこのリンクから、録画ファイルの有効期限を編集してみようと思っています!

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?