💻

Teams 会議の参加リンクや会議 ID から meetingId を取得する方法

2024/10/19に公開

Teams 会議の内部 ID を取得する方法

Microsoft Graph API を利用すれば、Microsoft Teams 会議情報も取得できる。例えば、通話記録だったり、会議の参加者情報だったり、レコーディングの情報が API 経由で取得できる。

https://learn.microsoft.com/ja-jp/graph/api/resources/communications-api-overview?view=graph-rest-1.0

ただ、会議情報を取得したい場合、API を利用するには 会議 ID (meetingId) と呼ばれる ID 値が必要になる。
この 会議 ID とは、Teams 会議のインビテーションメールに「会議 ID」と記載されている 12 桁の数字ではなく、内部で定義されている ID を指すため、Microsoft Graph API の利用に慣れていないユーザーは勘違いしやすい。
普段、業務においても「これをどうやって取得すればいいか分からない」「会議 ID 入れているのに情報が取得できない」という相談が多いため、今回は Teams 会議のインビテーションメールに記載されている情報を使用して、内部 ID を取得する手順を紹介したい。

Microsoft Graph Explorer

Microsoft Graph API の実行を試すには、Microsoft Graph Explorer がおすすめ。
これは Delegated (委任されたアクセス許可) のものしか確認できないが、Graph API エンドポイントへのアクセス確認にはとても良いツール。

https://developer.microsoft.com/en-us/graph/graph-explorer

使い方も公式ドキュメントに記載があるので、Graph Explorer を知らない人はこちらも参照することをおすすめする。

https://learn.microsoft.com/ja-jp/graph/graph-explorer/graph-explorer-overview

Graph API アクセス権限

Microsoft Graph API を実行するには、アクセス許可の設定が必要になる。
現状、会議 ID を取得するには、Delegated の場合は OnlineMeetings.Read または OnlineMeetings.ReadWrite の権限が必要であるので、これを付与した上でエンドポイントにアクセスする必要がある。

Delegated と Application の違いについては、過去、私が書いたブログを参照すると良い。

https://techblog.recruit.co.jp/article-272/

会議の参加 URL から内部 ID を取得する

Teams 会議の内部 ID を取得する方法の 1 つとして、インビテーションメールに記載されている 会議の参加 URL (JoinWebUrl) を使用する方法がある。

https://learn.microsoft.com/ja-jp/graph/api/onlinemeeting-get?view=graph-rest-1.0&tabs=http#example-3-retrieve-an-online-meeting-by-joinweburl

会議の参加 URL とは、これのこと。

エンドポイントとしては、/me/onlineMeetings あるいは /users/{userId}/onlineMeetings で、クエリバラメータで会議の参加リンク (joinWebUrl) を入力することで会議情報が取得できる。
Delegated (委任されたアクセス許可) のアクセス権限であれば、自身が開催者や出席者になっている会議情報についてのみ /me エンドポイントで取得することができ、自身に関係ない他者の情報は取得できないため、システムなどにおいて自分の関連する会議情報を取得させたいだけなら、こちらで問題ない。

GET https://graph.microsoft.com/v1.0/me/onlineMeetings?$filter=JoinWebUrl%20eq%20'{joinWebUrl}'

このような形で情報が取得でき、内部 ID が取得できることを確認できる。

自身に関係がない、自分以外のユーザーの会議情報を取得するには、/users/{userId}/onlineMeetings エンドポイントを使用することになる。

GET https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings?$filter=JoinWebUrl%20eq%20'{joinWebUrl}'

ただし、このエンドポイントは Delegated では対応していないため、Application の権限にて使用するのが前提となる。
Delegated の権限でこのエンドポイントにアクセスしようとすると、HTTP 400 エラーとなる。

先のブログ記事にて Delegated と Application の違いについて記載している通り、Application のアクセス権限は強力すぎるため、正直、企業の情シスやセキュリティ担当などの特権を行使できる部署を除き、基本使えないと思って良いと思う。

会議 ID から内部 ID を取得する

会議の参加 URL を使用する以外にもう 1 つの方法として、会議のインビテーションメール内に記載されている方の会議 ID (JoinMeetingId) を使用する方法もある。
ユーザーが会議リンクを画面にコピーペーストできない時などは、12 桁の会議 ID を入力させる方が圧倒的に UX が上がるので、こちらを利用する手もある。

https://learn.microsoft.com/ja-jp/graph/api/onlinemeeting-get?view=graph-rest-1.0&tabs=http#example-4-retrieve-an-online-meeting-by-joinmeetingid

ここでいう会議 ID とは、これのこと。

GET https://graph.microsoft.com/v1.0/me/onlineMeetings?$filter=joinMeetingIdSettings/joinMeetingId%20eq%20'{joinMeetingId}'

実際に入力すると、同じ結果を取得できる。
なお、入力の際、インビテーションメールには会議 ID は 3×4 の 12 桁で数字が表示されており、3 桁ごとに半角空白が入れられているが、joinMeetingId で入力する際は半角空白は不要のため、そのまま 12 桁の数値として入力すること。

また、こちらについても、会議の参加 URL の時と同様、/users エンドポイントでの URL もあるが、基本、通常のアプリケーションが使うことはないだろう。

GET https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings?$filter=joinMeetingIdSettings/joinMeetingId%20eq%20'{joinMeetingId}'

Discussion