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 などを使ってサインインしてアクセストークンは事前にゲットしておきましょう。
動く様子
ボタンのクリックイベントに先ほどのソースコードを張り付けたものを Android で動かすと以下のように動きます。