Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Ta funkcja usługi Azure Communication Services jest obecnie dostępna w wersji próbnej. Funkcje w wersji zapoznawczej są publicznie dostępne i mogą być używane przez wszystkich nowych i istniejących klientów firmy Microsoft.
Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą być ograniczone.
Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Nagrywanie połączeń umożliwia użytkownikom rejestrowanie wywołań, które tworzą za pomocą usług Azure Communication Services. Z tego artykułu dowiesz się, jak zarządzać rejestrowaniem po stronie klienta. Przed rozpoczęciem należy skonfigurować nagrywanie po stronie serwera.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Zasób usług komunikacyjnych, który został wdrożony. Utwórz zasób usług komunikacyjnych.
- Token dostępu użytkownika umożliwiający włączenie klienta wywołującego. Aby uzyskać więcej informacji, zobacz Tworzenie tokenów dostępu i zarządzanie nimi.
- Opcjonalnie: ukończenie przewodnika szybkiego startu w celu dodania połączeń głosowych do aplikacji.
Wsparcie
W poniższych tabelach zdefiniowano obsługę rejestrowania w usługach Azure Communication Services.
Tożsamości i typy wywołań
W poniższych tabelach przedstawiono obsługę rejestrowania dla określonego typu połączenia i tożsamości.
Tożsamości | Spotkanie w aplikacji Teams | Pokój | Połączenie 1:1 | Rozmowa grupowa | Połączenie 1:1 międzyoperacyjne w usłudze Teams | Połączenie międzyoperacowe usługi Group Teams |
---|---|---|---|---|---|---|
Użytkownik usług komunikacyjnych | ✔️ [1][2] | ✔️ [3] | ✔️ [3] | ✔️ [2][3] | ||
Użytkownik platformy Microsoft 365 | ✔️ [1][2] | ✔️ [2][3] |
[1] Te typy połączeń obsługują chmurę usługi Teams.
[2] Te typy połączeń obsługują rejestrowanie zgodności usługi Teams.
[3] Te typy połączeń obsługują rejestrowanie usług Azure Communication Services.
Operacje
W poniższych tabelach przedstawiono obsługę poszczególnych interfejsów API przy użyciu zestawu SDK dla poszczególnych typów tożsamości.
Operacje | Użytkownik usług komunikacyjnych | Użytkownik platformy Microsoft 365 |
---|---|---|
Uzyskiwanie powiadomienia o rozpoczęciu lub zatrzymaniu nagrania | ✔️ | ✔️ |
Uzyskiwanie stanu rejestrowania | ✔️ | ✔️ |
Uzyskiwanie powiadomienia, że nagranie jest dostępne | ✔️ [1] | ✔️ [1] |
Dowiedz się, czy wymagana jest jawna zgoda | ✔️ [2] | ✔️ [2] |
Udzielenie wyraźnej zgody na rejestrowanie | ✔️ [2] | ✔️ [2] |
[1] Użytkownik nie jest powiadamiany, że nagranie jest dostępne. Możesz subskrybować powiadomienia o zmianach w Microsoft Graph, aby otrzymywać powiadomienia o dostępności nagrywania w chmurze usługi Teams, lub subskrybować zdarzenie Microsoft.Communication.RecordingFileStatusUpdated
w usługach Azure Communication Services, aby być powiadamianym, gdy nagranie w usługach Azure Communication Services jest dostępne.
[2] Ta funkcja jest dostępna tylko w spotkaniach usługi Teams i wywołaniach współdziałania grup usługi Teams.
Zestawy SDK
W poniższych tabelach przedstawiono obsługę rejestrowania w poszczególnych zestawach SDK usług Azure Communication Services.
Platformy | Internet | Interfejs użytkownika sieci Web | Ios | Interfejs użytkownika systemu iOS | Android | Interfejs użytkownika systemu Android | Windows |
---|---|---|---|---|---|---|---|
Jest obsługiwana | ✔️ | ✔️ [1] | ✔️ [1] | ✔️ [1] | ✔️ [1] | ✔️ [1] | ✔️ [1] |
[1] Te zestawy SDK nie obsługują jawnej zgody.
Instalacja zestawu SDK
Użyj polecenia npm install
, aby zainstalować zestaw SDK Azure Communication Services Common i Calling dla JavaScriptu.
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Inicjowanie wymaganych obiektów
Wystąpienie CallClient
jest wymagane dla większości operacji wywołania. Podczas tworzenia nowego wystąpienia CallClient
, możesz skonfigurować je przy użyciu opcji niestandardowych, podobnie jak wystąpienie Logger
.
Dzięki wystąpieniu CallClient
można utworzyć nowe wystąpienie CallAgent
, wywołując element createCallAgent
. Ta metoda asynchronicznie zwraca CallAgent
obiekt wystąpienia.
Metoda createCallAgent
używa CommunicationTokenCredential
jako argumentu. Akceptuje token dostępu użytkownika.
Możesz użyć metody getDeviceManager
na instancji CallClient
, aby uzyskać dostęp do 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()
Zarządzanie łącznością zestawu SDK z infrastrukturą firmy Microsoft
Wystąpienie Call Agent
pomaga zarządzać wywołaniami (aby dołączyć lub uruchomić wywołania). Aby można było pracować z zestawem SDK wywołującym, należy połączyć się z infrastrukturą firmy Microsoft, aby otrzymywać powiadomienia o połączeniach przychodzących i koordynować inne szczegóły połączeń. Twój Call Agent
ma dwa możliwe stany:
Połączono — Call Agent
wartość Connected
connectionStatue oznacza, że zestaw SDK klienta jest połączony i może odbierać powiadomienia z infrastruktury firmy Microsoft.
Rozłączone — Wartość Call Agent
statusu połączenia Disconnected
wskazuje na problem uniemożliwiający prawidłowe nawiązanie połączenia z zestawem SDK.
Call Agent
należy utworzyć ponownie.
-
invalidToken
: Jeśli token wygasł lub jest nieprawidłoweCall Agent
wystąpienie rozłącza się z tym błędem. -
connectionIssue
: jeśli występuje problem z połączeniem klienta z infrastrukturą firmy Microsoft, po wielu ponownych próbachCall Agent
uwidacznia błądconnectionIssue
.
Możesz sprawdzić, czy środowisko lokalne Call Agent
jest połączone z infrastrukturą firmy Microsoft, sprawdzając bieżącą connectionState
wartość właściwości. Podczas aktywnej rozmowy można nasłuchiwać zdarzenia connectionStateChanged
, aby określić, czy Call Agent
zmienia się ze stanu Połączony na Rozłączony.
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);
Uwaga
Ten interfejs API jest udostępniany jako wersja zapoznawcza dla deweloperów i może ulec zmianie na podstawie otrzymywanych opinii. Nie używaj tego interfejsu API w środowisku produkcyjnym. Aby użyć tego interfejsu API, użyj wersji beta internetowego zestawu SDK Azure Communication Services do rozmów.
Rejestrowanie w chmurze i zgodności
Nagrywanie wywołań to rozszerzona funkcja podstawowego interfejsu API wywołań. Najpierw należy zaimportować funkcje wywołujące z zestawu Calling SDK:
import { Features} from "@azure/communication-calling";
Następnie możesz uzyskać dostęp do API funkcji nagrywania z instancji połączenia.
const callRecordingApi = call.feature(Features.Recording);
Aby sprawdzić, czy wywołanie jest rejestrowane, sprawdź właściwości isRecordingActive
w callRecordingApi
. Zwraca wartość Boolean
.
const isRecordingActive = callRecordingApi.isRecordingActive;
Możesz również subskrybować rejestrowanie zmian:
const isRecordingActiveChangedHandler = () => {
console.log(callRecordingApi.isRecordingActive);
};
callRecordingApi.on('isRecordingActiveChanged', isRecordingActiveChangedHandler);
Listę nagrań można uzyskać przy użyciu recordings
właściwości callRecordingApi
. Zwraca wartość RecordingInfo[]
, która ma bieżący stan rejestrowania w chmurze.
const recordings = callRecordingApi.recordings;
recordings.forEach(r => {
console.log("State: ${r.state}");
Możesz również subskrybować recordingsUpdated
i uzyskać kolekcję zaktualizowanych nagrań. To zdarzenie jest wyzwalane za każdym razem, gdy istnieje aktualizacja nagrywania.
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 );
Jawna zgoda
Jeśli spotkanie lub połączenie usługi Teams jest skonfigurowane w taki sposób, aby wymagać wyraźnej zgody na nagrywanie i transkrypcję, musisz zebrać zgodę wszystkich uczestników połączenia, zanim będzie można je zarejestrować. Możesz aktywnie wyrazić zgodę podczas dołączania do spotkania lub reaktywnie po rozpoczęciu nagrywania. Dopóki nie zostanie udzielona wyraźna zgoda, udostępnianie dźwięku, wideo i ekranu uczestników zostanie wyłączone podczas nagrywania.
Możesz sprawdzić, czy nagranie spotkania wymaga jawnej zgody na podstawie właściwości isTeamsConsentRequired
. Jeśli wartość jest ustawiona na true
, wymagana jest jawna zgoda dla call
.
const isConsentRequired = callRecordingApi.isTeamsConsentRequired;
Jeśli użytkownik uzyskał już zgodę na nagrywanie, możesz wywołać grantTeamsConsent()
metodę, aby wskazać jawną zgodę na usługę. Ta zgoda jest ważna tylko dla jednej call
sesji, a użytkownicy muszą ponownie wyrazić zgodę, jeśli ponownie dołączą do spotkania.
callRecordingApi.grantTeamsConsent();
Próby włączenia udostępniania dźwięku, wideo lub ekranu kończą się niepowodzeniem, gdy nagrywanie jest aktywne; wymagana jest jawna zgoda, lecz jeszcze jej nie udzielono. Tę sytuację można rozpoznać, sprawdzając właściwość reason
klasy pod kątem ParticipantCapabilities
i turnVideoOn
unmuteMic
.shareScreen
Te możliwości można znaleźć w funkcji call.feature(Features.Capabilities)
. Te funkcje będą zwracać powód ExplicitConsentRequired
, ponieważ użytkownicy muszą wyrazić jawną zgodę.
Instalacja zestawu SDK
Znajdź plik projektu na poziomie build.gradle
i dodaj mavenCentral()
do listy repozytoriów pod buildscript
i allprojects
:
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
Następnie w pliku modułu na poziomie build.gradle
, dodaj następujące wiersze do sekcji dependencies
:
dependencies {
...
implementation 'com.azure.android:azure-communication-calling:1.0.0'
...
}
Inicjowanie wymaganych obiektów
Aby utworzyć CallAgent
wystąpienie, należy wywołać createCallAgent
metodę na wystąpieniu CallClient
. To wywołanie asynchroniczne zwraca CallAgent
obiekt wystąpienia.
Metoda createCallAgent
przyjmuje CommunicationUserCredential
jako argument, który hermetyzuje token dostępu.
Aby uzyskać dostęp do DeviceManager
, należy najpierw utworzyć instancję callAgent
. Następnie możesz użyć metody CallClient.getDeviceManager
, aby uzyskać 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();
Aby ustawić nazwę wyświetlaną elementu wywołującego, użyj tej alternatywnej metody:
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();
Nagrywanie rozmów
Uwaga
Ten interfejs API jest udostępniany jako wersja zapoznawcza dla deweloperów i może ulec zmianie na podstawie otrzymywanych opinii. Nie używaj tego interfejsu API w środowisku produkcyjnym. Aby użyć tego interfejsu API, skorzystaj z wersji beta zestawu SDK Azure Communication Services do wykonywania połączeń na system Android.
Nagrywanie wywołań to rozszerzona funkcja obiektu podstawowego Call
.
Ostrzeżenie
Do wersji 1.1.0 i wersji beta w wersji 1.1.0-beta.1 usługi Azure Communication Services wywołujących zestaw Android SDK isRecordingActive
i addOnIsRecordingActiveChangedListener
były częścią Call
obiektu . W przypadku nowych wersji beta te interfejsy API zostały przeniesione jako rozszerzona funkcja Call
.
Najpierw należy uzyskać obiekt funkcji nagrywania:
RecordingCallFeature callRecordingFeature = call.feature(Features.RECORDING);
Następnie aby sprawdzić, czy wywołanie jest rejestrowane, sprawdź właściwość isRecordingActive
callRecordingFeature
. Zwraca wartość boolean
.
boolean isRecordingActive = callRecordingFeature.isRecordingActive();
Możesz również subskrybować rejestrowanie zmian:
private void handleCallOnIsRecordingChanged(PropertyChangedEvent args) {
boolean isRecordingActive = callRecordingFeature.isRecordingActive();
}
callRecordingFeature.addOnIsRecordingActiveChangedListener(handleCallOnIsRecordingChanged);
Jeśli chcesz rozpocząć nagrywanie z aplikacji, najpierw wykonaj czynności opisane w temacie Omówienie nagrywania połączeń, aby zapoznać się z instrukcjami konfigurowania nagrywania połączeń.
Po skonfigurowaniu nagrywania wywołań na serwerze z poziomu aplikacji systemu Android należy uzyskać ServerCallId
wartość z wywołania, a następnie wysłać go do serwera, aby rozpocząć proces nagrywania. Wartość można znaleźć ServerCallId
przy użyciu getServerCallId()
klasy CallInfo
. Klasę CallInfo
można znaleźć w obiekcie klasy przy użyciu polecenia getInfo()
.
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) {
}
Po rozpoczęciu rejestrowania z serwera zdarzenie handleCallOnIsRecordingChanged
jest wyzwalane, a wartość callRecordingFeature.isRecordingActive()
to true
.
Podobnie jak przy rozpoczynaniu nagrywania połączenia, jeśli chcesz zatrzymać nagrywanie, musisz pobrać ServerCallId
i wysłać go do swojego serwera nagrywania, aby zatrzymać nagrywanie.
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) {
}
Po zatrzymaniu nagrywania z serwera zdarzenie handleCallOnIsRecordingChanged
zostanie wyzwolone, a wartość callRecordingFeature.isRecordingActive()
wynosi false
.
Jawna zgoda
Uwaga
Ten interfejs API jest udostępniany jako wersja zapoznawcza dla deweloperów i może ulec zmianie na podstawie otrzymywanych opinii. Nie używaj tego interfejsu API w środowisku produkcyjnym. Aby użyć tego interfejsu API, skorzystaj z wersji beta zestawu SDK Azure Communication Services do wykonywania połączeń na system Android.
Jeśli spotkanie lub połączenie usługi Teams jest skonfigurowane w taki sposób, aby wymagać wyraźnej zgody na nagrywanie i transkrypcję, musisz zebrać zgodę wszystkich uczestników połączenia, zanim będzie można je zarejestrować. Możesz aktywnie wyrazić zgodę podczas dołączania do spotkania lub reaktywnie po rozpoczęciu nagrywania. Dopóki nie zostanie udzielona wyraźna zgoda, udostępnianie dźwięku, wideo i ekranu uczestników zostanie wyłączone podczas nagrywania.
Możesz sprawdzić, czy nagranie spotkania wymaga jawnej zgody na podstawie właściwości isTeamsConsentRequired
. Jeśli wartość jest ustawiona na true
, wymagana jest jawna zgoda dla call
.
boolean isConsentRequired = callRecordingFeature.isTeamsConsentRequired();
Jeśli użytkownik uzyskał już zgodę na nagrywanie, możesz wywołać grantTeamsConsent()
metodę, aby wskazać jawną zgodę na usługę. Ta zgoda jest ważna tylko dla jednej call
sesji, a użytkownicy muszą ponownie wyrazić zgodę, jeśli ponownie dołączą do spotkania.
callRecordingFeature.grantTeamsConsent();
Próby włączenia udostępniania dźwięku, wideo lub ekranu kończą się niepowodzeniem, gdy nagrywanie jest aktywne; wymagana jest jawna zgoda, lecz jeszcze jej nie udzielono. Tę sytuację można rozpoznać, sprawdzając właściwość reason
klasy pod kątem ParticipantCapabilities
i turnVideoOn
unmuteMic
.shareScreen
Te możliwości można znaleźć w funkcji call.feature(Features.Capabilities)
. Te funkcje będą zwracać powód ExplicitConsentRequired
, ponieważ użytkownicy muszą wyrazić jawną zgodę.
Konfigurowanie systemu
Wykonaj następujące kroki, aby skonfigurować system.
Tworzenie projektu Xcode
W programie Xcode utwórz nowy projekt systemu iOS i wybierz szablon Aplikacja z jednym widokiem. W tym artykule jest używana struktura SwiftUI, dlatego należy ustawić wartość Language na Swift i ustawić wartość Interface na SwiftUI.
Nie zamierzasz tworzyć testów w tym artykule. Możesz swobodnie odznaczyć pole wyboru Uwzględnij Testy.
Instalowanie pakietu i zależności przy użyciu narzędzia CocoaPods
Utwórz plik Podfile dla aplikacji, podobnie jak w tym przykładzie:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
Uruchom program
pod install
.Otwórz
.xcworkspace
za pomocą programu Xcode.
Żądanie dostępu do mikrofonu
Aby uzyskać dostęp do mikrofonu urządzenia, należy zaktualizować listę właściwości informacji aplikacji przy użyciu polecenia NSMicrophoneUsageDescription
. Ustaw skojarzoną wartość na ciąg znajdujący się w oknie dialogowym, które system stosuje do żądania dostępu od użytkownika.
Kliknij prawym przyciskiem myszy na wpis Info.plist w drzewie projektu, a następnie wybierz opcję Otwórz jako>kod źródłowy. Dodaj następujące wiersze w sekcji najwyższego poziomu <dict>
, a następnie zapisz plik.
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>
Konfigurowanie struktury aplikacji
Otwórz plik projektu ContentView.swift
. Dodaj deklarację import
na początku pliku, aby zaimportować bibliotekę AzureCommunicationCalling
. Ponadto zaimportuj plik AVFoundation
. Potrzebujesz ich do obsługi wniosków o uprawnienia do odtwarzania dźwięku w kodzie.
import AzureCommunicationCalling
import AVFoundation
Inicjalizacja CallAgent
Aby utworzyć CallAgent
wystąpienie z CallClient
klasy, należy użyć metody callClient.createCallAgent
, która asynchronicznie zwraca obiekt CallAgent
po zainicjowaniu.
Aby utworzyć klienta wywołania, przekaż CommunicationTokenCredential
obiekt:
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
Przekaż utworzony obiekt do CallClient
, a następnie ustaw nazwę wyświetlaną:
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")
}
})
Nagrywanie rozmów
Uwaga
Ten interfejs API jest udostępniany jako wersja zapoznawcza dla deweloperów i może ulec zmianie na podstawie otrzymywanych opinii. Nie używaj tego interfejsu API w środowisku produkcyjnym. Aby użyć tego interfejsu API, użyj wersji beta zestawu SDK Azure Communication Services Calling dla systemu iOS.
Nagrywanie wywołań to rozszerzona funkcja obiektu podstawowego Call
.
Ostrzeżenie
Do wersji 1.1.0 oraz wersji beta 1.1.0-beta.1 SDK Azure Communication Services Calling iOS, isRecordingActive
był częścią obiektu Call
, a didChangeRecordingState
był częścią delegata CallDelegate
. W przypadku nowych wersji beta te interfejsy API zostały przeniesione jako rozszerzona funkcja Call
.
Najpierw należy uzyskać obiekt funkcji nagrywania:
let callRecordingFeature = call.feature(Features.recording)
Następnie aby sprawdzić, czy wywołanie jest rejestrowane, sprawdź właściwość isRecordingActive
callRecordingFeature
. Zwraca wartość Bool
.
let isRecordingActive = callRecordingFeature.isRecordingActive;
Możesz również subskrybować rejestrowanie zmian, implementując RecordingCallFeatureDelegate
delegata w klasie za pomocą zdarzenia didChangeRecordingState
:
callRecordingFeature.delegate = self
// didChangeRecordingState is a member of RecordingCallFeatureDelegate
public func recordingCallFeature(_ recordingCallFeature: RecordingCallFeature, didChangeRecordingState args: PropertyChangedEventArgs) {
let isRecordingActive = recordingFeature.isRecordingActive
}
Jeśli chcesz rozpocząć nagrywanie z aplikacji, najpierw wykonaj czynności opisane w temacie Omówienie nagrywania połączeń, aby zapoznać się z instrukcjami konfigurowania nagrywania połączeń.
Po skonfigurowaniu nagrywania wywołań na serwerze z poziomu aplikacji systemu iOS należy uzyskać ServerCallId
wartość z wywołania, a następnie wysłać je do serwera, aby rozpocząć proces nagrywania. Wartość można znaleźć ServerCallId
przy użyciu getServerCallId()
klasy CallInfo
. Klasę CallInfo
można znaleźć w obiekcie klasy przy użyciu polecenia getInfo()
.
// Send serverCallId to your recording server to start the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }
Po rozpoczęciu rejestrowania z serwera zdarzenie didChangeRecordingState
jest wyzwalane, a wartość recordingFeature.isRecordingActive
to true
.
Podobnie jak przy rozpoczynaniu nagrywania połączenia, jeśli chcesz zatrzymać nagrywanie, musisz pobrać ServerCallId
i wysłać go do swojego serwera nagrywania, aby zatrzymać nagrywanie.
// Send serverCallId to your recording server to stop the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }
Po zatrzymaniu nagrywania z serwera zdarzenie didChangeRecordingState
zostanie wyzwolone, a wartość recordingFeature.isRecordingActive
wynosi false
.
Jawna zgoda
Uwaga
Ten interfejs API jest udostępniany jako wersja zapoznawcza dla deweloperów i może ulec zmianie na podstawie otrzymywanych opinii. Nie używaj tego interfejsu API w środowisku produkcyjnym. Aby użyć tego interfejsu API, użyj wersji beta zestawu SDK Azure Communication Services Calling dla systemu iOS.
Jeśli spotkanie lub połączenie usługi Teams jest skonfigurowane w taki sposób, aby wymagać wyraźnej zgody na nagrywanie i transkrypcję, musisz zebrać zgodę wszystkich uczestników połączenia, zanim będzie można je zarejestrować. Możesz aktywnie wyrazić zgodę podczas dołączania do spotkania lub reaktywnie po rozpoczęciu nagrywania. Dopóki nie zostanie udzielona wyraźna zgoda, udostępnianie dźwięku, wideo i ekranu uczestników zostanie wyłączone podczas nagrywania.
Możesz sprawdzić, czy nagranie spotkania wymaga jawnej zgody na podstawie właściwości isTeamsConsentRequired
. Jeśli wartość jest ustawiona na true
, wymagana jest jawna zgoda dla call
.
let isConsentRequired = recordingFeature.isTeamsConsentRequired;
Jeśli użytkownik uzyskał już zgodę na nagrywanie, możesz wywołać grantTeamsConsent()
metodę, aby wskazać jawną zgodę na usługę. Ta zgoda jest ważna tylko dla jednej call
sesji, a użytkownicy muszą ponownie wyrazić zgodę, jeśli ponownie dołączą do spotkania.
recordingFeature.grantTeamsConsent();
Próby włączenia udostępniania dźwięku, wideo lub ekranu kończą się niepowodzeniem, gdy nagrywanie jest aktywne; wymagana jest jawna zgoda, lecz jeszcze jej nie udzielono. Tę sytuację można rozpoznać, sprawdzając właściwość reason
klasy pod kątem ParticipantCapabilities
i turnVideoOn
unmuteMic
.shareScreen
Te możliwości można znaleźć w funkcji call.feature(Features.Capabilities)
. Te funkcje będą zwracać powód ExplicitConsentRequired
, ponieważ użytkownicy muszą wyrazić jawną zgodę.
Konfigurowanie systemu
Wykonaj następujące kroki, aby skonfigurować system.
Tworzenie projektu programu Visual Studio
W przypadku aplikacji platforma uniwersalna systemu Windows w programie Visual Studio 2022 utwórz nowy projekt Pusta aplikacja (uniwersalny system Windows). Po wprowadzeniu nazwy projektu możesz wybrać dowolny zestaw Windows SDK nowszy niż 10.0.17763.0.
W przypadku aplikacji WinUI 3 utwórz nowy projekt za pomocą szablonu Blank App, Packaged (WinUI 3 in Desktop), aby skonfigurować jednostronicową aplikację WinUI 3. Wymagany jest zestaw Windows App SDK w wersji 1.3 lub nowszej.
Instalowanie pakietu i zależności przy użyciu Menedżer pakietów NuGet
Biblioteki i API Calling SDK są publicznie dostępne za pośrednictwem pakietu NuGet.
Aby znaleźć, pobrać i zainstalować pakiet NuGet Calling SDK:
- Otwórz Menedżer pakietów NuGet, wybierając pozycję > Zarządzanie pakietami NuGet dla rozwiązania.
- Wybierz pozycję Przeglądaj, a następnie wprowadź ciąg Azure.Communication.Calling.WindowsClient w polu wyszukiwania.
- Upewnij się, że pole wyboru Uwzględnij wersję wstępną zostało zaznaczone.
- Wybierz pakiet Azure.Communication.Calling.WindowsClient, a następnie wybierz pozycję Azure.Communication.Calling.WindowsClient1.4.0-beta.1 lub nowszą wersję.
- Zaznacz pole wyboru odpowiadające projektowi usług Azure Communication Services w okienku po prawej stronie.
- Wybierz Zainstaluj.
Nagrywanie rozmów
Nagrywanie wywołań to rozszerzona funkcja obiektu podstawowego Call
. Najpierw należy uzyskać obiekt funkcji nagrywania:
RecordingCallFeature recordingFeature = call.Features.Recording;
Następnie aby sprawdzić, czy wywołanie jest rejestrowane, sprawdź właściwość IsRecordingActive
recordingFeature
. Zwraca wartość boolean
.
boolean isRecordingActive = recordingFeature.IsRecordingActive;
Możesz również subskrybować rejestrowanie zmian:
private async void Call__OnIsRecordingActiveChanged(object sender, PropertyChangedEventArgs args)
boolean isRecordingActive = recordingFeature.IsRecordingActive;
}
recordingFeature.IsRecordingActiveChanged += Call__OnIsRecordingActiveChanged;
Jawna zgoda
Uwaga
Ten interfejs API jest udostępniany jako wersja zapoznawcza dla deweloperów i może ulec zmianie na podstawie otrzymywanych opinii. Nie używaj tego interfejsu API w środowisku produkcyjnym. Aby użyć tego interfejsu API, użyj wersji beta zestawu SDK Azure Communication Services Calling dla systemu Windows.
Jeśli spotkanie lub połączenie usługi Teams jest skonfigurowane w taki sposób, aby wymagać wyraźnej zgody na nagrywanie i transkrypcję, musisz zebrać zgodę wszystkich uczestników połączenia, zanim będzie można je zarejestrować. Możesz aktywnie wyrazić zgodę podczas dołączania do spotkania lub reaktywnie po rozpoczęciu nagrywania. Dopóki nie zostanie udzielona wyraźna zgoda, udostępnianie dźwięku, wideo i ekranu uczestników zostanie wyłączone podczas nagrywania.
Możesz sprawdzić, czy nagranie spotkania wymaga jawnej zgody na podstawie właściwości isTeamsConsentRequired
. Jeśli wartość jest ustawiona na true
, wymagana jest jawna zgoda dla call
.
boolean isConsentRequired = recordingFeature.isTeamsConsentRequired;
Jeśli użytkownik uzyskał już zgodę na nagrywanie, możesz wywołać grantTeamsConsent()
metodę, aby wskazać jawną zgodę na usługę. Ta zgoda jest ważna tylko dla jednej call
sesji, a użytkownicy muszą ponownie wyrazić zgodę, jeśli ponownie dołączą do spotkania.
recordingFeature.grantTeamsConsent();
Próby włączenia udostępniania dźwięku, wideo lub ekranu kończą się niepowodzeniem, gdy nagrywanie jest aktywne; wymagana jest jawna zgoda, lecz jeszcze jej nie udzielono. Tę sytuację można rozpoznać, sprawdzając właściwość reason
klasy pod kątem ParticipantCapabilities
i turnVideoOn
unmuteMic
.shareScreen
Te możliwości można znaleźć w funkcji call.feature(Features.Capabilities)
. Te funkcje będą zwracać powód ExplicitConsentRequired
, ponieważ użytkownicy muszą wyrazić jawną zgodę.
Zgodność zestawu SDK
W poniższej tabeli przedstawiono minimalną wersję zestawów SDK, które obsługują poszczególne interfejsy API.
Operacje | Internet | Interfejs użytkownika sieci Web | Ios | Interfejs użytkownika systemu iOS | Android | Interfejs użytkownika systemu Android | Windows |
---|---|---|---|---|---|---|---|
Uzyskiwanie powiadomienia o rozpoczęciu lub zatrzymaniu nagrania | 1.0.0, 1.25.3-beta.1 | 1.0.0, 1.15.0-beta.1 | 2.0.0, 2.1.0-beta.1 | 1.0.0, 1.15.0-beta.1 | 2.0.0, 1.2.0-beta.1 | 1.0.0, 1.15.0-beta.1 | 1.0.0, 1.0.0-beta.31 |
Uzyskiwanie stanu rejestrowania | 1.0.0, 1.25.3-beta.1 | 1.0.0, 1.15.0-beta.1 | 2.0.0, 2.1.0-beta.1 | 1.0.0, 1.15.0-beta.1 | 2.0.0, 1.2.0-beta.1 | 1.0.0, 1.15.0-beta.1 | 1.0.0, 1.0.0-beta.31 |
Dowiedz się, czy wymagana jest jawna zgoda | 1.31.2, 1.32.1-beta.1 | ❌ | 2.16.0-beta.1 | ❌ | 2.14.0-beta.1 | ❌ | 1.12.0-beta.1 |
Udzielenie wyraźnej zgody na rejestrowanie | 1.31.2, 1.32.1-beta.1 | ❌ | 2.16.0-beta.1 | ❌ | 2.14.0-beta.1 | ❌ | 1.12.0-beta.1 |