🤔

Microsoft Graph の OnlineMeeting API から会議の情報を取得する

に公開

Teams アプリの会議タブから会議情報を取得する方法が分からず困っています。Microsoft Teams の会議アプリ API は Microsoft Bot Framework SDK に依存しているため、タブ アプリでは利用できません。また、タブ アプリで利用可能な Teams JavaScript クライアント ライブラリ (TeamsJS) でも会議情報の取得はできません。[1]

https://learn.microsoft.com/ja-jp/microsoftteams/platform/apps-in-teams-meetings/meeting-apps-apis?WT.mc_id=M365-MVP-5002941

Microsoft Graph には OnlineMeeting API があり、会議の情報を取得できそうです。

https://learn.microsoft.com/ja-jp/graph/api/onlinemeeting-get?WT.mc_id=M365-MVP-5002941

ただし、会議を取得するためには ビデオ電話会議 ID会議 ID会議参加 URL会議参加 ID のいずれかが必要です。会議 ID で取得できそうに見えますが、TeamsJS の context に含まれる meeting.id とは異なるものです。

OnlineMeeting API の 会議 ID は Base64 エンコードされています。デコードすると 1*{{user-id}}*0**{{chat-id}} の形式の文字列が得られます。{{user-id}} は開催者のオブジェクト ID です。

1*ab6e7d...*0**19:meeting_NDY1Mm...@thread.v2

TeamsJS の meeting.id も Base64 エンコードされており、デコードすると 0#{{chat-id}}#0 の形式の文字列です。

0#19:meeting_NDY1Mm...@thread.v2#0

開催者であれば自身のオブジェクト ID を取得できるため、会議 ID を取得できそうですが、開催者でない場合は取得できません。このフォーマットは内部仕様であり、意図せず仕様変更される可能性があります。

会議参加 URL も以下の形式であり、状況は同じです。

https://teams.microsoft.com/l/meetup-join/{{chat-id}}/0?context={"Tid":"{{tenant-id}}","Oid":"{{user-id}}"

現実的な方法は、Microsoft Graph の Chat API を呼び出すことです。context から chat.id を取得できるため、そこから 会議参加 URL を取得し、OnlineMeeting API を呼び出せるようになります。結果としては解決しますが、もう少し何とかしてほしいところです。

脚注
  1. サーバー側で TeamsConnectorClient を使ってプロキシできる可能性がありますが、あまり情報がないため実現できるかどうかは不明です。 ↩︎

Discussion