共用方式為


Microsoft Teams 會議音訊會議

本文說明如何使用 Azure 通訊服務 通話 SDK 來擷取 Teams 會議 音訊會議 詳細數據Microsoft。 此函式可讓已連線到 Microsoft Teams 會議的用戶能夠取得與會議相關聯的會議標識碼和撥入電話號碼。 Teams 會議 音訊會議 功能會傳回所有收費和免付費電話號碼的集合。 集合包含並行國家/地區名稱和城市名稱,讓使用者控制要使用的Teams會議撥入詳細數據。

必要條件

支援

本節說明 Azure 通訊服務 中 音訊會議 的支援。

身分識別和通話類型

下表顯示呼叫和身分識別類型的支援。

身分識別 Teams 會議 會議室 1:1 通話 群組通話 一對一 Teams Interop 通話 群組 Teams Interop 通話
通訊服務使用者 ✔️
Microsoft 365 使用者 ✔️

Operations

下表顯示針對個別身分識別類型呼叫 SDK 中的個別 API 支援。

Operations 通訊服務使用者 Microsoft 365 使用者
取得音訊會議詳細數據 ✔️ ✔️

SDK

下表顯示個別 Azure 通訊服務 SDK 中 音訊會議 功能的支援。

平台 Web Web UI iOS iOS UI Android Android UI Windows
受到支援 ✔️

安裝 SDK

使用 npm install 命令,安裝適用於 JavaScript 的 Azure 通訊服務通用和通話 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 有兩種可能的狀態:

已連線 - ConnectedCall 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 的延伸功能。 您必須先從通話 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 狀態

下一步