Azure Communication Servicesを使ってHoloLens 2からTeams会議に参加する

はじめに

前回の記事ではHoloLens 2でWEBアプリとビデオ通話をしてみました。
今回はHoloLens 2からTeamsのビデオ会議に参加してみたいと思います。

全体の構成は以下の通りです。

環境

Unity 2020.3.11f1
MRTK 2.7.2
azure.communication.calling.1.0.0-beta.29

手順

以下の記事の「ライブラリ導入」までは同じ手順です。
blog.jbs.co.jp

スクリプトは以下のようにします。

using System.Collections.Generic;
using UnityEngine;
using System.Threading.Tasks;
using System;

#if WINDOWS_UWP
using Azure.Communication;
using Azure.WinRT.Communication;
using Azure.Communication.Calling;
#endif

public class CommunicationServices : MonoBehaviour
{
    string tokenCredential = "[ここにAzure Communication ServicesのTokenを挿入]";
    string teamsMeetingUrl = "[ここに参加したいTeamsミーティングURLを挿入]";

#if WINDOWS_UWP
    CallAgent callAgent;
    Call call;
    DeviceManager deviceManager;
    LocalVideoStream[] localVideoStream;
#endif

#if WINDOWS_UWP
    private async Task InitCallAgentAndDeviceManager(string token)
    {
        CallClient callClient = new CallClient();
        deviceManager = await callClient.GetDeviceManager();

        CommunicationTokenCredential token_credential = new CommunicationTokenCredential(token);

        CallAgentOptions callAgentOptions = new CallAgentOptions()
        {
            DisplayName = "Test User"
        };
        callAgent = await callClient.CreateCallAgent(token_credential, callAgentOptions);
     }
#endif

    //Teamsミーティングに参加
    public async void JoinButton_Click()
    {
#if WINDOWS_UWP

        if (deviceManager.Cameras.Count > 0)
        {
            VideoDeviceInfo videoDeviceInfo = deviceManager.Cameras[0];
            localVideoStream = new LocalVideoStream[1];
            localVideoStream[0] = new LocalVideoStream(videoDeviceInfo);
        }

        JoinCallOptions joinCallOptions = new JoinCallOptions();
        joinCallOptions.VideoOptions = new VideoOptions(localVideoStream);
        TeamsMeetingLinkLocator teamsMeetingLinkLocator = new TeamsMeetingLinkLocator(teamsMeetingUrl);
        call = await callAgent.JoinAsync(teamsMeetingLinkLocator, joinCallOptions);
#endif
    }

    //Teamsミーティングから退出
    public async void LeaveButton_Click()
    {
#if WINDOWS_UWP
        await call.HangUpAsync(new HangUpOptions());
#endif
    }


    async void Start()
    {
#if WINDOWS_UWP
        await InitCallAgentAndDeviceManager(tokenCredential);
#endif
    }
}

次にUnityエディタでUIを作ります。
まず空のオブジェクトを作成してスクリプトを追加します。

f:id:jbs_tafurukawa:20220315180043p:plain

次に以下のようにボタン(PressableButtonHoloLens2)を2つ設置します。ここではボタンの名前は「JoinButton」「LeaveButton」としています。
また、以下の画像のようにそれぞれのボタンについて「JoinButton_Click()」「LeaveButton_Click()」をクリック時のイベントに追加します。

f:id:jbs_tafurukawa:20220315180215p:plain
Joinボタンのクリック時のイベントを設定

f:id:jbs_tafurukawa:20220315180306p:plain
LeaveButtonのクリック時のイベントを設定

最後にProject Settings→Player→Publishing Settings→Capabilitiesと進んでいき、以下の3つにチェックを入れます。
・InternetClientServer
・WebCam
・Microphone

f:id:jbs_tafurukawa:20220315181413p:plain:h400

以上で手順は完了です。

アプリの実行

HoloLens 2とTeamsで通信を行う手順は以下の通りです。
1. 【PC側】Teams会議に参加
2. 【HoloLens 2側】先ほど用意したJoinButtonをクリックする
 →スクリプトで指定したTeams会議への参加を試みます
3. 【PC側】Teamsでゲストアクセスのリクエストが表示されるので許可する

以下は実際にアプリを動かしたときのTeams側の様子の静止画です。

動画ではないのでお伝え出来ませんが、Teamsから通信先のHoloLens 2のカメラ映像と音声を確認できています。

参考

クイックスタート: 通話アプリを Teams の会議に参加させる

執筆担当者プロフィール
古川 貴浩

古川 貴浩(日本ビジネスシステムズ株式会社)

HoloLens 2アプリケーションの開発をしています。

担当記事一覧