Visualización del estado de transcripción de llamadas en el cliente

Importante

La funcionalidad que se describe en este documento se encuentra actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Al usar la transcripción de llamadas, es posible que desee que los usuarios sepan que se está transcribiendo una llamada. Esta es la manera de hacerlo.

Requisitos previos

Instalación del SDK

Busque el nivel de proyecto build.gradle y asegúrese de agregar mavenCentral() a la lista de repositorios en buildscript y allprojects

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

A continuación, en el nivel de módulo build.gradle, agregue las siguientes líneas a la sección de dependencias

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

Inicialización de los objetos necesarios

Para crear una instancia de CallAgent , debe llamar al método createCallAgent en una instancia de CallClient. De este modo, se devuelve un objeto de instancia de CallAgent de manera asincrónica. El método createCallAgent toma CommunicationUserCredential como argumento, que encapsula un token de acceso. Para tener acceso a DeviceManager, debe crearse primero una instancia de callAgent y, a continuación, puede usar el método CallClient.getDeviceManager para obtener 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();

Para establecer un nombre para mostrar para el autor de la llamada, use este método 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();

Advertencia

Hasta la versión 1.1.0 y la versión beta 1.1.0-beta.1 de la llamada de ACS, Android SDK tiene isTranscriptionActive y addOnIsTranscriptionActiveChangedListener como parte del objeto Call. En el caso de las versiones beta, esas API se movieron como una característica extendida de Call, tal como se describe a continuación.

Nota

Esta API se ofrece a los desarrolladores como versión preliminar y puede cambiar en función de los comentarios que recibamos. No utilice esta API en un entorno de producción. Para usar esta API, utilice la versión "beta" del Android SDK de llamada de ACS.

La transcripción de llamadas es una característica extendida del objeto Call principal. Primero debe obtener el objeto de la característica de transcripción:

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

Luego, a fin de comprobar si se está transcribiendo la llamada, revise la propiedad isTranscriptionActive de callTranscriptionFeature. Devuelve boolean.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

También puede suscribirse a los cambios en la transcripción:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

Configuración del sistema

Creación del proyecto de Xcode

En Xcode, cree un proyecto de iOS nuevo y seleccione la plantilla Aplicación de vista única. En este inicio rápido se usa el marco SwiftUI, por lo que debe establecer el lenguaje en Swift y la interfaz de usuario en SwiftUI.

No va a crear pruebas unitarias ni pruebas de interfaz de usuario durante este inicio rápido. No dude en borrar los cuadros de texto para incluir pruebas unitarias y para incluir pruebas de IU.

Captura de pantalla que muestra la ventana para crear un proyecto en Xcode.

Instalación del paquete y las dependencias con CocoaPods

  1. Cree un podfile para la aplicación, de la siguiente manera:

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

  3. Abra el archivo .xcworkspace con Xcode.

Solicitud de acceso al micrófono

Para acceder al micrófono del dispositivo, debe actualizar la lista de propiedades de información de la aplicación con el elemento NSMicrophoneUsageDescription. Establezca el valor asociado al elemento string que se incluirá en el cuadro de diálogo que el sistema usa para solicitar acceso al usuario.

Haga clic con el botón derecho en la entrada Info.plist del árbol del proyecto y seleccione Abrir como > Código fuente. Agregue las líneas siguientes a la sección <dict> de nivel superior y guarde el archivo.

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

Instalación del marco de la aplicación

Abra el archivo ContentView.swift del proyecto y agregue una declaración import en la parte superior del archivo para importar la biblioteca AzureCommunicationCalling. Además, importe AVFoundation. Lo necesitará para las solicitudes de permiso de audio en el código.

import AzureCommunicationCalling
import AVFoundation

Inicialización de CallAgent

Para crear una instancia de CallAgent a partir de CallClient, debe usar el método callClient.createCallAgent, que devuelve de manera asincrónica un objeto CallAgent después de que se inicializa.

Para crear un cliente de llamada, debe pasar un objeto 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)
}

Pase el objeto CommunicationTokenCredential que ha creado a CallClient y establezca el nombre para mostrar.

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

Advertencia

Hasta la versión 1.1.0 y la versión beta 1.1.0-beta.1 de la llamada de ACS, el SDK de iOS tiene isTranscriptionActive como parte del objeto Call y didChangeTranscriptionState es parte del delegado CallDelegate. En el caso de las versiones beta, esas API se movieron como una característica extendida de Call, tal como se describe a continuación.

Nota

Esta API se ofrece a los desarrolladores como versión preliminar y puede cambiar en función de los comentarios que recibamos. No utilice esta API en un entorno de producción. Para usar esta API, utilice la versión "beta" del SDK de iOS de llamada de ACS.

La transcripción de llamadas es una característica extendida del objeto Call principal. Primero debe obtener el objeto de la característica de transcripción:

let callTranscriptionFeature = call.feature(Features.transcription)

Luego, a fin de comprobar si se transcribe la llamada, revise la propiedad isTranscriptionActive de callTranscriptionFeature. Devuelve Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

También puede suscribirse a los cambios de transcripción mediante la implementación del delegado TranscriptionCallFeatureDelegate en la clase con el evento didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

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

Pasos siguientes