Exibir o estado de transcrição de chamada no cliente
Observação
O estado de transcrição de chamada só está disponível em reuniões do Teams. Atualmente, não há suporte para o estado de transcrição de chamadas nos Serviços de Comunicação do Azure para as chamadas dos Serviços de Comunicação do Azure.
Ao usar a transcrição de chamada, é possível permitir que os usuários saibam que uma chamada está sendo transcrita. Veja aqui como fazer isso.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um recurso dos Serviços de Comunicação implantado. Crie um recurso dos Serviços de Comunicação.
- Um token de acesso de usuário para habilitar o cliente de chamada. Para saber mais, confira Criar e gerenciar token de acesso.
- Opcional: conclua o guia de início rápido para adicionar uma chamada de voz ao seu aplicativo
Instalar o SDK
Localize o arquivo build.gradle no nível do projeto e adicione mavenCentral()
à lista de repositórios em buildscript
e allprojects
:
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
Em seguida, no arquivo build.gradle no nível do módulo, adicione as seguintes linhas à seção dependencies
:
dependencies {
...
implementation 'com.azure.android:azure-communication-calling:1.0.0'
...
}
Inicializar objetos necessários
Para criar uma instância CallAgent
, você precisa chamar o método createCallAgent
em uma instância CallClient
. Essa chamada retorna de forma assíncrona um objeto da instância CallAgent
.
O método createCallAgent
usa CommunicationUserCredential
como argumento, que encapsula um token de acesso.
Para acessar DeviceManager
, você precisará criar uma instância callAgent
primeiro. Em seguida, você poderá usar o método CallClient.getDeviceManager
para obter 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 definir um nome de exibição para o chamador, 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();
Aviso
Até a versão 1.1.0 e versão beta 1.1.0-beta.1 do SDK do Android de Chamada dos Serviços de Comunicação do Azure tem o isTranscriptionActive
e addOnIsTranscriptionActiveChangedListener
como parte do objeto Call
. Nas versões beta mais recentes, essas APIs foram movidas como um recurso estendido de Call
exatamente como descrito abaixo.
A transcrição de chamadas é um recurso estendido do objeto principal Call
. Primeiro, você precisa obter o objeto do recurso de transcrição:
TranscriptionCallFeature callTranscriptionFeature = call.feature(Features.TRANSCRIPTION);
Em seguida, para verificar se a chamada está sendo transcrita, inspecione a isTranscriptionActive
de propriedadecallTranscriptionFeature
. Ele retorna boolean
.
boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();
Você também pode assinar alterações na transcrição:
private void handleCallOnIsTranscriptionChanged(PropertyChangedEvent args) {
boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();
}
callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);
Configurar o backup do sistema
Criar o projeto do Xcode
No Xcode, crie um projeto do iOS e selecione o modelo Aplicativo de Modo de Exibição Único. Este início rápido usa a estrutura SwiftUI, portanto, você deve definir a Linguagem como Swift e a Interface como SwiftUI.
Você não criará testes durante este início rápido. Fique à vontade para limpar a caixa de seleção Incluir Testes.
Instalar o pacote e as dependências usando o CocoaPods
Crie um Podfile para seu aplicativo, como este exemplo:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
Execute
pod install
.Abra
.xcworkspace
usando o Xcode.
Solicitar acesso ao microfone
Para acessar o microfone do dispositivo, você precisa atualizar a lista de propriedades de informações do aplicativo usando NSMicrophoneUsageDescription
. Defina o valor associado a uma cadeia de caracteres que será incluída na caixa de diálogo que o sistema usa para solicitar acesso do usuário.
Clique com o botão direito do mouse na entrada Info.plist da árvore de projeto e selecione Abrir Como>Código-Fonte. Adicione as linhas a seguir na seção do nível superior<dict>
e, em seguida, salve o arquivo.
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>
Configurar o framework de aplicativos
Abra o arquivo ContentView.swift do projeto. Adicione uma declaração import
à parte superior do arquivo para importar a biblioteca AzureCommunicationCalling
. Além disso, importeAVFoundation
. Você precisará dela para as solicitações de permissão do áudio no código.
import AzureCommunicationCalling
import AVFoundation
Inicialização do CallAgent
Para criar umaCallAgent
instânciaCallClient
,você precisa usar um método callClient.createCallAgent
que retorne de modo assíncrono um objetoCallAgent
depois que ele for inicializado.
Para criar um cliente de chamada, passe um 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)
}
Transmita o objeto CommunicationTokenCredential
que você criou para CallClient
e defina o nome de exibição:
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")
}
})
Aviso
Até a versão 1.1.0 e a versão beta 1.1.0-beta.1, o SDK do iOS de chamadas dos Serviços de Comunicação do Azure tem o isTranscriptionActive
como parte do objeto Call
, e o didChangeTranscriptionState
como parte do CallDelegate
delegado. Nas versões beta mais recentes, essas APIs foram movidas como um recurso estendido de Call
exatamente como descrito abaixo.
A transcrição de chamadas é um recurso estendido do objeto principal Call
. Primeiro, você precisa obter o objeto do recurso de transcrição:
let callTranscriptionFeature = call.feature(Features.transcription)
Em seguida, para verificar se a chamada está sendo transcrita, inspecione a propriedade isTranscriptionActive
de callTranscriptionFeature
. Ele retorna Bool
.
let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;
Você também pode assinar as alterações de transcrições implementando o TranscriptionCallFeatureDelegate
delegado em sua classe com o evento didChangeTranscriptionState
:
callTranscriptionFeature.delegate = self
// didChangeTranscriptionState is a member of TranscriptionCallFeatureDelegate
public func transcriptionCallFeature(_ transcriptionCallFeature: TranscriptionCallFeature, didChangeTranscriptionState args: PropertyChangedEventArgs) {
let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive
}
Configurar o backup do sistema
Criar o projeto do Visual Studio
Para um aplicativo UWP, no Visual Studio 2022, crie um projeto Aplicativo em Branco (Universal do Windows). Depois de inserir o nome do projeto, fique à vontade para escolher qualquer SDK do Windows posterior a 10.0.17763.0.
Para um aplicativo WinUI 3, crie um novo projeto com o modelo Aplicativo em Branco, Empacotado (WinUI 3 na Área de Trabalho) para configurar um aplicativo WinUI 3 de página única. O SDK do Aplicativo do Windows versão 1.3 ou posterior é necessário.
Instalar o pacote e as dependências usando o Gerenciador de Pacotes do NuGet
As bibliotecas e as APIs do SDK de Chamada estão disponíveis publicamente por meio de um pacote NuGet.
As etapas a seguir exemplificam como localizar, baixar e instalar o pacote NuGet do SDK de chamada:
- Abra o Gerenciador de Pacotes NuGet selecionando Ferramentas>Gerenciador de Pacotes do NuGet>Gerenciar Pacotes do NuGet para Solução.
- Selecione Procurar e, em seguida, insira
Azure.Communication.Calling.WindowsClient
na caixa de pesquisa. - Verifique se a caixa de seleção Incluir pré-lançamento está marcada.
- Selecione o pacote
Azure.Communication.Calling.WindowsClient
e selecioneAzure.Communication.Calling.WindowsClient
1.4.0-beta.1 ou uma versão mais recente. - Marque a caixa de seleção que corresponde ao projeto dos Serviços de Comunicação na guia à direita.
- Selecione o botão Instalar.
A transcrição de chamadas é um recurso estendido do objeto principal Call
. Primeiro, você precisa obter o objeto do recurso de transcrição:
TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;
Em seguida, para verificar se a chamada está sendo transcrita, inspecione a IsTranscriptionActive
de propriedadetranscriptionFeature
. Ele retorna boolean
.
boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;
Você também pode assinar alterações na transcrição:
private async void Call__OnIsTranscriptionActiveChanged(object sender, PropertyChangedEventArgs args)
boolean isTranscriptionActive = transcriptionFeature.IsTranscriptionActive();
}
transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;