Visualización del estado de transcripción de llamadas en el cliente
Nota:
El estado de transcripción de llamadas solo está disponible en reuniones de Teams. Actualmente no hay compatibilidad con el estado de transcripción de llamadas para las llamadas de Azure Communication Services a Azure Communication Services.
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
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un recurso de Communication Services implementado. Cree un recurso de Communication Services.
- Un token de acceso de usuario para habilitar el cliente de llamada. Para más información, consulte Inicio rápido: Creación y administración de tokens de acceso.
- Opcional: Realice el inicio rápido para agregar llamadas de voz a la aplicación
Instalación del SDK
Busque el archivo build.gradle de nivel de proyecto y agregue mavenCentral()
a la lista de repositorios en buildscript
y allprojects
:
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
A continuación, en el archivo build.gradle de nivel de módulo, agregue las siguientes líneas a la sección dependencies
:
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
. Esta llamada 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 acceder a DeviceManager
, primero debe crear una instancia de callAgent
. 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 llamadas de Azure Communication Services, Android SDK tiene isTranscriptionActive
y addOnIsTranscriptionActiveChangedListener
como parte del objeto Call
. En el caso de las versiones beta nuevas, esas API se movieron como una característica extendida de Call
, tal como se describe a continuación.
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 nuevo proyecto de iOS y seleccione la plantilla Aplicación de una vista. En este inicio rápido se usa el marco SwiftUI, por lo que debe establecer el lenguaje en Swift y establecer la interfaz en SwiftUI.
Durante este inicio rápido, no se van a crear pruebas. Puede desactivar la casilla Incluir pruebas.
Instalación del paquete y las dependencias mediante CocoaPods
Cree un Podfile para la aplicación, como en este ejemplo:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
Ejecute
pod install
.Abra
.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 mediante NSMicrophoneUsageDescription
. Establecerá el valor asociado a una cadena que se va a 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. Agregue una declaración import
a 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, pase 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 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")
}
})
Advertencia
Hasta la versión 1.1.0 y la versión beta 1.1.0-beta.1 de llamadas de Azure Communication Services, 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 nuevas, esas API se movieron como una característica extendida de Call
, tal como se describe a continuación.
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
}
Configuración del sistema
Creación del proyecto de Visual Studio
En el caso de una aplicación para UWP, en Visual Studio 2022, cree un nuevo proyecto de Aplicación vacía (Universal Windows). Después de escribir el nombre del proyecto, puede elegir cualquier Windows SDK posterior a 10.0.17763.0.
En el caso de una aplicación WinUI 3, cree un nuevo proyecto con la plantilla Aplicación vacía, empaquetada (WinUI 3 en escritorio) para configurar una aplicación WinUI 3 de una sola página. Se requiere la versión 1.3 o posterior del SDK de aplicaciones de Windows.
Instalación del paquete y las dependencias mediante el Administrador de paquetes NuGet
Las API y bibliotecas de SDK de llamadas están disponibles públicamente a través de un paquete NuGet.
Los pasos siguientes ejemplifican cómo encontrar, descargar e instalar el paquete NuGet del SDK de llamada:
- Abra el Administrador de paquetes NuGet seleccionando Herramientas>Administrador de paquetes NuGet>Administrar paquetes NuGet para la solución.
- Seleccione Examinar y, luego, escriba
Azure.Communication.Calling.WindowsClient
en el cuadro de búsqueda. - Asegúrese de que la casilla Incluir versión preliminar esté activada.
- Seleccione el paquete
Azure.Communication.Calling.WindowsClient
y, luego, elijaAzure.Communication.Calling.WindowsClient
1.4.0-beta.1 o una versión más reciente. - Active la casilla correspondiente al proyecto de Communication Services en la pestaña derecha.
- Seleccione el botón Instalar.
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 transcriptionFeature = call.Features.Transcription;
Luego, a fin de comprobar si se está transcribiendo la llamada, revise la propiedad IsTranscriptionActive
de transcriptionFeature
. Devuelve boolean
.
boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;
También puede suscribirse a los cambios en la transcripción:
private async void Call__OnIsTranscriptionActiveChanged(object sender, PropertyChangedEventArgs args)
boolean isTranscriptionActive = transcriptionFeature.IsTranscriptionActive();
}
transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;