Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
- Um token de acesso de usuário para ativar o cliente que realiza chamadas. Para obter mais informações, consulte Criar e gerenciar tokens de acesso.
- Opcional: conclua o início rápido para adicionar chamadas de voz ao seu aplicativo.
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álidoCall 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 tentativasCall Agentexpõe o erroconnectionIssue.
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:
- Abra o Gestor de Pacotes NuGet selecionando Ferramentas>Gestor de Pacotes NuGet>Gerir Pacotes NuGet para a Solução.
- Selecione Procurar e digite 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, em seguida, selecione Azure.Communication.Calling.WindowsClient1.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 do Azure no painel direito.
- 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.
Instale 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' endExecutar
pod install.Abra
.xcworkspaceusando 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) . |