Visualizzare lo stato di trascrizione delle chiamate nel client

Nota

Lo stato di trascrizione delle chiamate è disponibile solo nelle riunioni di Teams. Attualmente non è disponibile alcun supporto per lo stato di trascrizione delle chiamate per Servizi di comunicazione di Azure alle chiamate Servizi di comunicazione di Azure.

Quando si usa la trascrizione delle chiamate, è possibile informare gli utenti che una chiamata è in corso di trascrizione. Ecco come.

Prerequisiti

Installazione dell'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 del 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 . Restituisce 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();

Avviso

Fino alla versione 1.1.0 e alla versione beta 1.1.0-beta.1 del Servizi di comunicazione di Azure Calling Android SDK include isTranscriptionActive e addOnIsTranscriptionActiveChangedListener fanno parte dell'oggetto Call . Per le nuove versioni beta, tali API sono state spostate come funzionalità estesa di Call come descritto di seguito.

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

TranscriptionCallFeature callTranscriptionFeature = call.feature(Features.TRANSCRIPTION);

Quindi, per verificare se la chiamata viene trascritta, controllare la isTranscriptionActive proprietà di callTranscriptionFeature. Restituisce boolean.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

È anche possibile sottoscrivere le modifiche nella trascrizione:

private void handleCallOnIsTranscriptionChanged(PropertyChangedEvent args) {
    boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();
}

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

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 Il linguaggio su Swift e l'interfaccia utente su SwiftUI.

Durante questa guida introduttiva non verranno creati unit test o test dell'interfaccia utente. 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 usata 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")
        }
})

Avviso

Fino alla versione 1.1.0 e alla versione beta 1.1.0-beta.1 di Servizi di comunicazione di Azure Calling iOS SDK ha come isTranscriptionActive parte dell'oggetto Call e didChangeTranscriptionState fa parte del CallDelegate delegato. Per le nuove versioni beta, tali API sono state spostate come funzionalità estesa di Call come descritto di seguito.

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

let callTranscriptionFeature = call.feature(Features.transcription)

Quindi, per verificare se la chiamata è trascritta, controllare la isTranscriptionActive proprietà di callTranscriptionFeature. Restituisce Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

È anche possibile sottoscrivere le modifiche di trascrizione implementando TranscriptionCallFeatureDelegate il delegato nella classe con l'evento didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

// didChangeTranscriptionState is a member of TranscriptionCallFeatureDelegate
public func transcriptionCallFeature(_ transcriptionCallFeature: TranscriptionCallFeature, didChangeTranscriptionState args: PropertyChangedEventArgs) {
    let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive
}

Configurazione

Creazione del progetto di Visual Studio

Per l'app UWP, in Visual Studio 2022 creare un nuovo Blank App (Universal Windows) progetto. Dopo aver immesso il nome del progetto, è possibile scegliere qualsiasi windows SDK maggiore di 10.0.17763.0.

Per l'app WinUI 3, creare un nuovo progetto con il Blank App, Packaged (WinUI 3 in Desktop) modello per configurare un'app WinUI 3 a pagina singola. SDK per app di Windows versione 1.3 e successive è necessario.

Installare il pacchetto e le dipendenze con NuGet Gestione pacchetti

Le API e le librerie di Calling SDK sono disponibili pubblicamente tramite un pacchetto NuGet. I passaggi seguenti illustrano come trovare, scaricare e installare il pacchetto NuGet di Calling SDK.

  1. Aprire Gestione pacchetti NuGet (Tools -NuGet Package Manager> ->Manage NuGet Packages for Solution)
  2. Fare clic su Browse e quindi digitare Azure.Communication.Calling.WindowsClient nella casella di ricerca.
  3. Assicurarsi che Include prerelease la casella di controllo sia selezionata.
  4. Fare clic sul Azure.Communication.Calling.WindowsClient pacchetto, selezionare Azure.Communication.Calling.WindowsClient1.4.0-beta.1 o versione successiva.
  5. Selezionare la casella di controllo corrispondente al progetto CS nella scheda a destra.
  6. Fare clic sul pulsante Install.

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

TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;

Quindi, per verificare se la chiamata viene trascritta, controllare la IsTranscriptionActive proprietà di transcriptionFeature. Restituisce boolean.

boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;

È anche possibile sottoscrivere le modifiche nella trascrizione:

private async void Call__OnIsTranscriptionActiveChanged(object sender, PropertyChangedEventArgs args)
    boolean isTranscriptionActive = transcriptionFeature.IsTranscriptionActive();
}

transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;

Passaggi successivi