다음을 통해 공유


사용자의 기능 관찰

동영상을 켜는 권한이 있나요, 마이크를 켤 수 있는 권한이 있나요, 화면을 공유할 수 있는 권한이 있나요? 이러한 권한은 기능 API에서 알아볼 수 있는 참가자 기능의 몇 가지 예입니다. 기능을 학습하면 로컬 사용자에게 권한이 있는 작업과 관련된 단추만 표시하는 사용자 인터페이스를 빌드하는 데 도움이 될 수 있습니다.

필수 조건

SDK 설치

npm install 명령을 사용하여 다음과 같은 JavaScript용 Azure Communication Services Common 및 통화 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에는 두 가지 상태가 있을 수 있습니다.

연결됨 - Call Agent connectionStatue 값이 Connected이면 클라이언트 SDK가 연결되어 있고 Microsoft 인프라로부터 알림을 받을 수 있음을 의미합니다.

연결 끊김 - DisconnectedCall 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);

기능은 코어 Call API의 확장 기능이며 현재 호출에서 로컬 참가자의 기능을 가져올 수 있습니다.

이 기능을 사용하면 이벤트 수신기에 등록하고 기능 변경 내용을 수신할 수 있습니다.

기능에 등록:

const capabilitiesFeature = this.call.feature(Features.Capabilities);

로컬 참가자의 기능 가져오기: Capabilities 개체는 로컬 참가자의 기능을 가지며 ParticipantCapabilities 형식입니다. 기능 속성에는 다음이 포함됩니다.

  • isPresent는 기능이 있는지 여부를 나타냅니다.
  • reason은 기능 해결 이유를 나타냅니다.
const capabilities =  capabilitiesFeature.capabilities;

capabilitiesChanged 이벤트 구독:

capabilitiesFeature.on('capabilitiesChanged', (capabilitiesChangeInfo) => {
    for (const [key, value] of Object.entries(capabilitiesChangeInfo.newValue)) {
        if(key === 'turnVideoOn' && value.reason != 'FeatureNotSupported') {
             (value.isPresent) ? this.setState({ canOnVideo: true }) : this.setState({ canOnVideo: false });
             continue;
        }
        if(key === 'unmuteMic' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canUnMuteMic: true }) : this.setState({ canUnMuteMic: false });
            continue;
        }
        if(key === 'shareScreen' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canShareScreen: true }) : this.setState({ canShareScreen: false });
            continue;
        }
        if(key === 'spotlightParticipant' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canSpotlight: true }) : this.setState({ canSpotlight: false });
            continue;
        }
        if(key === 'raiseHand' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canRaiseHands: true }) : this.setState({ canRaiseHands: false });
            continue;
        }
        if(key === 'muteOthers' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canMuteOthers: true }) : this.setState({ canMuteOthers: false });
            continue;
        }
        if(key === 'reaction' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canReact: true }) : this.setState({ canReact: false });
            continue;
        }
    }
});

노출된 기능

  • turnVideoOn: 비디오를 켜는 기능
  • unmuteMic: 마이크를 켜는 기능
  • shareScreen: 화면을 공유하는 기능
  • removeParticipant: 참가자를 제거하는 기능
  • hangUpForEveryOne: 모든 사람에 대한 전화 끊기 기능
  • addCommunicationUser: 통신 사용자를 추가하는 기능
  • addTeamsUser: Teams 사용자를 추가하는 기능
  • addPhoneNumber: 전화 번호를 추가하는 기능
  • manageLobby: 로비를 관리하는 기능(베타 전용)
  • spotlightParticipant: 참가자를 스포트라이트하는 기능(베타 전용)
  • removeParticipantsSpotlight: 참가자 스포트라이트를 제거하는 기능(베타 전용)
  • startLiveCaptions: 라이브 캡션을 시작하는 기능(베타 전용)
  • stopLiveCaptions: 라이브 캡션을 중지하는 기능(베타 전용)
  • raiseHand: 손 들기 기능(베타 전용)
  • muteOthers: 모임에서 원격 참가자를 일시 음소거하는 기능
  • reaction: 모임에서 반응하는 기능(베타 전용)
  • viewAttendeeNames: 모임에서 참석자 이름을 볼 수 있는 기능

SDK 설치

프로젝트 수준 build.gradle 파일을 찾아 다음 아래 buildscript allprojects의 리포지토리 목록에 추가 mavenCentral() 합니다.

buildscript {
    repositories {
    ...
        mavenCentral()
    ...
    }
}
allprojects {
    repositories {
    ...
        mavenCentral()
    ...
    }
}

그런 다음, 모듈 수준 build.gradle 파일에서 섹션에 다음 줄을 dependencies 추가합니다.

dependencies {
    ...
    implementation 'com.azure.android:azure-communication-calling:1.0.0'
    ...
}

필요한 개체 초기화

CallAgent 인스턴스를 만들려면 CallClient 인스턴스에서 createCallAgent 메서드를 호출해야 합니다. 이 호출은 CallAgent 인스턴스 개체를 비동기적으로 반환합니다.

createCallAgent 메서드는 CommunicationUserCredential을 인수로 사용하여 액세스 토큰을 캡슐화합니다.

DeviceManager에 액세스하려면 먼저 callAgent 인스턴스를 만들어야 합니다. 그런 다음 CallClient.getDeviceManager 메서드를 사용하여 DeviceManager를 가져올 수 있습니다.

String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential).get();
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();

호출자의 표시 이름을 설정하려면 다음과 같은 대체 방법을 사용합니다.

String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgentOptions callAgentOptions = new CallAgentOptions();
callAgentOptions.setDisplayName("Alice Bob");
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential, callAgentOptions).get();

기능은 코어 Call API의 확장 기능이며 현재 호출에서 로컬 참가자의 기능을 가져올 수 있습니다.

이 기능을 사용하면 이벤트 수신기에 등록하고 기능 변경 내용을 수신할 수 있습니다.

Windows용 기능 호출 기능을 사용하기 위한 첫 번째 단계는 기능(Capabilities) 기능 API 개체를 가져오는 것입니다.

기능(Capabilities) 가져오기

private CapabilitiesCallFeature capabilitiesCallFeature;
capabilitiesCallFeature = call.feature(Features.CAPABILITIES);

로컬 참가자의 역량 확보

기능 개체는 로컬 참가자의 기능을 가지며 ParticipantCapability 형식입니다. 기능 속성에는 다음이 포함됩니다.

  • isAllowed는 기능을 사용할 수 있는지 여부.
  • reason은 기능 해결 이유를 나타냅니다.
List<ParticipantCapability> capabilities = capabilitiesCallFeature.getCapabilities();

capabilitiesChanged 이벤트 구독


capabilitiesCallFeature.addOnCapabilitiesChangedListener(this::OnCapabilitiesChanged);

private void OnCapabilitiesChanged(CapabilitiesChangedEvent args)
{
    String event = String.format("Capabilities Event: %s", args.getReason().toString());
    Log.i("CapabilitiesInfo", event);
    for (ParticipantCapability capability : args.getChangedCapabilities())
    {
        Log.i("CapabilitiesInfo", capability.getType().toString() + " is " capability.getReason().toString());
    }
}

노출된 기능

  • TurnVideoOn: 동영상을 켜는 기능
  • UnmuteMicrophone: 마이크 음소거를 해제하는 기능
  • ShareScreen: 화면을 공유하는 기능
  • RemoveParticipant: 참가자를 제거하는 기능
  • HangUpForEveryone: 모든 사람에 대한 전화 끊기 기능
  • AddCommunicationUser: 통신 사용자를 추가하는 기능
  • AddTeamsUser: Teams 사용자를 추가하는 기능
  • AddPhoneNumber: 전화 번호를 추가하는 기능
  • ManageLobby: 로비를 관리하는 기능
  • SpotlightParticipant: 참가자를 스포트라이트하는 기능
  • RemoveParticipantSpotlight: 참가자 스포트라이트를 제거하는 기능
  • BlurBackground: 백그라운드를 흐리게 하는 기능
  • CustomBackground: 사용자 지정 백그라운드를 적용하는 기능
  • StartLiveCaptions: 실시간 자막을 시작하는 기능
  • RaiseHand: 손을 드는 기능
  • MuteOthers: 모임에서 원격 참가자를 일시 음소거하는 기능

시스템 설정

다음 단계에 따라 시스템을 설정합니다.

Visual Studio 프로젝트 만들기

유니버설 Windows 플랫폼 앱의 경우 Visual Studio 2022에서 새 빈 앱(유니버설 Windows) 프로젝트를 만듭니다. 프로젝트 이름을 입력한 다음 10.0.17763.0보다 버전이 높은 Windows SDK를 아무거나 선택합니다.

WinUI 3 앱의 경우, 빈 앱, 패키지됨(데스크톱의 WinUI 3) 템플릿으로 새 프로젝트를 만들어 한 페이지 짜리 WinUI 3 앱을 설정합니다. Windows 앱 SDK 버전 1.3 이상이 필요합니다.

NuGet 패키지 관리자를 사용하여 패키지와 종속성 설치

Calling SDK API와 라이브러리는 NuGet 패키지를 통해 공개적으로 사용할 수 있습니다.

호출 SDK NuGet 패키지를 찾고, 다운로드하고, 설치하려면 다음을 수행합니다.

  1. 도구>NuGet 패키지 관리자>솔루션용 NuGet 패키지 관리를 선택해 NuGet 패키지 관리자를 엽니다.
  2. 찾아보기를 선택한 다음 검색 상자에 Azure.Communication.Calling.WindowsClient를 입력합니다.
  3. 시험판 포함 확인란이 선택되어 있는지 확인합니다.
  4. Azure.Communication.Calling.WindowsClient 패키지를 선택한 다음, Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 이상 버전을 선택합니다.
  5. 오른쪽 창에서 Azure Communication Services 프로젝트에 해당하는 확인란을 선택합니다.
  6. 설치를 선택합니다.

기능은 코어 Call API의 확장 기능이며 현재 호출에서 로컬 참가자의 기능을 가져올 수 있습니다.

이 기능을 사용하면 이벤트 수신기에 등록하고 기능 변경 내용을 수신할 수 있습니다.

Windows용 기능 호출 기능을 사용하기 위한 첫 번째 단계는 기능(Capabilities) 기능 API 개체를 가져오는 것입니다.

기능(Capabilities) 가져오기

private CapabilitiesCallFeature capabilitiesCallFeature;
capabilitiesCallFeature = call.Features.Capabilities;

로컬 참가자의 역량 확보

기능 개체는 로컬 참가자의 기능을 가지며 ParticipantCapability 형식입니다. 기능 속성에는 다음이 포함됩니다.

  • isAllowed는 기능을 사용할 수 있는지 여부.
  • reason은 기능 해결 이유를 나타냅니다.
var capabilities = capabilitiesCallFeature.Capabilities;

capabilitiesChanged 이벤트 구독

capabilitiesCallFeature.CapabilitiesChanged += Call__OnCapabilitiesChangedAsync;

private async void Call__OnCapabilitiesChangedAsync(object sender, CapabilitiesChangedEventArgs args)
{
    Trace.WriteLine(args.Reason.ToString());
    foreach (var capability in args.ChangedCapabilities)
    {
        //Prints out capability kind and resolution reason in console
        Trace.WriteLine(capability.Kind.ToString() + " is " + capability.Reason.ToString());
    }
}

노출된 기능

  • TurnVideoOn: 동영상을 켜는 기능
  • UnmuteMicrophone: 마이크 음소거를 해제하는 기능
  • ShareScreen: 화면을 공유하는 기능
  • RemoveParticipant: 참가자를 제거하는 기능
  • HangUpForEveryone: 모든 사람에 대한 전화 끊기 기능
  • AddCommunicationUser: 통신 사용자를 추가하는 기능
  • AddTeamsUser: Teams 사용자를 추가하는 기능
  • AddPhoneNumber: 전화 번호를 추가하는 기능
  • ManageLobby: 로비를 관리하는 기능
  • SpotlightParticipant: 참가자를 스포트라이트하는 기능
  • RemoveParticipantSpotlight: 참가자 스포트라이트를 제거하는 기능
  • BlurBackground: 백그라운드를 흐리게 하는 기능
  • CustomBackground: 사용자 지정 백그라운드를 적용하는 기능
  • StartLiveCaptions: 실시간 자막을 시작하는 기능
  • RaiseHand: 손을 드는 기능
  • MuteOthers: 모임에서 원격 참가자를 일시 음소거하는 기능

시스템 설정

다음 단계에 따라 시스템을 설정합니다.

Xcode 프로젝트 만들기

Xcode에서 새 iOS 프로젝트를 만들고 단일 보기 앱 템플릿을 선택합니다. 이 문서에서는 SwiftUI 프레임워크를 사용하므로 언어를 Swift로 설정하고 인터페이스SwiftUI설정해야 합니다.

이 문서에서는 테스트를 만들지 않을 것입니다. 테스트 포함 확인란을 선택 취소합니다.

Xcode 내에서 프로젝트를 만드는 창을 보여주는 스크린샷.

CocoaPods를 사용하여 패키지 및 종속성 설치

  1. 다음 예제와 같이 애플리케이션에 대한 Podfile을 만듭니다.

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. pod install를 실행합니다.

  3. Xcode로 .xcworkspace를 엽니다.

마이크에 대한 액세스 요청

디바이스의 마이크에 액세스하려면 앱의 정보 속성 목록을 NSMicrophoneUsageDescription(으)로 업데이트해야 합니다. 연결된 값을 시스템에서 사용자의 액세스를 요청하는 데 사용하는 대화 상자에 포함된 문자열로 설정합니다.

프로젝트 트리의 Info.plist 항목을 마우스 오른쪽 단추로 클릭한 다음 Open As>Source Code를 선택합니다. 최상위 <dict> 섹션에 다음 줄을 추가한 다음, 파일을 저장합니다.

<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>

앱 프레임워크 설정

프로젝트의 ContentView.swift 파일을 엽니다. AzureCommunicationCalling 라이브러리를 가져오려면 파일 상단에 import 선언을 추가합니다. 추가로 AVFoundation을 가져옵니다. 코드의 오디오 권한 요청에 필요합니다.

import AzureCommunicationCalling
import AVFoundation

CallAgent 초기화

CallAgent에서 CallClient 인스턴스를 만들려면 초기화된 후 비동기적으로 callClient.createCallAgent 개체를 반환하는 CallAgent 메서드를 사용해야 합니다.

호출 클라이언트를 만들려면 CommunicationTokenCredential 개체를 전달합니다.

import AzureCommunication

let tokenString = "token_string"
var userCredential: CommunicationTokenCredential?
do {
    let options = CommunicationTokenRefreshOptions(initialToken: token, refreshProactively: true, tokenRefresher: self.fetchTokenSync)
    userCredential = try CommunicationTokenCredential(withOptions: options)
} catch {
    updates("Couldn't created Credential object", false)
    initializationDispatchGroup!.leave()
    return
}

// tokenProvider needs to be implemented by Contoso, which fetches a new token
public func fetchTokenSync(then onCompletion: TokenRefreshOnCompletion) {
    let newToken = self.tokenProvider!.fetchNewToken()
    onCompletion(newToken, nil)
}

직접 만든 CommunicationTokenCredential 개체를 CallClient에 전달하고 표시 이름을 설정합니다.

self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS Azure Communication Services User"

self.callClient!.createCallAgent(userCredential: userCredential!,
    options: callAgentOptions) { (callAgent, error) in
        if error == nil {
            print("Create agent succeeded")
            self.callAgent = callAgent
        } else {
            print("Create agent failed")
        }
})

기능은 코어 Call API의 확장 기능이며 현재 호출에서 로컬 참가자의 기능을 가져올 수 있습니다.

이 기능을 사용하면 이벤트 수신기에 등록하고 기능 변경 내용을 수신할 수 있습니다.

Windows용 기능 호출 기능을 사용하기 위한 첫 번째 단계는 기능(Capabilities) 기능 API 개체를 가져오는 것입니다.

기능(Capabilities) 가져오기

let capabilitiesCallFeature =call.feature(Features.capabilities)

로컬 참가자의 역량 확보

기능 개체는 로컬 참가자의 기능을 가지며 ParticipantCapability 형식입니다. 기능 속성에는 다음이 포함됩니다.

  • isAllowed는 기능을 사용할 수 있는지 여부.
  • reason은 기능 해결 이유를 나타냅니다.
var capabilities = capabilitiesCallFeature.capabilities

capabilitiesChanged 이벤트 구독


capabilitiesCallFeature.delegate = CapabilitiesCallDelegate()

public class CapabilitiesCallDelegate : CapabilitiesCallFeatureDelegate
{
    public func capabilitiesCallFeature(_ capabilitiesCallFeature: CapabilitiesCallFeature, didChangeCapabilities args: CapabilitiesChangedEventArgs) {
        let changedReason = args.reason
        let changedCapabilities = args.changedCapabilities
    }
}

노출된 기능

  • TurnVideoOn: 동영상을 켜는 기능
  • UnmuteMicrophone: 마이크 음소거를 해제하는 기능
  • ShareScreen: 화면을 공유하는 기능
  • RemoveParticipant: 참가자를 제거하는 기능
  • HangUpForEveryone: 모든 사람에 대한 전화 끊기 기능
  • AddCommunicationUser: 통신 사용자를 추가하는 기능
  • AddTeamsUser: Teams 사용자를 추가하는 기능
  • AddPhoneNumber: 전화 번호를 추가하는 기능
  • ManageLobby: 로비를 관리하는 기능
  • SpotlightParticipant: 참가자를 스포트라이트하는 기능
  • RemoveParticipantSpotlight: 참가자 스포트라이트를 제거하는 기능
  • BlurBackground: 백그라운드를 흐리게 하는 기능
  • CustomBackground: 사용자 지정 백그라운드를 적용하는 기능
  • StartLiveCaptions: 실시간 자막을 시작하는 기능
  • RaiseHand: 손을 드는 기능
  • MuteOthers: 모임에서 원격 참가자를 일시 음소거하는 기능

지원되는 통화 유형

이 기능은 현재 Azure Communication Services Rooms 통화 유형 및 팀 모임 통화 유형에 대해서만 지원됩니다.

이유

다음 표에서는 작업을 사용할 수 없는 이유에 대한 추가 정보를 제공하고 작업을 사용할 수 있도록 하는 방법에 대한 팁을 제공합니다.

이유 설명 해결 방법
가능 작업이 허용됩니다.
CapabilityNotApplicableForTheCallType 통화 유형이 작업을 차단합니다. 이 작업이 필요한 경우 다른 유형의 통화를 고려합니다. 통화 유형에는 1:1 통화, 그룹 통화, 1:1 Teams interop 통화, 1:1 Teams interop 그룹 통화, 소회의실 및 모임이 있습니다.
ClientRestricted 런타임 환경이 이 작업을 차단하고 있습니다. 운영 체제, 브라우저, 플랫폼 또는 하드웨어를 변경하여 디바이스에서 작업을 차단 해제합니다. 지원되는 환경은 설명서에서 찾을 수 있습니다.
UserPolicyRestricted Microsoft 365 사용자의 정책은 작업을 차단합니다. ACS SDK를 사용하여 모임 주최자, 통화 개시자 또는 Microsoft 365 사용자에게 할당된 정책을 변경하여 이 작업을 사용하도록 설정합니다. 대상 사용자는 작업 유형에 따라 달라집니다. Teams의 Teams 정책에 대해 자세히 알아보세요. Teams 관리자는 정책을 변경할 수 있습니다.
RoleRestricted 할당된 역할은 작업을 차단합니다. 작업을 사용할 수 있도록 사용자를 다른 역할로 승격합니다.
FeatureNotSupported 이 통화 유형에서는 기능 기능이 지원되지 않습니다. Azure 피드백 채널에서 이 통화 유형에 사용하고 싶은 기능을 알려주세요.
MeetingRestricted Teams 모임 옵션이 작업을 차단합니다. Teams 모임 주최자 또는 공동 주최자가 이 작업을 사용하도록 설정하려면 모임 옵션을 변경해야 합니다.
NotInitialized 기능 기능은 아직 초기화되지 않았습니다. this.call.feature(Features.Capabilities)에서 이벤트 capabilitiesChanged를 구독하여 기능이 초기화되는 시기를 알 수 있습니다.
NotCapable 사용자 유형이 작업을 차단합니다. 작업은 특정 유형의 ID에만 허용됩니다. Microsoft 365 ID를 사용하여 이 작업을 사용하도록 설정합니다.
TeamsPremiumLicenseRestricted Microsoft 365 사용자에게 Teams Premium 라이선스가 할당되어 있어야 합니다. SDK를 사용하여 Teams 모임 주최자 또는 Microsoft 365 사용자에게 Teams Premium 라이선스를 할당하여 이 작업을 사용하도록 설정합니다. 대상 사용자는 작업 유형에 따라 달라집니다. Microsoft 365 관리자는 필요한 라이선스를 할당할 수 있습니다.
ExplicitConsentRequired 작업을 허용하려면 동의가 필요합니다. 아래 this.call.feature(Features.Recording) 또는 this.call.feature(Features.Transcription) .에서 메서드 grantTeamsConsent() 를 호출하여 기록 또는 전사에 대한 동의를 제공합니다.

다음 단계