Поделиться через


Собрание Microsoft Teams Аудиоконференции

В этой статье описывается, как использовать пакет SDK для вызовов Службы коммуникации Azure для получения сведений о собрании Microsoft Teams Аудиоконференции. Эта функция позволяет пользователям, которые уже подключены к собранию Microsoft Teams, иметь возможность получить идентификатор конференции и номер телефона, связанный с собранием. Функция "Собрание Teams" Аудиоконференции возвращает коллекцию всех платных и бесплатных номеров. Коллекция включает в себя сопутствующие имена стран или регионов и города, предоставляя пользователям контроль над тем, какие сведения о собрании Teams следует использовать.

Необходимые компоненты

Поддержка

В этом разделе описывается поддержка Аудиоконференции в Службы коммуникации Azure.

Удостоверения и типы вызовов

В следующей таблице показана поддержка типов вызовов и удостоверений.

Удостоверения Собрание Teams Комната Вызов 1:1 Групповой вызов Вызов взаимодействия Teams 1:1 Вызов взаимодействия с Группами Teams
Пользователь служб коммуникации ✔️
Пользователь Microsoft 365 ✔️

Операции

В следующей таблице показана поддержка отдельных API-интерфейсов при вызове пакета SDK для отдельных типов удостоверений.

Операции Пользователь служб коммуникации Пользователь Microsoft 365
Получение сведений о аудиоконференции ✔️ ✔️

Пакеты SDK

В следующей таблице показана поддержка функции Аудиоконференции в отдельных пакетах SDK Службы коммуникации Azure.

Платформы Интернет Веб-интерфейс iOS Пользовательский интерфейс iOS Android Пользовательский интерфейс Android Windows
Поддерживается ✔️

Установка пакета SDK

npm install Используйте команду для установки пакета SDK Службы коммуникации Azure Common and Calling SDK для JavaScript:

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

Инициализация обязательных объектов

Экземпляр CallClient требуется для большинства операций вызова. При создании нового CallClient экземпляра его можно настроить с помощью пользовательских параметров, таких как Logger экземпляр.

С помощью экземпляра CallClient можно создать CallAgent экземпляр, вызвав его createCallAgent. Этот метод асинхронно возвращает объект экземпляра CallAgent.

Метод createCallAgent использует CommunicationTokenCredential в качестве аргумента. Он принимает маркер доступа пользователя.

Можно применить метод getDeviceManager для экземпляра CallClient, чтобы получить доступ к 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()

Управление подключением пакета SDK к инфраструктуре Майкрософт

Экземпляр Call Agent помогает управлять вызовами (для присоединения или запуска вызовов). Для работы пакета SDK для вызова необходимо подключиться к инфраструктуре Майкрософт для получения уведомлений о входящих звонках и координации других сведений о вызове. У вас Call Agent есть два возможных состояния:

ПодключеноCall Agent значение Connected connectionStatue означает, что клиентский пакет SDK подключен и способен получать уведомления из инфраструктуры Майкрософт.

ОтключеноCall Agent значение connectionStatue состояний Disconnected возникает проблема, которая препятствует правильному подключению пакета SDK. Call Agent необходимо повторно создать.

  • invalidToken: если срок действия маркера истек или является недопустимым Call Agent экземпляром, отключается с этой ошибкой.
  • connectionIssue: если возникла проблема с клиентом, подключающимся к инфраструктуре Майкрософт, после многих повторных попыток Call Agent возникает connectionIssue ошибка.

Вы можете проверить, подключен ли локальный сервер Call Agent к инфраструктуре Майкрософт, проверив текущее значение connectionState свойства. Во время активного вызова можно прослушивать 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 Сведения о аудиоконференции недоступны перед присоединением к собранию Убедитесь, что объект вызова находится в connected состоянии перед вызовом API для получения сведений о аудиоконференции
403 45953 ExpectedError Сведения о аудиоконференции недоступны в лобби Убедитесь, что объект вызова находится в connected состоянии перед вызовом API для получения сведений о аудиоконференции

Следующие шаги