10
14

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 3 years have passed since last update.

Microsoft Teams の直近の次のミーティングに参加するプログラムの作り方

Last updated at Posted at 2020-08-18

Teams の会議参加依頼メールとかでメール内のリンクをクリックすると Teams が立ち上がって会議参加画面に行くやつありますよね。
あそこに書いてある URL さえ取得できれば、あとは OS ごとの作法に従って URL を起動する API を叩けばいけるはずです。

Xamarin.Forms だと await Xamarin.Essential.Launcher.OpenAsync(オンライン会議のURL); みたいな感じで。

オンライン会議の URL の取得方法

この URL の取得方法ですが Microsoft Graph API でとってこれます。多くのケースで自分の予定の会議をとってくることになると思うので、この API を使うことになります。

イベントを一覧表示する

結果の値にはイベントを表すオブジェクトの配列(生 HTTP API で叩いたときは JSON です)で isOnlineMeeting プロパティでオンラインのミーティングかどうかを確認できる bool 値が取得できます。これが true だったら onlineMeeting.joinUrl の中に目的の URL が入っています。

C# でやると API を叩いて URL ゲットして開く処理は以下のような感じです。

var eventsResult = await _graphServiceClient.Me.Events
    .Request()
    .GetAsync();
var firstOnlineMeeting = eventsResult.FirstOrDefault(x => x.IsOnlineMeeting ?? false);
if (firstOnlineMeeting == null)
{
    await DisplayAlert("Information", "Cound not find an online meeting", "OK");
    return;
}

if (await Launcher.CanOpenAsync(firstOnlineMeeting.OnlineMeeting.JoinUrl))
{
    await Launcher.OpenAsync(firstOnlineMeeting.OnlineMeeting.JoinUrl);
}

_graphServiceClient クラスは Microsoft.Graph パッケージにある Microsoft.Graph.GraphServiceClient クラスのインスタンスです。この API を呼ぶには Calendar.Read のアクセス許可がいるので Azure AD に以下のような権限を付けたアプリを登録して、その ClientId などを使ってサインインしてアクセストークンは事前にゲットしておきましょう。

image.png

動く様子

ボタンのクリックイベントに先ほどのソースコードを張り付けたものを Android で動かすと以下のように動きます。

teams.gif

10
14
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
10
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?