클라이언트에서 통화 녹음/녹화 관리
Important
이 문서에 설명된 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
통화 녹음/녹화를 사용하면 사용자가 Azure Communication Services로 통화한 내용을 녹음/녹화할 수 있습니다. 이 문서에서는 클라이언트 쪽에서 녹음/녹화를 관리하는 방법을 알아봅니다. 시작하기 전에 서버 쪽에서 녹음/녹화를 설정해야 합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 배포된 Communication Services 리소스. Communication Services 리소스 만들기
- 호출 클라이언트를 사용하도록 설정하는 사용자 액세스 토큰입니다. 자세한 내용은 액세스 토큰 만들기 및 관리를 참조하세요.
- 선택 사항: 빠른 시작을 완료하여 애플리케이션에 음성 통화를 추가합니다.
지원
다음 표에서는 Azure Communication Services에서 기록 지원을 정의합니다.
ID 및 호출 형식
다음 표에서는 특정 호출 유형 및 ID에 대한 기록 지원을 보여 줍니다.
Identities | Teams 모임 | 방 | 1:1 통화 | 그룹 통화 | 1:1 Teams Interop 통화 | 그룹 Teams Interop 통화 |
---|---|---|---|---|---|---|
Communication Services 사용자 | ✔️[1] | ✔️[2] | ✔️[2] | ✔️[2] | ✔️[1] | ✔️ [1][2] |
Microsoft 365 사용자 | ✔️[1] | ✔️[2] | ✔️[1] | ✔️ [1][2] |
[1] 이러한 호출 유형은 Teams 클라우드 및 규정 준수 기록을 지원합니다.
[2] 이러한 호출 유형은 Azure Communication Services 기록을 지원합니다.
작업
다음 표에서는 개별 ID 유형에 대한 SDK 호출에서 개별 API의 지원을 보여 줍니다.
작업 | Communication Services 사용자 | Microsoft 365 사용자 |
---|---|---|
녹음/녹화가 시작되거나 중지되었다는 알림 받기 | ✔️ | ✔️ |
기록 상태 가져오기 | ✔️ | ✔️ |
기록을 사용할 수 있다는 알림 받기 | ✔️[1] | ✔️[1] |
명시적 동의가 필요한지 여부 알아보기 | ✔️[2] | ✔️[2] |
기록되는 것에 대한 명시적 동의 제공 | ✔️[2] | ✔️[2] |
[1] 녹음/녹화를 사용할 수 있다는 알림이 사용자에게 표시되지 않습니다. Microsoft Graph API를 통해 Teams 클라우드 기록을 가져올 수 있습니다. 기록을 사용할 수 있는 경우 Azure Communication Services에서 알림을 구독할 수 있습니다.
[2] 이 기능은 Teams 모임 및 그룹 Teams 상호 운용성 호출에서만 사용할 수 있습니다.
SDK
다음 표에서는 개별 Azure Communication Services SDK에서 기록 지원을 보여 줍니다.
플랫폼 | 웹 | 웹 UI | iOS | iOS UI | Android | Android UI | Windows |
---|---|---|---|---|---|---|---|
지원됨 | ✔️ | ✔️[1] | ✔️[1] | ✔️[1] | ✔️[1] | ✔️[1] | ✔️[1] |
[1] 이러한 SDK는 명시적 동의를 지원하지 않습니다.
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);
참고 항목
이 API는 개발자를 위한 미리 보기로 제공되며 수신한 피드백을 기반으로 변경될 수 있습니다. 프로덕션 환경에서는 이 API를 사용하지 마세요. 이 API를 사용하려면 Azure Communication Services 통화 웹 SDK의 베타 릴리스를 사용합니다.
클라우드 녹음/녹화
통화 녹음/녹화는 핵심 통화 API의 확장 기능입니다. 먼저 통화 SDK에서 통화 기능을 가져와야 합니다.
import { Features} from "@azure/communication-calling";
그런 다음, 통화 인스턴스에서 녹음/녹화 기능 API 개체를 가져올 수 있습니다.
const callRecordingApi = call.feature(Features.Recording);
통화가 녹음되고 있는지 확인하려면 callRecordingApi
의 isRecordingActive
속성을 검사합니다. Boolean
를 반환합니다.
const isRecordingActive = callRecordingApi.isRecordingActive;
레코딩 변화를 구독할 수도 있습니다.
const isRecordingActiveChangedHandler = () => {
console.log(callRecordingApi.isRecordingActive);
};
callRecordingApi.on('isRecordingActiveChanged', isRecordingActiveChangedHandler);
callRecordingApi
의 recordings
속성을 사용하여 녹음/녹화 목록을 가져올 수 있습니다. 클라우드 녹음/녹화의 현재 상태가 있는 RecordingInfo[]
를 반환합니다.
const recordings = callRecordingApi.recordings;
recordings.forEach(r => {
console.log("State: ${r.state}");
recordingsUpdated
를 구독하고 업데이트된 레코딩 컬렉션을 가져올 수도 있습니다. 이 이벤트는 녹음/녹화 업데이트가 있을 때마다 트리거됩니다.
const cloudRecordingsUpdatedHandler = (args: { added: SDK.RecordingInfo[], removed: SDK.RecordingInfo[]}) => {
console.log('Recording started by: ');
args.added?.forEach(a => {
console.log('State: ${a.state}');
});
console.log('Recording stopped by: ');
args.removed?.forEach(r => {
console.log('State: ${r.state}');
});
};
callRecordingApi.on('recordingsUpdated', cloudRecordingsUpdatedHandler );
명시적 동의
Teams 모임 또는 통화가 녹음/녹화에 대한 명시적 동의를 요구하도록 구성된 경우 통화의 모든 참가자로부터 동의를 수집해야 녹음할 수 있습니다. 모임에 참가할 때 사전에 동의하거나 녹음이 시작될 때 사후적으로 동의를 제공할 수 있습니다. 명시적 동의가 주어질 때까지 참가자의 오디오, 비디오 및 화면 공유는 녹음 중에 비활성화됩니다.
모임 녹음/녹화에 속성별 명시적 동의가 필요한지 확인할 수 있습니다 isTeamsConsentRequired
. 값이 설정된 true
경우 명시적 동의가 필요합니다 call
.
const isConsentRequired = callRecordingApi.isTeamsConsentRequired;
녹음/녹화에 대한 사용자의 동의를 이미 얻은 경우 메서드를 호출 grantTeamsConsent()
하여 서비스에 대한 명시적 동의를 나타낼 수 있습니다. 이 동의는 한 call
세션에만 유효하며 사용자는 모임에 다시 참가하는 경우 다시 동의를 제공해야 합니다.
callRecordingApi.grantTeamsConsent();
녹음이 활성 상태이고 명시적 동의가 필요하지만 아직 제공되지 않은 경우 오디오, 비디오 또는 화면 공유를 사용하도록 설정하려는 시도가 실패합니다. 클래스의 ParticipantCapabilities
속성에서 기능을 확인하여 이 상황을 인식할 수 있습니다 unmuteMic
turnVideoOn
shareScreen
.reason
이러한 기능은 기능 call.feature(Features.Capabilities)
에서 찾을 수 있습니다. 이러한 기능은 사용자가 명시적 동의를 제공해야 하므로 이유를 ExplicitConsentRequired
반환합니다.
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();
통화 녹음
참고 항목
이 API는 개발자를 위한 미리 보기로 제공되며 수신한 피드백을 기반으로 변경될 수 있습니다. 프로덕션 환경에서는 이 API를 사용하지 마세요. 이 API를 사용하려면 Azure Communication Services 통화 Android SDK의 베타 릴리스를 사용합니다.
통화 녹음/녹화는 핵심 Call
개체의 확장 기능입니다.
Warning
Azure Communication Services 호출 Android SDK의 버전 1.1.0 및 베타 릴리스 버전 1.1.0-beta.1까지는 isRecordingActive
및 addOnIsRecordingActiveChangedListener
가 Call
개체의 일부였습니다. 새 베타 릴리스의 경우 해당 API는 Call
의 확장 기능으로 이동되었습니다.
먼저 레코딩 기능 개체를 가져와야 합니다.
RecordingCallFeature callRecordingFeature = call.feature(Features.RECORDING);
그런 다음, 통화가 녹음되고 있는지 확인하려면 callRecordingFeature
의 isRecordingActive
속성을 검사합니다. boolean
를 반환합니다.
boolean isRecordingActive = callRecordingFeature.isRecordingActive();
레코딩 변화를 구독할 수도 있습니다.
private void handleCallOnIsRecordingChanged(PropertyChangedEvent args) {
boolean isRecordingActive = callRecordingFeature.isRecordingActive();
}
callRecordingFeature.addOnIsRecordingActiveChangedListener(handleCallOnIsRecordingChanged);
애플리케이션에서 녹음/녹화를 시작하려면 먼저 통화 녹음/녹화 개요에 따라 통화 녹음/녹화를 설정하는 단계를 수행합니다.
서버에 통화 녹음/녹화를 설정한 후에는 Android 애플리케이션에서 통화에서 ServerCallId
값을 얻은 다음 이를 서버로 보내 녹음/녹화 프로세스를 시작해야 합니다. CallInfo
클래스의 getServerCallId()
를 사용하여 ServerCallId
값을 찾을 수 있습니다. getInfo()
를 사용하여 클래스 개체에서 CallInfo
클래스를 찾을 수 있습니다.
try {
String serverCallId = call.getInfo().getServerCallId().get();
// Send serverCallId to your recording server to start the call recording.
} catch (ExecutionException | InterruptedException e) {
} catch (UnsupportedOperationException unsupportedOperationException) {
}
서버에서 녹음/녹화를 시작하면 이벤트 handleCallOnIsRecordingChanged
이(가) 트리거되며 callRecordingFeature.isRecordingActive()
값은 true
입니다.
통화 녹음/녹화를 시작하는 것과 마찬가지로 통화 녹음/녹화를 중지하려면 ServerCallId
를 가져와 녹음/녹화 서버로 보내 녹음/녹화를 중지해야 합니다.
try {
String serverCallId = call.getInfo().getServerCallId().get();
// Send serverCallId to your recording server to stop the call recording.
} catch (ExecutionException | InterruptedException e) {
} catch (UnsupportedOperationException unsupportedOperationException) {
}
서버에서 녹음/녹화를 중지하면 이벤트 handleCallOnIsRecordingChanged
이(가) 트리거되며 callRecordingFeature.isRecordingActive()
값은 false
입니다.
시스템 설정
다음 단계에 따라 시스템을 설정합니다.
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")
}
})
통화 녹음
참고 항목
이 API는 개발자를 위한 미리 보기로 제공되며 수신한 피드백을 기반으로 변경될 수 있습니다. 프로덕션 환경에서는 이 API를 사용하지 마세요. 이 API를 사용하려면 Azure Communication Services 통화 iOS SDK의 베타 릴리스를 사용합니다.
통화 녹음/녹화는 핵심 Call
개체의 확장 기능입니다.
Warning
Azure Communication Services 통화 iOS SDK의 버전 1.1.0 및 베타 릴리스 버전 1.1.0-beta.1까지는 isRecordingActive
가 Call
개체의 일부였고 didChangeRecordingState
는 CallDelegate
대리자의 일부였습니다. 새 베타 릴리스의 경우 해당 API는 Call
의 확장 기능으로 이동되었습니다.
먼저 레코딩 기능 개체를 가져와야 합니다.
let callRecordingFeature = call.feature(Features.recording)
그런 다음, 통화가 녹음되고 있는지 확인하려면 callRecordingFeature
의 isRecordingActive
속성을 검사합니다. Bool
를 반환합니다.
let isRecordingActive = callRecordingFeature.isRecordingActive;
이벤트 didChangeRecordingState
를 사용하여 클래스에 RecordingCallFeatureDelegate
대리자를 구현하여 변경 내용 기록을 구독할 수도 있습니다.
callRecordingFeature.delegate = self
// didChangeRecordingState is a member of RecordingCallFeatureDelegate
public func recordingCallFeature(_ recordingCallFeature: RecordingCallFeature, didChangeRecordingState args: PropertyChangedEventArgs) {
let isRecordingActive = recordingFeature.isRecordingActive
}
애플리케이션에서 녹음/녹화를 시작하려면 먼저 통화 녹음/녹화 개요에 따라 통화 녹음/녹화를 설정하는 단계를 수행합니다.
서버에 통화 녹음/녹화를 설정한 후에는 iOS 애플리케이션에서 통화에서 ServerCallId
값을 얻은 다음 이를 서버로 보내 녹음/녹화 프로세스를 시작해야 합니다. CallInfo
클래스의 getServerCallId()
를 사용하여 ServerCallId
값을 찾을 수 있습니다. getInfo()
를 사용하여 클래스 개체에서 CallInfo
클래스를 찾을 수 있습니다.
// Send serverCallId to your recording server to start the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }
서버에서 녹음/녹화를 시작하면 이벤트 didChangeRecordingState
이(가) 트리거되며 recordingFeature.isRecordingActive
값은 true
입니다.
통화 녹음/녹화를 시작하는 것과 마찬가지로 통화 녹음/녹화를 중지하려면 ServerCallId
를 가져와 녹음/녹화 서버로 보내 녹음/녹화를 중지해야 합니다.
// Send serverCallId to your recording server to stop the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }
서버에서 녹음/녹화를 중지하면 이벤트 didChangeRecordingState
이(가) 트리거되며 recordingFeature.isRecordingActive
값은 false
입니다.
시스템 설정
다음 단계에 따라 시스템을 설정합니다.
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
개체의 확장 기능입니다. 먼저 레코딩 기능 개체를 가져와야 합니다.
RecordingCallFeature recordingFeature = call.Features.Recording;
그런 다음, 통화가 녹음되고 있는지 확인하려면 recordingFeature
의 IsRecordingActive
속성을 검사합니다. boolean
를 반환합니다.
boolean isRecordingActive = recordingFeature.IsRecordingActive;
레코딩 변화를 구독할 수도 있습니다.
private async void Call__OnIsRecordingActiveChanged(object sender, PropertyChangedEventArgs args)
boolean isRecordingActive = recordingFeature.IsRecordingActive;
}
recordingFeature.IsRecordingActiveChanged += Call__OnIsRecordingActiveChanged;
규정 준수 녹음/녹화
규정 준수 녹음/녹화는 Microsoft Teams 정책에 따른 녹음/녹화입니다. 자습서 통화에 대한 Teams 정책 기반 녹음/녹화 소개를 사용하여 규정 준수 녹음/녹화를 사용하도록 설정할 수 있습니다.
정책 기반 녹음/녹화는 정책이 있는 사용자가 통화에 참가할 때 자동으로 시작됩니다. Azure Communication Services에서 녹음/녹화에 대한 알림을 받으려면 다음 코드를 사용합니다.
const callRecordingApi = call.feature(Features.Recording);
const isComplianceRecordingActive = callRecordingApi.isRecordingActive;
const isComplianceRecordingActiveChangedHandler = () => {
console.log(callRecordingApi.isRecordingActive);
};
callRecordingApi.on('isRecordingActiveChanged', isComplianceRecordingActiveChangedHandler);
사용자 지정 녹음/녹화 봇을 사용하여 규정 준수 녹음/녹화를 구현할 수도 있습니다. GitHub 예제를 참조하세요.