Gestire la registrazione delle chiamate nel client

Importante

La funzionalità descritta in questo documento è attualmente disponibile 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.

La registrazione delle chiamate 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 poter funzionare, è necessario configurare la registrazione lato server .

Prerequisiti

Installare l'SDK

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

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

Inizializzare gli oggetti necessari

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

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

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

È possibile usare il getDeviceManager metodo nell'istanza CallClient di per accedere deviceManagera .

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 Azure Communication Services 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 Servizi di comunicazione di Azure Calling Web SDK.

La registrazione delle chiamate è una funzionalità estesa dell'API principale Call . È prima di tutto necessario importare le funzionalità chiamante da Calling SDK:

import { Features} from "@azure/communication-calling";

È quindi possibile ottenere l'oggetto API della funzionalità di registrazione dall'istanza di chiamata:

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

Quindi, per verificare se la chiamata è in corso di registrazione, controllare 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 livello di modulo build.gradle aggiungere le righe seguenti alla sezione dependencies

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

Inizializzare gli oggetti necessari

Per creare un'istanza CallAgent di è necessario chiamare il metodo in un'istanza createCallAgentCallClient di . In questo modo viene restituito in modo asincrono un CallAgent oggetto istanza. Il createCallAgent metodo accetta come CommunicationUserCredential argomento , che incapsula un token di accesso. Per accedere a , è necessario creare prima un'istanza DeviceManagercallAgent e quindi usare il CallClient.getDeviceManager metodo per ottenere 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 beta versione 1.1.0-beta.1 del Servizi di comunicazione di Azure Calling Android SDK include isRecordingActive e addOnIsRecordingActiveChangedListener fanno parte dell'oggetto Call . Per le nuove versioni beta, queste API sono state spostate come una 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 Servizi di comunicazione di Azure Calling Android SDK

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

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

Quindi, per verificare se la chiamata è in corso di registrazione, controllare 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 vuoi avviare la registrazione dall'applicazione, segui prima di tutto la panoramica di Registrazione chiamate per la procedura per configurare la registrazione delle chiamate.

Dopo aver configurato la registrazione delle chiamate nel server, dall'applicazione Android è necessario ottenere il ServerCallId valore dalla chiamata e quindi inviarlo al server per avviare il processo di registrazione. Il ServerCallId valore è disponibile usando getServerCallId() la CallInfo classe , disponibile 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 verrà attivato e il valore di callRecordingFeature.isRecordingActive() sarà true.

Proprio come l'avvio della registrazione delle chiamate, se vuoi interrompere la registrazione delle chiamate devi ottenere ServerCallId e inviarlo al server di registrazione in modo che possa arrestare la 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, l'evento handleCallOnIsRecordingChanged verrà attivato e il valore di callRecordingFeature.isRecordingActive() sarà 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 è consigliabile impostare Il linguaggio su Swift e l'interfaccia utente su SwiftUI.

Durante questa guida introduttiva non verranno creati unit test o test dell'interfaccia utente. È possibile deselezionare le caselle di testo Includi unit test e Includi test dell'interfaccia utente .

Screenshot that shows the window for creating a project within 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 string oggetto che verrà incluso nella finestra di dialogo utilizzata dal sistema per richiedere l'accesso dall'utente.

Fare clic con il pulsante destro del mouse sulla voce Info.plist dell'albero del progetto e scegliere Open As>Source Code (Apri come > Codice sorgente). Aggiungere le righe seguenti nella sezione di primo livello <dict> 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 import dichiarazione all'inizio del file per importare la AzureCommunicationCalling libreria. Inoltre, importare AVFoundation. Sarà necessario per le richieste di autorizzazione audio nel codice.

import AzureCommunicationCalling
import AVFoundation

Inizializzare CallAgent

Per creare un'istanza CallAgent da CallClient, è necessario usare un callClient.createCallAgent metodo che restituisce in modo asincrono un CallAgent oggetto dopo 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 l'oggetto CommunicationTokenCredential creato a CallCliente impostare il nome visualizzato.

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

Registrare le chiamate

Avviso

Fino alla versione 1.1.0 e alla versione beta 1.1.0-beta.1 del Servizi di comunicazione di Azure Calling iOS SDK ha come isRecordingActive parte dell'oggetto Call e didChangeRecordingState fa parte del CallDelegate delegato. Per le nuove versioni beta, queste API sono state spostate come una 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 Servizi di comunicazione di Azure Calling iOS SDK

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

let callRecordingFeature = call.feature(Features.recording)

Quindi, per verificare se la chiamata è in corso di registrazione, controllare 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 vuoi avviare la registrazione dall'applicazione, segui prima di tutto la panoramica di Registrazione chiamate per la procedura per configurare la registrazione delle chiamate.

Dopo aver configurato la registrazione delle chiamate nel server, dall'applicazione iOS è necessario ottenere il ServerCallId valore dalla chiamata e quindi inviarlo al server per avviare il processo di registrazione. Il ServerCallId valore è disponibile usando getServerCallId() la CallInfo classe , disponibile 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 verrà attivato e il valore di recordingFeature.isRecordingActive sarà true.

Proprio come l'avvio della registrazione delle chiamate, se vuoi interrompere la registrazione delle chiamate devi ottenere ServerCallId e inviarlo al server di registrazione in modo che possa arrestare la 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, l'evento didChangeRecordingState verrà attivato e il valore di recordingFeature.isRecordingActive sarà false.

Passaggi successivi