次の方法で共有


Microsoft Teams 会議の電話会議

この記事では、Azure Communication Services Calling SDK を使用して Microsoft Teams 会議の電話会議の詳細情報を取得する方法について説明します。 この機能により、Microsoft Teams 会議に既に接続しているユーザーは、会議に関連付けられた会議 ID と ダイヤルイン電話番号を取得できます。 Teams 会議の電話会議機能では、すべての有料電話番号とフリーダイヤル番号のコレクションが返されます。 このコレクションには、付随する国/リージョンの名前と市区町村名が含まれ、使用する Teams 会議のダイヤルインの詳細をユーザーが制御できます。

前提条件

サポート

このセクションでは、Azure Communication Services での電話会議のサポートについて説明しています。

ID と通話の種類

次の表は、サポートする通話と ID の種類を示しています。

ID Teams 会議 ルーム 1 対 1 の通話 グループ通話 1:1 Teams 相互運用機能通話 グループ チームの相互運用機能通話
Communication Services ユーザー ✔️
Microsoft 365 ユーザー ✔️

操作

次の表は、個々の ID の種類に対する SDK の呼び出しにおける個々の API のサポートを示しています。

操作 Communication Services ユーザー Microsoft 365 ユーザー
電話会議の詳細を取得する ✔️ ✔️

SDK

次の表は、個々の Azure Communication Services SDK での電話会議機能のサポートを示しています。

プラットフォーム Web Web UI iOS iOS UI Android Android UI Windows
サポートの有無 ✔️

SDK のインストール

npm install コマンドを使用して、JavaScript 用の Azure Communication Services の Common SDK と Calling SDK をインストールします。

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

必要なオブジェクトを初期化する

CallClient インスタンスは、ほとんどの通話操作に必要です。 新しい CallClient インスタンスを作成する際に、Logger インスタンスなどのカスタム オプションを使用してこれを構成できます。

CallClient インスタンスでは、createCallAgent を呼び出すことで CallAgent インスタンスを作成できます。 このメソッドでは、非同期的に CallAgent インスタンス オブジェクトが返されます。

createCallAgent メソッドでは、CommunicationTokenCredential が引数として使用されます。 これは、ユーザー アクセス トークンを受け取ります。

CallClient インスタンスで getDeviceManager メソッドを使用して、deviceManager にアクセスできます。

const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");

// Set the logger's log level
setLogLevel('verbose');

// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
    console.log(...args); // Redirect log output to console
};

const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()

Microsoft インフラストラクチャへの SDK 接続を最適に管理する方法

Call Agent インスタンスは、(呼び出しを結合または開始するために) 呼び出しを管理するのに役立ちます。 呼び出しの SDK を機能させるには、Microsoft インフラストラクチャに接続して着信呼び出しの通知を取得し、他の呼び出しの詳細を調整する必要があります。 Call Agent には、次の 2 つの状態があります。

接続済み - ConnectedCall Agent connectionStatue 値は、クライアント SDK が接続されており、Microsoft インフラストラクチャから通知を受信できることを意味します。

切断済み - DisconnectedCall Agent connectionStatue 値は、SDK の正常な接続を妨げる問題があることを示します。 Call Agent を再作成する必要があります。

  • invalidToken: トークンが有効期限切れであるか、無効な場合、Call Agent インスタンスがこのエラーで切断されます。
  • connectionIssue: クライアントの Microsoft インフラストラクチャへの接続で問題が発生した場合、何度も再試行した後に、Call AgentconnectionIssue エラーを提示します。

connectionState プロパティの現在の値を調べて、ローカル Call Agent が Microsoft インフラストラクチャに接続されているかどうかを確認できます。 アクティブな呼び出し中に、connectionStateChanged イベントをリッスンして、Call Agent の状態が接続済みから切断済みに変化したかどうかを判断できます。

const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'

const connectionStateCallback = (args) => {
    console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
    // it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);

Microsoft Teams 会議の電話会議は、コア Call API の拡張機能です。 まず、Calling SDK から呼び出し機能をインポートする必要があります。

import { Features} from "@azure/communication-calling";

その後、呼び出しインスタンスからその機能 API オブジェクトを取得することができます。

const audioConferencingFeature = call.feature(Features.TeamsMeetingAudioConferencing);

会議の電話会議の詳細情報を取得する

次の API を使用して会議の電話会議の詳細情報を取得する

try {
     const details: SDK.TeamsMeetingAudioConferencingDetails = audioConferencingFeature.getTeamsMeetingAudioConferencingDetails();
     console.log(`Microsoft Teams Meeting Conference Id: ${details.phoneConferenceId}`);
     details.phoneNumbers.forEach(dialInPhoneNumber => {
        if (dialInPhoneNumber.tollPhoneNumber) { 
            console.log(`Dial-In Toll PhoneNumber: ${dialInPhoneNumber.tollPhoneNumber.phoneNumber}`);
        }
        else if (dialInPhoneNumber.tollFreePhoneNumber) { 
            console.log(`Dial-In TollFree PhoneNumber: ${dialInPhoneNumber.tollFreePhoneNumber.phoneNumber}`);
        } 
        else if (dialInPhoneNumber.countryName) {
            console.log(`Dial-In Country Name: ${dialInPhoneNumber.countryName}`);
        }
        else if (dialInPhoneNumber.cityName) {
            console.log(`Dial-In City Name: ${dialInPhoneNumber.cityName}`);
        }
    })
} catch (e) {
    console.error(e);
}

トラブルシューティング

コード サブコード 結果カテゴリ 理由 解決方法
400 45950 ExpectedError 電話会議機能は Teams 会議でのみ使用できます 構成済みの電話会議を使用して Teams 会議に参加します
405 45951 ExpectedError ACS サービスが電話会議を無効にしました Azure サポート チケットを作成してサポートを要求します
403 45952 ExpectedError 電話会議の詳細は、会議に参加する前には使用できません 電話会議の詳細を取得するために API を呼び出す前に、コール オブジェクトが connected 状態であることを確認します
403 45953 ExpectedError 電話会議の詳細はロビーでは使用できません 電話会議の詳細を取得するために API を呼び出す前に、コール オブジェクトが connected 状態であることを確認します

次のステップ