Partilhar via


Obtenha recursos locais

Durante uma chamada, um participante tem permissão para ativar o vídeo, ligar o microfone ou compartilhar a tela?

Essas permissões são exemplos de capacidades de participantes que podem ser obtidas a partir da operação da API de capacidades. Você pode usar recursos para criar uma interface de usuário que mostre apenas os botões relacionados às ações que o usuário local pode executar.

Pré-requisitos

Instale o SDK

Use o npm install comando para instalar o SDK Comum e de Chamada dos Serviços de Comunicação do Azure para JavaScript.

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

Inicializar objetos necessários

Uma CallClient instância é necessária para a maioria das operações de chamada. Ao criar uma nova CallClient instância, você pode configurá-la com opções personalizadas, como uma Logger instância.

Com a CallClient instância, pode-se criar uma CallAgent instância chamando o createCallAgent. Esse método retorna de forma assíncrona um objeto de CallAgent instância.

O createCallAgent método usa CommunicationTokenCredential como argumento. Ele aceita um token de acesso de usuário.

Você pode usar o método getDeviceManager na instância CallClient para aceder deviceManager.

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 console, file, buffer, REST API, or whatever location you want
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()

Gerenciar a conectividade do SDK com a infraestrutura da Microsoft

A Call Agent instância ajuda você a gerenciar chamadas (para ingressar ou iniciar chamadas). Para funcionar, seu SDK de chamada precisa se conectar à infraestrutura da Microsoft para receber notificações de chamadas recebidas e coordenar outros detalhes da chamada. O seu Call Agent tem dois estados possíveis:

Conectado - Um Call Agent valor connectionStatue significa que o SDK do Connected cliente está conectado e é capaz de receber notificações da infraestrutura da Microsoft.

Desconectado - Um valor Call Agent de connectionStatus de Disconnected indica que há um problema que está a impedir o SDK de se conectar corretamente. Call Agent deve ser recriado.

  • invalidToken: Se um token expirou ou é inválido Call Agent , a instância se desconecta com esse erro.
  • connectionIssue: Se houver um problema com o cliente se conectando à infraestrutura da Microsoft, depois de muitas novas tentativas Call Agent expõe o erro connectionIssue.

Você pode verificar se seu local Call Agent está conectado à infraestrutura da Microsoft inspecionando o valor atual da connectionState propriedade. Durante uma chamada ativa, você pode ouvir o connectionStateChanged evento para determinar se Call Agent muda do estado Conectado para Desconectado.

const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'

const connectionStateCallback = (args) => {
    console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
    // it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);

A capacidade de visualizar recursos é um recurso estendido da API principal Call . Ele permite que você obtenha os recursos do participante local na chamada atual.

O recurso permite o registo de um ouvinte de eventos para monitorizar alterações nas funcionalidades.

Obtenha a funcionalidade de capacidades

const capabilitiesFeature = this.call.feature(Features.Capabilities);

Obtenha as capacidades do participante local

O objeto capabilities tem as capacidades dos participantes locais e é do tipo ParticipantCapabilities. As propriedades dos recursos incluem:

  • isPresent indica se uma capacidade está presente.
  • razão indica o motivo da resolução de capacidade.
const capabilities =  capabilitiesFeature.capabilities;

Inscreva-se no capabilitiesChanged evento:

capabilitiesFeature.on('capabilitiesChanged', (capabilitiesChangeInfo) => {
    for (const [key, value] of Object.entries(capabilitiesChangeInfo.newValue)) {
        if(key === 'turnVideoOn' && value.reason != 'FeatureNotSupported') {
             (value.isPresent) ? this.setState({ canOnVideo: true }) : this.setState({ canOnVideo: false });
             continue;
        }
        if(key === 'unmuteMic' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canUnMuteMic: true }) : this.setState({ canUnMuteMic: false });
            continue;
        }
        if(key === 'shareScreen' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canShareScreen: true }) : this.setState({ canShareScreen: false });
            continue;
        }
        if(key === 'spotlightParticipant' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canSpotlight: true }) : this.setState({ canSpotlight: false });
            continue;
        }
        if(key === 'raiseHand' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canRaiseHands: true }) : this.setState({ canRaiseHands: false });
            continue;
        }
        if(key === 'muteOthers' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canMuteOthers: true }) : this.setState({ canMuteOthers: false });
            continue;
        }
        if(key === 'reaction' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canReact: true }) : this.setState({ canReact: false });
            continue;
        }
        if(key === 'forbidOthersAudio' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canForbidOthersAudio: true }) : this.setState({ canForbidOthersAudio: false });
            continue;
        }
        if(key === 'forbidOthersVideo' && value.reason != 'FeatureNotSupported') {
            (value.isPresent) ? this.setState({ canForbidOthersVideo: true }) : this.setState({ canForbidOthersVideo: false });
            continue;
        }
    }
});

Capacidades expostas

  • turnVideoOn: Capacidade de ativar o vídeo
  • unmuteMic: Capacidade de enviar áudio
  • shareScreen: Capacidade de compartilhar tela
  • removeParticipant: Capacidade de remover um participante
  • hangUpForEveryOne: Capacidade de desligar para todos
  • addCommunicationUser: Capacidade de adicionar um usuário de comunicação
  • addTeamsUser: Capacidade de adicionar usuário do Teams
  • addPhoneNumber: Capacidade de adicionar número de telefone
  • manageLobby: Capacidade de gerenciar lobby (somente beta)
  • spotlightParticipant: Capacidade de destacar o Participante (apenas beta)
  • removeParticipantsSpotlight: Capacidade de remover o destaque do participante (somente beta)
  • startLiveCaptions: Capacidade de iniciar legendas ao vivo (somente beta)
  • stopLiveCaptions: Capacidade de parar legendas ao vivo (somente beta)
  • raiseHand: Capacidade de levantar a mão (apenas beta)
  • muteOthers: Capacidade de silenciar suavemente participantes remotos na reunião
  • reação: Capacidade de reagir na reunião (apenas beta)
  • viewAttendeeNames: Capacidade de exibir nomes de participantes na reunião
  • forbidOthersAudio: Capacidade de proibir o áudio dos participantes na reunião ou chamada de grupo
  • forbidOthersVideo: Capacidade de proibir o vídeo dos participantes na reunião ou chamada de grupo

Instale o SDK

Localize seu arquivo no nível build.gradle do projeto e adicione mavenCentral() à lista de repositórios em buildscript e allprojects:

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

Em seguida, no arquivo de módulo de nível build.gradle, adicione as seguintes linhas na seção dependencies.

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

Inicializar os objetos necessários

Para criar uma CallAgent instância, você precisa chamar o createCallAgent método em uma CallClient instância. A chamada retorna um objeto de instância CallAgent de forma assíncrona.

O createCallAgent método recebe CommunicationUserCredential como um argumento, que encapsula um token de acesso.

Para aceder DeviceManager, é necessário criar uma instância callAgent primeiro. Então você pode usar o CallClient.getDeviceManager método 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();

A capacidade de visualizar recursos é um recurso estendido da API principal Call . Ele permite que você obtenha os recursos do participante local na chamada atual.

O recurso permite o registo de um ouvinte de eventos para monitorizar alterações nas funcionalidades.

Para usar o recurso de chamada de recursos para Windows, a primeira etapa é obter o objeto de API do recurso de recursos:

Obtenha a funcionalidade de capacidades

private CapabilitiesCallFeature capabilitiesCallFeature;
capabilitiesCallFeature = call.feature(Features.CAPABILITIES);

Obtenha as capacidades do participante local

O objeto capabilities tem as capacidades dos participantes locais e é do tipo ParticipantCapability. As propriedades dos recursos incluem:

  • isAllowed indica se um recurso pode ser usado.
  • razão indica o motivo da resolução de capacidade.
List<ParticipantCapability> capabilities = capabilitiesCallFeature.getCapabilities();

Inscreva-se no evento capabilitiesChanged


capabilitiesCallFeature.addOnCapabilitiesChangedListener(this::OnCapabilitiesChanged);

private void OnCapabilitiesChanged(CapabilitiesChangedEvent args)
{
    String event = String.format("Capabilities Event: %s", args.getReason().toString());
    Log.i("CapabilitiesInfo", event);
    for (ParticipantCapability capability : args.getChangedCapabilities())
    {
        Log.i("CapabilitiesInfo", capability.getType().toString() + " is " capability.getReason().toString());
    }
}

Capacidades expostas

  • TurnVideoOn: Capacidade de ativar o vídeo
  • UnmuteMicrophone: Capacidade de ativar o mudo do microfone
  • ShareScreen: Capacidade de compartilhar tela
  • RemoveParticipant: Capacidade de remover um participante
  • HangUpForEveryone: Possibilidade de desligar para todos
  • AddCommunicationUser: Capacidade de adicionar um usuário de comunicação
  • AddTeamsUser: Capacidade de adicionar usuário do Teams
  • AddPhoneNumber: Capacidade de adicionar número de telefone
  • ManageLobby: Capacidade de gerir o lobby
  • SpotlightParticipant: Capacidade de destacar o participante
  • RemoveParticipantSpotlight: Função para remover o destaque de um participante
  • BlurBackground: Capacidade de desfocar o fundo
  • CustomBackground: Capacidade de aplicar um plano de fundo personalizado
  • StartLiveCaptions: Capacidade de iniciar legendas ao vivo
  • RaiseHand: Capacidade de levantar a mão
  • MuteOthers: Capacidade de silenciar suavemente participantes remotos na reunião

Configure o seu sistema

Siga estes passos para configurar o seu sistema.

Criar o projeto do Visual Studio

Para desenvolver uma aplicação da Plataforma Universal do Windows, no Visual Studio 2022, crie um novo projeto Aplicação em Branco (Universal Windows). Depois de inserir o nome do projeto, sinta-se à vontade para escolher qualquer SDK do Windows posterior a 10.0.17763.0.

Para uma aplicação WinUI 3, crie um novo projeto com o modelo Aplicativo em branco (empacotado) (WinUI 3 no ambiente de trabalho) para configurar uma aplicação WinUI 3 de página única. É necessário o SDK de Aplicativos Windows versão 1.3 ou posterior.

Instalar o pacote e as dependências usando o Gerenciador de Pacotes NuGet

As APIs e bibliotecas do SDK de chamada estão disponíveis publicamente por meio de um pacote NuGet.

Para localizar, baixar e instalar o pacote NuGet do SDK de Chamadas:

  1. Abra o Gestor de Pacotes NuGet selecionando Ferramentas>Gestor de Pacotes NuGet>Gerir Pacotes NuGet para a Solução.
  2. Selecione Procurar e digite Azure.Communication.Calling.WindowsClient na caixa de pesquisa.
  3. Verifique se a caixa de seleção Incluir pré-lançamento está marcada.
  4. Selecione o pacote Azure.Communication.Calling.WindowsClient e, em seguida, selecione Azure.Communication.Calling.WindowsClient1.4.0-beta.1 ou uma versão mais recente.
  5. Marque a caixa de seleção que corresponde ao projeto dos Serviços de Comunicação do Azure no painel direito.
  6. Selecione Instalar.

A capacidade de visualizar recursos é um recurso estendido da API principal Call . Ele permite que você obtenha os recursos do participante local na chamada atual.

O recurso permite o registo de um ouvinte de eventos para monitorizar alterações nas funcionalidades.

Para usar o recurso de chamada Capabilities para Windows, a primeira etapa é obter o objeto Capabilities feature API:

Obtenha a funcionalidade de capacidades

private CapabilitiesCallFeature capabilitiesCallFeature;
capabilitiesCallFeature = call.Features.Capabilities;

Obtenha as capacidades do participante local

O objeto capabilities tem as capacidades dos participantes locais e é do tipo ParticipantCapability. As propriedades dos recursos incluem:

  • isAllowed indica se um recurso pode ser usado.
  • razão indica o motivo da resolução de capacidade.
var capabilities = capabilitiesCallFeature.Capabilities;

Inscreva-se no evento capabilitiesChanged

capabilitiesCallFeature.CapabilitiesChanged += Call__OnCapabilitiesChangedAsync;

private async void Call__OnCapabilitiesChangedAsync(object sender, CapabilitiesChangedEventArgs args)
{
    Trace.WriteLine(args.Reason.ToString());
    foreach (var capability in args.ChangedCapabilities)
    {
        //Prints out capability kind and resolution reason in console
        Trace.WriteLine(capability.Kind.ToString() + " is " + capability.Reason.ToString());
    }
}

Capacidades expostas

  • TurnVideoOn: Capacidade de ativar o vídeo
  • UnmuteMicrophone: Capacidade de ativar o mudo do microfone
  • ShareScreen: Capacidade de compartilhar tela
  • RemoveParticipant: Capacidade de remover um participante
  • HangUpForEveryone: Possibilidade de desligar para todos
  • AddCommunicationUser: Capacidade de adicionar um usuário de comunicação
  • AddTeamsUser: Capacidade de adicionar usuário do Teams
  • AddPhoneNumber: Capacidade de adicionar número de telefone
  • ManageLobby: Capacidade de gerir o lobby
  • SpotlightParticipant: Capacidade de destacar o participante
  • RemoveParticipantSpotlight: Função para remover o destaque de um participante
  • BlurBackground: Capacidade de desfocar o fundo
  • CustomBackground: Capacidade de aplicar um plano de fundo personalizado
  • StartLiveCaptions: Capacidade de iniciar legendas ao vivo
  • RaiseHand: Capacidade de levantar a mão
  • MuteOthers: Capacidade de silenciar suavemente participantes remotos na reunião

Configure o seu sistema

Siga estes passos para configurar o seu sistema.

Criar o projeto Xcode

No Xcode, crie um novo projeto iOS e selecione o modelo Single View App . Este artigo usa a estrutura SwiftUI, portanto, você deve definir Language como Swift e Interfacecomo SwiftUI.

Você não vai criar testes neste artigo. Sinta-se à vontade para desmarcar a caixa de seleção Incluir Testes.

Captura de tela que mostra a janela para criar um projeto no Xcode.

Instale o pacote e as dependências usando o CocoaPods

  1. Crie um Podfile para seu aplicativo, como este exemplo:

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

  3. 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 seu aplicativo usando NSMicrophoneUsageDescription. Defina o valor associado para uma cadeia de caracteres 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 do projeto e selecione Abrir como>código-fonte. Adicione as seguintes linhas na secção de nível <dict> superior e, em seguida, guarde o ficheiro.

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

Configurar a estrutura do aplicativo

Abra o ficheiro ContentView.swift do seu projeto. Adicione uma import declaração à parte superior do arquivo para importar a AzureCommunicationCalling biblioteca. Além disso, importe AVFoundation. Você precisa dele para solicitações de permissão de áudio no código.

import AzureCommunicationCalling
import AVFoundation

Inicializar CallAgent

Para criar uma CallAgent instância a partir do CallClient, você precisa usar um callClient.createCallAgent método que retorna de forma assíncrona um CallAgent objeto depois que ele é inicializado.

Para criar um cliente de chamada, passe um CommunicationTokenCredential objeto:

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

Passe o CommunicationTokenCredential objeto que você criou para CallCliente defina o nome para 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")
        }
})

A capacidade de visualizar recursos é um recurso estendido da API principal Call . Ele permite que você obtenha os recursos do participante local na chamada atual.

O recurso permite o registo de um ouvinte de eventos para monitorizar alterações nas funcionalidades.

Para usar o recurso de chamada de recursos para Windows, a primeira etapa é obter o objeto de API do recurso de recursos:

Obtenha a funcionalidade de capacidades

let capabilitiesCallFeature =call.feature(Features.capabilities)

Obtenha as capacidades do participante local

O objeto capabilities tem as capacidades dos participantes locais e é do tipo ParticipantCapability. As propriedades dos recursos incluem:

  • isAllowed indica se um recurso pode ser usado.
  • razão indica o motivo da resolução de capacidade.
var capabilities = capabilitiesCallFeature.capabilities

Inscreva-se no evento capabilitiesChanged


capabilitiesCallFeature.delegate = CapabilitiesCallDelegate()

public class CapabilitiesCallDelegate : CapabilitiesCallFeatureDelegate
{
    public func capabilitiesCallFeature(_ capabilitiesCallFeature: CapabilitiesCallFeature, didChangeCapabilities args: CapabilitiesChangedEventArgs) {
        let changedReason = args.reason
        let changedCapabilities = args.changedCapabilities
    }
}

Capacidades expostas

  • TurnVideoOn: Capacidade de ativar o vídeo
  • UnmuteMicrophone: Capacidade de ativar o mudo do microfone
  • ShareScreen: Capacidade de compartilhar tela
  • RemoveParticipant: Capacidade de remover um participante
  • HangUpForEveryone: Possibilidade de desligar para todos
  • AddCommunicationUser: Capacidade de adicionar um usuário de comunicação
  • AddTeamsUser: Capacidade de adicionar usuário do Teams
  • AddPhoneNumber: Capacidade de adicionar número de telefone
  • ManageLobby: Capacidade de gerir o lobby
  • SpotlightParticipant: Capacidade de destacar o participante
  • RemoveParticipantSpotlight: Função para remover o destaque de um participante
  • BlurBackground: Capacidade de desfocar o fundo
  • CustomBackground: Capacidade de aplicar um plano de fundo personalizado
  • StartLiveCaptions: Capacidade de iniciar legendas ao vivo
  • RaiseHand: Capacidade de levantar a mão
  • MuteOthers: Capacidade de silenciar suavemente participantes remotos na reunião

Tipos de chamada suportados

As tabelas a seguir definem a capacidade de obter recursos usando o SDK de Chamada dos Serviços de Comunicação do Azure.

Identidades e tipos de chamada

Identidades Reunião de equipas Sala Chamada 1:1 Chamada em grupo Chamada de interoperabilidade 1:1 das equipas Chamada de interoperabilidade de equipas de grupo
Utilizador dos Serviços de Comunicação ✔️ ✔️
Utilizador do Microsoft 365 ✔️ ✔️

Motivos

A tabela a seguir fornece informações adicionais sobre por que a ação não está disponível e fornece dicas sobre como disponibilizá-la.

Motivo Descrição Resolução
Capaz A ação está ativada.
CapacidadeNãoAplicávelParaOTipoDeChamada O tipo de chamada impede a ação. Considere outro tipo de chamada se necessitar dessa ação. Os tipos de chamada são: chamada 1:1, chamada em grupo, chamada de interoperabilidade 1:1 Teams, chamada de grupo de interoperabilidade 1:1 Teams, Sala e Reunião.
ClienteRestrito O ambiente de tempo de execução está bloqueando essa ação Desbloqueie a ação no seu dispositivo alterando o sistema operativo, navegadores, plataforma ou hardware. Você pode encontrar o ambiente suportado em nossa documentação.
PolíticaDeUtilizadorRestrita A política do usuário do Microsoft 365 bloqueia a ação. Habilite essa ação alterando a política atribuída ao organizador da reunião, ao iniciador da chamada ou ao usuário do Microsoft 365 usando o SDK do ACS. O usuário alvo depende do tipo de ação. Saiba mais sobre a política do Teams no Teams. O administrador do Teams pode alterar as políticas.
FunçãoRestrita A função atribuída bloqueia a ação. Promova o usuário para diferentes funções para disponibilizar a ação.
FuncionalidadeNãoSuportada A funcionalidade não é suportada neste tipo de chamada. Informe-nos no canal de Comentários do Azure que gostaria de ter esta funcionalidade disponível para este tipo de chamada.
ReuniãoRestrita A opção Reunião de equipes bloqueia a ação. O organizador ou coorganizador de reuniões do Teams precisa alterar a opção de reunião para habilitar essa ação.
Não Inicializado A funcionalidade de capacidades ainda não foi inicializada. Inscreva-se no evento capabilitiesChanged em this.call.feature(Features.Capabilities) para saber quando o recurso é inicializado.
Incapaz O tipo de usuário bloqueia a ação. A ação só é habilitada para identidades específicas. Habilite essa ação usando a identidade do Microsoft 365.
Licença Premium Teams Restrita O usuário do Microsoft 365 precisa ter a licença do Teams Premium atribuída. Habilite essa ação atribuindo a licença do Teams Premium ao organizador da reunião do Teams ou ao usuário do Microsoft 365 usando o SDK. O usuário alvo depende do tipo de ação. O administrador do Microsoft 365 pode atribuir a licença necessária.
Consentimento explícitoObrigatório É necessário consentimento para permitir a ação. Fornecer o consentimento para gravação ou transcrição chamando o método grantTeamsConsent() sob this.call.feature(Features.Recording) ou this.call.feature(Features.Transcription) .

Próximos passos