Partager via


Observer les fonctionnalités de l’utilisateur

Ai-je l’autorisation d’activer la vidéo, ai-je l’autorisation d’activer le micro, ai-je l’autorisation de partager l’écran ? Ces autorisations sont des exemples de fonctionnalités de participant que vous pouvez apprendre à partir de l’API de fonctionnalités. L’apprentissage des fonctionnalités peut aider à créer une interface utilisateur qui affiche uniquement les boutons liés aux actions auxquelles l’utilisateur local dispose des autorisations nécessaires.

Prérequis

Installer le SDK

Utilisez la commande npm install pour installer le SDK Azure Communication Services Common et le SDK Azure Communication Services Calling pour JavaScript :

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

Initialiser les objets nécessaires

Une instance CallClient est requise pour la plupart des opérations d’appel. Lorsque vous créez une instance CallClient, vous pouvez la configurer avec des options personnalisées comme une instance Logger.

Avec l’instance CallClient, vous pouvez créer une instance CallAgent en appelant createCallAgent. Cette méthode renvoie un objet d’instance CallAgent de manière asynchrone.

La méthode createCallAgent utilise CommunicationTokenCredential comme argument. Elle accepte un jeton d’accès utilisateur.

Vous pouvez utiliser la méthode getDeviceManager sur l’instance CallClient pour accéder à 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()

Comment gérer au mieux la connectivité du SDK à l’infrastructure Microsoft

L’instance Call Agent vous aide à gérer les appels (pour rejoindre ou démarrer des appels). Pour fonctionner, votre SDK d’appel doit se connecter à l’infrastructure Microsoft pour recevoir des notifications d’appels entrants et coordonner d’autres détails de l’appel. Votre Call Agent a deux états possibles :

Connecté : un Call Agent dont la valeur connectionStatue est égale à Connected signifie que le SDK client est connecté et capable de recevoir des notifications de l’infrastructure Microsoft.

Déconnecté : un Call Agent dont la valeur connectionStatue est égale à Disconnected indique qu’un problème empêche le SDK de se connecter correctement. Call Agent doit être recréé.

  • invalidToken : si un jeton a expiré ou n’est pas valide, l’instance Call Agent se déconnecte avec cette erreur.
  • connectionIssue : en cas de problème de connexion du client à l’infrastructure Microsoft, après plusieurs tentatives, Call Agent lève l’erreur connectionIssue.

Vous pouvez vérifier si votre Call Agent local est connecté à l’infrastructure Microsoft en inspectant la valeur actuelle de la propriété connectionState. Pendant un appel actif, vous pouvez écouter l’événement connectionStateChanged pour déterminer si Call Agent passe de l’état connecté à l’état déconnecté.

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

La fonction « fonctionnalités » est une fonction étendue de l'API Call de base qui vous permet d'obtenir les capacités du participant local à l'appel en cours.

La fonctionnalité vous permet de vous inscrire à un écouteur d’événements, d’écouter les modifications de fonctionnalité.

Inscrivez-vous à la fonctionnalité des fonctionnalités :

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

Obtenir les fonctionnalités du participant local : L’objet fonctionnalités a les fonctionnalités des participants locaux et est de type ParticipantCapabilities. Les propriétés des fonctionnalités sont les suivantes :

  • isPresent indique si une fonctionnalité est présente.
  • reason indique la raison de résolution des capacités.
const capabilities =  capabilitiesFeature.capabilities;

S’abonner à capabilitiesChanged l’événement :

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

Fonctionnalités exposées

  • turnVideoOn: possibilité d’activer la vidéo
  • unmuteMic: possibilité d’activer le micro
  • shareScreen: possibilité de partager l’écran
  • removeParticipant: possibilité de supprimer un participant
  • hangUpForEveryOne: possibilité de raccrocher pour tout le monde
  • addCommunicationUser: possibilité d’ajouter un utilisateur de communication
  • addTeamsUser: possibilité d’ajouter un utilisateur Teams
  • addPhoneNumber: possibilité d’ajouter un numéro de téléphone
  • manageLobby: possibilité de gérer la salle d’attente (bêta uniquement)
  • spotlightParticipant : possibilité de mettre à la une les participants (bêta uniquement)
  • removeParticipantsSpotlight: possibilité de supprimer le participant à la une (bêta uniquement)
  • startLiveCaptions: possibilité de démarrer des légendes en direct (bêta uniquement)
  • stopLiveCaptions: possibilité d’arrêter les légendes en direct (bêta uniquement)
  • raiseHand: possibilité de lever la main (bêta uniquement)
  • muteOthers: capacité à désactiver le micro par voie logicielle pour les participants distants dans la réunion
  • reaction: capacité à réagir dans la réunion (bêta uniquement)
  • viewAttendeeNames : Possibilité d’afficher les noms des participants à la réunion

Installer le SDK

Recherchez votre fichier build.gradle au niveau du projet et ajoutez mavenCentral() à la liste des référentiels sous buildscript et allprojects :

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

Ensuite, dans votre fichier build.gradle au niveau du module, ajoutez les lignes suivantes à la section dependencies :

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

Initialiser les objets nécessaires

Pour créer une instance CallAgent, vous devez appeler la méthode createCallAgent sur une instance CallClient. Cet appel retourne de façon asynchrone un objet d’instance CallAgent.

La méthode createCallAgent prend CommunicationUserCredential en tant qu’argument, qui encapsule un jeton d’accès.

Pour accéder à DeviceManager, vous devez d’abord créer une instance callAgent. Vous pouvez ensuite utiliser la méthode CallClient.getDeviceManager pour obtenir 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();

Pour définir un nom d’affichage pour l’appelant, utilisez cette autre méthode :

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();

La fonction « fonctionnalités » est une fonction étendue de l'API Call de base qui vous permet d'obtenir les capacités du participant local à l'appel en cours.

La fonctionnalité vous permet de vous inscrire à un écouteur d’événements, d’écouter les modifications de fonctionnalité.

Pour utiliser la fonctionnalité d’appel Fonctionnalités pour Windows, la première étape consiste à obtenir l’objet API de fonctionnalité Fonctionnalités :

Obtention la fonctionnalité Fonctionnalités

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

Obtenir les Fonctionnalités du participant local

L’objet Fonctionnalités dispose des capacités des participants locaux et est de type ParticipantCapability. Les propriétés des fonctionnalités sont les suivantes :

  • isAllowed indique si une fonctionnalité peut être utilisée.
  • reason indique la raison de résolution des capacités.
List<ParticipantCapability> capabilities = capabilitiesCallFeature.getCapabilities();

S’abonner à un événement 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());
    }
}

Fonctionnalités exposées

  • TurnVideoOn : possibilité d’activer la vidéo
  • UnmuteMicrophone : possibilité d’activer le microphone
  • ShareScreen : possibilité de partager l’écran
  • RemoveParticipant : possibilité de supprimer un participant
  • HangUpForEveryone : possibilité de raccrocher pour tout le monde
  • AddCommunicationUser : possibilité d’ajouter un utilisateur de communication
  • AddTeamsUser : possibilité d’ajouter un utilisateur Teams
  • AddPhoneNumber : possibilité d’ajouter un numéro de téléphone
  • ManageLobby : possibilité de gérer la salle d’attente
  • SpotlightParticipant : possibilité de mettre en avant un participant
  • RemoveParticipantSpotlight : possibilité d’annuler la mise en avant d’un participant
  • BlurBackground : possibilité de flouter l’arrière-plan
  • CustomBackground : possibilité d’appliquer un arrière-plan personnalisé
  • StartLiveCaptions: possibilité d’enclencher le sous-titrage en direct
  • RaiseHand : possibilité de lever la main
  • MuteOthers : capacité à désactiver le micro par voie logicielle pour les participants distants dans la réunion

Configurer votre système

Effectuez les étapes suivantes pour configurer votre système.

Créer le projet Visual Studio

Pour une application de plateforme Windows universelle, dans Visual Studio 2022, créez un projet Application vide (Windows universel). Après avoir entré le nom du projet, n’hésitez pas à choisir un kit de développement logiciel (SDK) Windows d’une version ultérieure à 10.0.17763.0.

Pour une application WinUI 3, créez un projet avec le modèle Application vide, Empaquetée (WinUI 3 dans Desktop) pour configurer une application WinUI 3 monopage. Le SDK d’application Windows version 1.3 ou ultérieure est nécessaire.

Installer le package et les dépendances à l’aide du Gestionnaire de package NuGet

Les API et les bibliothèques du Kit de développement logiciel (SDK) Appel sont accessibles au public via un package NuGet.

Pour rechercher, télécharger et installer le package NuGet du SDK d’appel :

  1. Ouvrez le Gestionnaire de package NuGet en sélectionnant Outils>Gestionnaire de package NuGet>Gérer les packages NuGet pour la solution.
  2. Sélectionnez Parcourir, puis entrez Azure.Communication.Calling.WindowsClient dans la zone de recherche.
  3. Vérifiez que la case Inclure la préversion est cochée.
  4. Sélectionnez le package Azure.Communication.Calling.WindowsClient, puis Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 ou une version plus récente.
  5. Cochez la case qui correspond au projet Azure Communication Services dans le volet de droite.
  6. Sélectionnez Installer.

La fonction « fonctionnalités » est une fonction étendue de l'API Call de base qui vous permet d'obtenir les capacités du participant local à l'appel en cours.

La fonctionnalité vous permet de vous inscrire à un écouteur d’événements, d’écouter les modifications de fonctionnalité.

Pour utiliser la fonctionnalité d’appel Fonctionnalités pour Windows, la première étape consiste à obtenir l’objet API de fonctionnalité Fonctionnalités :

Obtention la fonctionnalité Fonctionnalités

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

Obtenir les Fonctionnalités du participant local

L’objet Fonctionnalités dispose des capacités des participants locaux et est de type ParticipantCapability. Les propriétés des fonctionnalités sont les suivantes :

  • isAllowed indique si une fonctionnalité peut être utilisée.
  • reason indique la raison de résolution des capacités.
var capabilities = capabilitiesCallFeature.Capabilities;

S’abonner à un événement 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());
    }
}

Fonctionnalités exposées

  • TurnVideoOn : possibilité d’activer la vidéo
  • UnmuteMicrophone : possibilité d’activer le microphone
  • ShareScreen : possibilité de partager l’écran
  • RemoveParticipant : possibilité de supprimer un participant
  • HangUpForEveryone : possibilité de raccrocher pour tout le monde
  • AddCommunicationUser : possibilité d’ajouter un utilisateur de communication
  • AddTeamsUser : possibilité d’ajouter un utilisateur Teams
  • AddPhoneNumber : possibilité d’ajouter un numéro de téléphone
  • ManageLobby : possibilité de gérer la salle d’attente
  • SpotlightParticipant : possibilité de mettre en avant un participant
  • RemoveParticipantSpotlight : possibilité d’annuler la mise en avant d’un participant
  • BlurBackground : possibilité de flouter l’arrière-plan
  • CustomBackground : possibilité d’appliquer un arrière-plan personnalisé
  • StartLiveCaptions: possibilité d’enclencher le sous-titrage en direct
  • RaiseHand : possibilité de lever la main
  • MuteOthers : capacité à désactiver le micro par voie logicielle pour les participants distants dans la réunion

Configurer votre système

Effectuez les étapes suivantes pour configurer votre système.

Créer le projet Xcode

Dans Xcode, créez un projet iOS et sélectionnez le modèle Single View App. Cet article utilise l’infrastructure SwiftUI. Vous devez donc définir Langage sur Swift et Interface sur SwiftUI.

Vous n’allez pas créer de tests dans cet article. N’hésitez pas à désactiver la case Inclure des tests.

Capture d’écran montrant la fenêtre de création d’un projet dans Xcode.

Installer le package et les dépendances à l’aide de CocoaPods

  1. Créez un Podfile pour votre application, comme cet exemple :

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

  3. Ouvrez .xcworkspace en utilisant Xcode.

Demander l’accès au microphone

Pour accéder au microphone de l’appareil, vous devez mettre à jour la liste des propriétés d’informations de votre application à l’aide de NSMicrophoneUsageDescription. Définissez la valeur associée à une chaîne qui est incluse dans la boîte de dialogue utilisée par le système pour demander l’accès à l’utilisateur.

Cliquez avec le bouton droit sur l’entrée Info.plist de l’arborescence du projet, puis sélectionnez Ouvrir en tant que>Code source. Ajoutez les lignes suivantes à la section <dict> tout en haut, puis enregistrez le fichier.

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

Configurer le framework d’application

Ouvrez le fichier ContentView.swift de votre projet. Ajoutez une déclaration import en haut du fichier pour importer la bibliothèque AzureCommunicationCalling. En outre, importez AVFoundation. Vous en avez besoin pour les demandes d’autorisations audio dans le code.

import AzureCommunicationCalling
import AVFoundation

Initialiser CallAgent

Pour créer une instance de CallAgent à partir de CallClient, vous devez utiliser une méthode callClient.createCallAgent qui retourne de manière asynchrone un objet CallAgent après qu’il a été initialisé.

Pour créer un client d’appel, transmettez un objet 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)
}

Transmettez l’objet CommunicationTokenCredential que vous avez créé à CallClient et définissez le nom complet :

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

La fonction « fonctionnalités » est une fonction étendue de l'API Call de base qui vous permet d'obtenir les capacités du participant local à l'appel en cours.

La fonctionnalité vous permet de vous inscrire à un écouteur d’événements, d’écouter les modifications de fonctionnalité.

Pour utiliser la fonctionnalité d’appel Fonctionnalités pour Windows, la première étape consiste à obtenir l’objet API de fonctionnalité Fonctionnalités :

Obtention la fonctionnalité Fonctionnalités

let capabilitiesCallFeature =call.feature(Features.capabilities)

Obtenir les Fonctionnalités du participant local

L’objet Fonctionnalités dispose des capacités des participants locaux et est de type ParticipantCapability. Les propriétés des fonctionnalités sont les suivantes :

  • isAllowed indique si une fonctionnalité peut être utilisée.
  • reason indique la raison de résolution des capacités.
var capabilities = capabilitiesCallFeature.capabilities

S’abonner à un événement capabilitiesChanged


capabilitiesCallFeature.delegate = CapabilitiesCallDelegate()

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

Fonctionnalités exposées

  • TurnVideoOn : possibilité d’activer la vidéo
  • UnmuteMicrophone : possibilité d’activer le microphone
  • ShareScreen : possibilité de partager l’écran
  • RemoveParticipant : possibilité de supprimer un participant
  • HangUpForEveryone : possibilité de raccrocher pour tout le monde
  • AddCommunicationUser : possibilité d’ajouter un utilisateur de communication
  • AddTeamsUser : possibilité d’ajouter un utilisateur Teams
  • AddPhoneNumber : possibilité d’ajouter un numéro de téléphone
  • ManageLobby : possibilité de gérer la salle d’attente
  • SpotlightParticipant : possibilité de mettre en avant un participant
  • RemoveParticipantSpotlight : possibilité d’annuler la mise en avant d’un participant
  • BlurBackground : possibilité de flouter l’arrière-plan
  • CustomBackground : possibilité d’appliquer un arrière-plan personnalisé
  • StartLiveCaptions: possibilité d’enclencher le sous-titrage en direct
  • RaiseHand : possibilité de lever la main
  • MuteOthers : capacité à désactiver le micro par voie logicielle pour les participants distants dans la réunion

Types d’appels pris en charge

La fonctionnalité est actuellement prise en charge uniquement pour le type d’appel salles Azure Communication Services et le type d’appel de réunion teams

Motifs

Le tableau suivant fournit des informations supplémentaires sur la raison pour laquelle l’action n’est pas disponible et fournit des conseils pour rendre l’action disponible.

Motif Description Résolution
Capable L’action est autorisée.
CapabilityNotApplicableForTheCallType Le type d’appel bloque l’action. Envisagez d’autres types d’appel si vous avez besoin de cette action. Les types d’appels sont les suivants : appel de 1:1, appel de groupe, appel d’interopérabilité Teams 1:1, appel de groupe d’interopérabilité Teams, salle et réunion.
ClientRestricted L’environnement d’exécution bloque cette action Débloquez l’action sur votre appareil en modifiant le système d’exploitation, les navigateurs, la plateforme ou le matériel. Vous trouverez l’environnement pris en charge dans notre documentation.
UserPolicyRestricted La stratégie de l’utilisateur Microsoft 365 bloque l’action. Activez cette action en modifiant la stratégie affectée à l’organisateur de la réunion, l’initiateur de l’appel ou l’utilisateur Microsoft 365 à l’aide du Kit de développement logiciel (SDK) ACS. L’utilisateur cible dépend du type d’action. En savoir plus sur la stratégie Teams dans Teams. L’administrateur Teams peut modifier les stratégies.
RoleRestricted Le rôle affecté bloque l’action. Promouvoir l’utilisateur à un rôle différent pour rendre l’action disponible.
FeatureNotSupported La fonctionnalité de fonctionnalités n’est pas prise en charge dans ce type d’appel. Indiquez-nous dans le canal de commentaires Azure que vous souhaitez disposer de cette fonctionnalité pour ce type d’appel.
MeetingRestricted L’option de réunion Teams bloque l’action. L’organisateur de réunion Teams ou la co-organisateur doit modifier l’option de réunion pour activer cette action.
NotInitialized La fonctionnalité de fonctionnalités n’est pas encore initialisée. Abonnez-vous aux capabilitiesChanged d’événements sur this.call.feature(Features.Capabilities) pour savoir quand la fonctionnalité est initialisée.
NotCapable Le type d’utilisateur bloque l’action. L’action n’est autorisée qu’à un type spécifique d’identité. Activez cette action à l’aide de l’identité Microsoft 365.
TeamsPremiumLicenseRestricted L’utilisateur Microsoft 365 doit disposer d’une licence Teams Premium attribuée. Activez cette action en affectant une licence Teams Premium à l’organisateur de réunion Teams ou à l’utilisateur Microsoft 365 à l’aide du Kit de développement logiciel (SDK). L’utilisateur cible dépend du type d’action. L’administrateur Microsoft 365 peut attribuer une licence requise.
ExplicitConsentRequired Le consentement est requis pour autoriser l’action. Fournissez le consentement pour l’enregistrement ou la transcription en appelant la méthode grantTeamsConsent() sous this.call.feature(Features.Recording) ou this.call.feature(Features.Transcription).

Étapes suivantes