Microsoft Teams 会議の電話会議
この記事では、Azure Communication Services Calling SDK を使用して Microsoft Teams 会議の電話会議の詳細情報を取得する方法について説明します。 この機能により、Microsoft Teams 会議に既に接続しているユーザーは、会議に関連付けられた会議 ID と ダイヤルイン電話番号を取得できます。 Teams 会議の電話会議機能では、すべての有料電話番号とフリーダイヤル番号のコレクションが返されます。 このコレクションには、付随する国/リージョンの名前と市区町村名が含まれ、使用する Teams 会議のダイヤルインの詳細をユーザーが制御できます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- デプロイ済みの Communication Services リソース。 Communication Services リソースを作成します。
- 通話クライアントを有効にするためのユーザー アクセス トークン。 詳細については、 アクセス トークンを作成して管理します。
- 省略可能: クイックスタートを完了して、アプリケーションに音声通話を追加します。
サポート
このセクションでは、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 つの状態があります。
接続済み - Connected
の Call Agent
connectionStatue 値は、クライアント SDK が接続されており、Microsoft インフラストラクチャから通知を受信できることを意味します。
切断済み - Disconnected
の Call Agent
connectionStatue 値は、SDK の正常な接続を妨げる問題があることを示します。 Call Agent
を再作成する必要があります。
invalidToken
: トークンが有効期限切れであるか、無効な場合、Call Agent
インスタンスがこのエラーで切断されます。connectionIssue
: クライアントの Microsoft インフラストラクチャへの接続で問題が発生した場合、何度も再試行した後に、Call Agent
がconnectionIssue
エラーを提示します。
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 状態であることを確認します |