사용자의 기능 관찰
동영상을 켜는 권한이 있나요, 마이크를 켤 수 있는 권한이 있나요, 화면을 공유할 수 있는 권한이 있나요? 이러한 권한은 기능 API에서 알아볼 수 있는 참가자 기능의 몇 가지 예입니다. 기능을 학습하면 로컬 사용자에게 권한이 있는 작업과 관련된 단추만 표시하는 사용자 인터페이스를 빌드하는 데 도움이 될 수 있습니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 배포된 Communication Services 리소스. Communication Services 리소스 만들기
- 호출 클라이언트를 사용하도록 설정하는 사용자 액세스 토큰입니다. 자세한 내용은 액세스 토큰 만들기 및 관리를 참조하세요.
- 선택 사항: 빠른 시작을 완료하여 애플리케이션에 음성 통화를 추가합니다.
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 인프라로부터 알림을 받을 수 있음을 의미합니다.
연결 끊김 - 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);
기능은 코어 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 패키지를 찾고, 다운로드하고, 설치하려면 다음을 수행합니다.
- 도구>NuGet 패키지 관리자>솔루션용 NuGet 패키지 관리를 선택해 NuGet 패키지 관리자를 엽니다.
- 찾아보기를 선택한 다음 검색 상자에 Azure.Communication.Calling.WindowsClient를 입력합니다.
- 시험판 포함 확인란이 선택되어 있는지 확인합니다.
- Azure.Communication.Calling.WindowsClient 패키지를 선택한 다음, Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 이상 버전을 선택합니다.
- 오른쪽 창에서 Azure Communication Services 프로젝트에 해당하는 확인란을 선택합니다.
- 설치를 선택합니다.
기능은 코어 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로 설정해야 합니다.
이 문서에서는 테스트를 만들지 않을 것입니다. 테스트 포함 확인란을 선택 취소합니다.
CocoaPods를 사용하여 패키지 및 종속성 설치
다음 예제와 같이 애플리케이션에 대한 Podfile을 만듭니다.
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
pod install
를 실행합니다.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() 를 호출하여 기록 또는 전사에 대한 동의를 제공합니다. |