Gestire la registrazione delle chiamate nel client

Importante

Le funzionalità descritte in questo documento sono attualmente disponibili in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio e non è consigliata per carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.

Registrazione delle chiamate, che consente agli utenti di registrare le chiamate effettuate con Servizi di comunicazione di Azure. In questa sezione si apprenderà come gestire la registrazione sul lato client. Prima di procedere, è necessario configurare la registrazione lato server.

Prerequisiti

Installare l'SDK

Usare il npm install comando per installare il Servizi di comunicazione di Azure e gli SDK comuni per JavaScript.

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

Inizializzare gli oggetti necessari

Un'istanza di CallClient è necessaria per la maggior parte delle operazioni di chiamata. Creare una nuova CallClient istanza. È possibile configurarlo con opzioni personalizzate, ad esempio un'istanza di Logger.

Quando si dispone di CallClient un'istanza di , è possibile creare CallAgent un'istanza chiamando il createCallAgent metodo CallClient sull'istanza . Questo metodo restituisce in modo asincrono un CallAgent oggetto istanza.

Il createCallAgent metodo usa come CommunicationTokenCredential argomento. Accetta un token di accesso utente.

È possibile usare il getDeviceManager metodo CallClient nell'istanza di per accedere a 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 wherever desired. To console, file, buffer, REST API, etc...
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 ACS user name'});
const deviceManager = await callClient.getDeviceManager()

Registrare le chiamate

Nota

Questa API viene fornita come anteprima per gli sviluppatori e potrebbe essere modificata in base ai commenti ricevuti. Non usare questa API in un ambiente di produzione. Per usare questa API, usare la versione "beta" di ACS Calling Web SDK

La registrazione delle chiamate è una funzionalità estesa Call dell'API principale. È prima necessario ottenere l'oggetto API della funzionalità di registrazione:

const callRecordingApi = call.feature(Features.Recording);

Quindi, per controllare se la chiamata viene registrata, esaminare la isRecordingActive proprietà di callRecordingApi . Restituisce Boolean.

const isRecordingActive = callRecordingApi.isRecordingActive;

È anche possibile sottoscrivere la registrazione delle modifiche:

const isRecordingActiveChangedHandler = () => {
    console.log(callRecordingApi.isRecordingActive);
};

callRecordingApi.on('isRecordingActiveChanged', isRecordingActiveChangedHandler);

Installare l'SDK

Individuare build.gradle a livello di progetto e assicurarsi di aggiungere mavenCentral() all'elenco dei repository in buildscript e allprojects

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

Quindi, nel file build.gradle a livello di modulo aggiungere le righe seguenti alla sezione dependencies

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

Inizializzare gli oggetti necessari

Per creare CallAgent un'istanza di è necessario chiamare il createCallAgent metodo su un'istanza di CallClient . Restituisce in modo asincrono un CallAgent oggetto istanza. Il createCallAgent metodo accetta come argomento , che incapsula un token di CommunicationUserCredentialcreateCallAgent. Per accedere a , è necessario creare prima un'istanza di callAgent, quindi è possibile usare DeviceManager il metodo per ottenere 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();

Per impostare un nome visualizzato per il chiamante, usare questo metodo alternativo:

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();

Registrare le chiamate

Avviso

Fino alla versione 1.1.0 e alla versione beta 1.1.0-beta.1 del Android SDK chiamate ACS, e fanno parte isRecordingActiveaddOnIsRecordingActiveChangedListener dell'oggetto Call . Per le nuove versioni beta, tali API sono state spostate come funzionalità estesa di Call come descritto di seguito.

Nota

Questa API viene fornita come anteprima per gli sviluppatori e potrebbe essere modificata in base ai commenti ricevuti. Non usare questa API in un ambiente di produzione. Per usare questa API, usare la versione "beta" di ACS Calling Android SDK

La registrazione delle chiamate è una funzionalità estesa dell'oggetto Call principale. È prima necessario ottenere l'oggetto funzionalità di registrazione:

RecordingCallFeature callRecordingFeature = call.feature(Features.RECORDING);

Quindi, per controllare se la chiamata viene registrata, esaminare la isRecordingActive proprietà di callRecordingFeature . Restituisce boolean.

boolean isRecordingActive = callRecordingFeature.isRecordingActive();

È anche possibile sottoscrivere la registrazione delle modifiche:

private void handleCallOnIsRecordingChanged(PropertyChangedEvent args) {
	boolean isRecordingActive = callRecordingFeature.isRecordingActive();
}

callRecordingFeature.addOnIsRecordingActiveChangedListener(handleCallOnIsRecordingChanged);

Se si vuole avviare la registrazione dall'applicazione, seguire prima di tutto Panoramica della registrazione delle chiamate per i passaggi per configurare la registrazione delle chiamate.

Dopo aver impostato la registrazione delle chiamate nel server, dall'applicazione Android è necessario ottenere il valore dalla chiamata e quindi inviarlo al server per avviare il processo ServerCallId di registrazione. Il ServerCallId valore può essere trovato usando dalla classe , che è possibile trovare getServerCallId()CallInfo nell'oggetto classe usando 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) {

}

Quando la registrazione viene avviata dal server, l'evento handleCallOnIsRecordingChanged viene attivato e il valore di sarà callRecordingFeature.isRecordingActive()true .

Proprio come per avviare la registrazione delle chiamate, se si vuole arrestare la registrazione delle chiamate è necessario ottenere e inviarlo al server di registrazione in modo che possa arrestare la ServerCallId registrazione delle chiamate.

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) {

}

Quando la registrazione viene arrestata dal server, handleCallOnIsRecordingChanged l'evento viene attivato e il valore di sarà callRecordingFeature.isRecordingActive()false .

Configurare il sistema

Creare il progetto Xcode

In Xcode creare un nuovo progetto iOS e selezionare il modello Single View Application. Questa guida introduttiva usa il framework SwiftUI,quindi è necessario impostare Language (Linguaggio) su Swifte Interfaccia utente su SwiftUI.

Non si creerà unit test o test dell'interfaccia utente durante questa guida introduttiva. È possibile deselezionare le caselle di testo Includi unit test e Includi test dell'interfaccia utente.

Screenshot che mostra la finestra per la creazione di un progetto all'interno di Xcode.

Installare il pacchetto e le dipendenze con CocoaPods

  1. Creare un file Podfile per l'applicazione, come questo:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Eseguire pod install.

  3. Aprire .xcworkspace con Xcode.

Richiedere l'accesso al microfono

Per accedere al microfono del dispositivo, è necessario aggiornare l'elenco delle proprietà delle informazioni dell'app con NSMicrophoneUsageDescription . Impostare il valore associato su un oggetto che verrà incluso nella finestra di dialogo che string il sistema usa per richiedere l'accesso all'utente.

Fare clic con il pulsante Info.plist destro del mouse sulla voce dell'albero del progetto e scegliere Apri Info.plist>>. Aggiungere le righe seguenti nella sezione di primo <dict> livello e quindi salvare il file.

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

Configurare il framework dell'app

Aprire il file ContentView.swift del progetto e aggiungere una dichiarazione all'inizio del file per importare la AzureCommunicationCalling libreria. Importare anche AVFoundation . Sarà necessario per le richieste di autorizzazione audio nel codice.

import AzureCommunicationCalling
import AVFoundation

Inizializzare CallAgent

Per creare un'istanza di da , è necessario usare un metodo che restituisce in modo asincrono un CallAgentCallClient oggetto dopo callClient.createCallAgentCallAgent l'inizializzazione.

Per creare un client di chiamata, è necessario passare un CommunicationTokenCredential oggetto .

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)
}

Passare CommunicationTokenCredential l'oggetto creato a CallClient e impostare il nome visualizzato.

self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS ACS 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")
        }
})

Registrare le chiamate

Avviso

Fino alla versione 1.1.0 e alla versione beta 1.1.0-beta.1 di ACS Calling iOS SDK include come parte dell'oggetto e fa parte del isRecordingActiveCall delegato didChangeRecordingStateCallDelegate . Per le nuove versioni beta, tali API sono state spostate come funzionalità estesa di Call come descritto di seguito.

Nota

Questa API viene fornita come anteprima per gli sviluppatori e potrebbe essere modificata in base ai commenti ricevuti. Non usare questa API in un ambiente di produzione. Per usare questa API, usare la versione "beta" di ACS Calling iOS SDK

La registrazione delle chiamate è una funzionalità estesa dell'oggetto Call principale. È prima necessario ottenere l'oggetto funzionalità di registrazione:

let callRecordingFeature = call.feature(Features.recording)

Quindi, per controllare se la chiamata viene registrata, esaminare la isRecordingActive proprietà di callRecordingFeature . Restituisce Bool.

let isRecordingActive = callRecordingFeature.isRecordingActive;

È anche possibile sottoscrivere la registrazione delle modifiche implementando RecordingCallFeatureDelegate il delegato nella classe con l'evento didChangeRecordingState :

callRecordingFeature.delegate = self

// didChangeRecordingState is a member of RecordingCallFeatureDelegate
public func recordingCallFeature(_ recordingCallFeature: RecordingCallFeature, didChangeRecordingState args: PropertyChangedEventArgs) {
    let isRecordingActive = recordingFeature.isRecordingActive
}

Se si vuole avviare la registrazione dall'applicazione, seguire prima di tutto Panoramica della registrazione delle chiamate per i passaggi per configurare la registrazione delle chiamate.

Dopo aver impostato la registrazione delle chiamate nel server, dall'applicazione iOS è necessario ottenere il valore dalla chiamata e quindi inviarlo al server per avviare il processo ServerCallId di registrazione. Il ServerCallId valore può essere trovato usando dalla classe , che è possibile trovare getServerCallId()CallInfo nell'oggetto classe usando getInfo() .

// Send serverCallId to your recording server to start the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }

Quando la registrazione viene avviata dal server, l'evento didChangeRecordingState viene attivato e il valore di sarà recordingFeature.isRecordingActivetrue .

Proprio come per avviare la registrazione delle chiamate, se si vuole arrestare la registrazione delle chiamate è necessario ottenere e inviarlo al server di registrazione in modo che possa arrestare la ServerCallId registrazione delle chiamate.

// Send serverCallId to your recording server to stop the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }

Quando la registrazione viene arrestata dal server, didChangeRecordingState l'evento viene attivato e il valore di sarà recordingFeature.isRecordingActivefalse .

Passaggi successivi