Se joindre à une réunion Teams
Les SDK Azure Communication Services peuvent permettre à vos utilisateurs de se joindre à des réunions Microsoft Teams normales. Voici comment faire !
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une ressource Communication Services déployée. Créez une ressource Communication Services.
- Un jeton d’accès utilisateur pour activer le client appelant. Pour plus d’informations, consultez Créer et gérer des jetons d’accès.
- Facultatif : suivez le guide de démarrage rapide permettant d’ajouter l’appel vocal à votre application.
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’instanceCall 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’erreurconnectionIssue
.
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);
Méthodes de participation à une réunion
Pour participer à une réunion Teams, utilisez la méthode join
et transmettez un lien de réunion ou les coordonnées d’une réunion.
Participer avec un lien de réunion :
const locator = { meetingLink: '<MEETING_LINK>'}
const call = callAgent.join(locator);
Participer avec des coordonnées de réunion (actuellement en préversion limitée) :
const locator = {
threadId: <thread id>,
organizerId: <organizer id>,
tenantId: <tenant id>,
messageId: <message id>
}
const call = callAgent.join(locator);
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 :
- Ouvrez le Gestionnaire de package NuGet en sélectionnant Outils>Gestionnaire de package NuGet>Gérer les packages NuGet pour la solution.
- Sélectionnez Parcourir, puis entrez Azure.Communication.Calling.WindowsClient dans la zone de recherche.
- Vérifiez que la case Inclure la préversion est cochée.
- Sélectionnez le package Azure.Communication.Calling.WindowsClient, puis Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 ou une version plus récente.
- Cochez la case qui correspond au projet Azure Communication Services dans le volet de droite.
- Sélectionnez Installer.
Méthodes de participation à une réunion
Pour participer à une réunion Teams, utilisez la méthode CallAgent.join
et transmettez le contexte d’application, JoinMeetingLocator
et JoinCallOptions
.
ID de réunion et code secret
TeamsMeetingIdLocator
localise une réunion à l’aide d’un ID de réunion et d’un code secret. Vous trouverez ces informations sous les informations de participation d’une réunion Teams.
Un ID de réunion Teams est de 12 caractères et se compose de chiffres numériques regroupés en trois (c’est-à-dire 000 000 000 000
).
Un code secret se compose de 6 caractères alphabétiques (c’est-à-dire aBcDeF
). Le code secret respecte la casse.
String meetingId, passcode;
TeamsMeetingIdLocator locator = new TeamsMeetingIdLocator(meetingId, passcode);
Lien vers la réunion
Le TeamsMeetingLinkLocator
localise une réunion à l’aide d’un lien vers une réunion Teams. Cela se trouve sous les informations de participation d’une réunion Teams.
String meetingLink;
TeamsMeetingLinkLocator locator = new TeamsMeetingLinkLocator(meetingLink);
Coordonnées de réunion
TeamsMeetingCoordinatesLocator
localise les réunions à l’aide d’un ID d’organisateur, d’un ID de locataire, d’un ID de thread et d’un ID de message. Ces informations sont disponibles à l’aide de Microsoft Graph.
Guid organizerId, tenantId;
String threadId, messageId;
TeamsMeetingCoordinatesLocator locator = new TeamsMeetingCoordinatesLocator(threadId, organizerId, tenantId, messageId);
Participer à une réunion à l’aide de localisateurs
Après avoir créé ces localisateurs de réunions Teams, vous pouvez l’utiliser pour participer à une réunion Teams à l’aide de CallAgent.join
comme indiqué ci-dessous.
JoinCallOptions options = new JoinCallOptions();
call = agent.join(
getApplicationContext(),
locator,
options);
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 :
- Ouvrez le Gestionnaire de package NuGet en sélectionnant Outils>Gestionnaire de package NuGet>Gérer les packages NuGet pour la solution.
- Sélectionnez Parcourir, puis entrez Azure.Communication.Calling.WindowsClient dans la zone de recherche.
- Vérifiez que la case Inclure la préversion est cochée.
- Sélectionnez le package Azure.Communication.Calling.WindowsClient, puis Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 ou une version plus récente.
- Cochez la case qui correspond au projet Azure Communication Services dans le volet de droite.
- Sélectionnez Installer.
Méthodes de participation à une réunion
Pour participer à une réunion Teams, utilisez la méthode CallAgent.join
et passez JoinMeetingLocator
et JoinCallOptions
.
ID de réunion et code secret
TeamsMeetingIdLocator
localise une réunion à l’aide d’un ID de réunion et d’un code secret. Vous trouverez ces informations sous les informations de participation d’une réunion Teams.
Un ID de réunion Teams est de 12 caractères et se compose de chiffres numériques regroupés en trois (c’est-à-dire 000 000 000 000
).
Un code secret se compose de 6 caractères alphabétiques (c’est-à-dire aBcDeF
). Le code secret respecte la casse.
String meetingId, passcode
let locator = TeamsMeetingIdLocator(meetingId: meetingId, passcode: passcode)
Lien vers la réunion
Le TeamsMeetingLinkLocator
localise une réunion à l’aide d’un lien vers une réunion Teams. Cela se trouve sous les informations de participation d’une réunion Teams.
String meetingLink
let locator = TeamsMeetingLinkLocator(meetingLink: meetingLink)
Participer à une réunion à l’aide de localisateurs
Après avoir créé ces localisateurs de réunions Teams, vous pouvez l’utiliser pour participer à une réunion Teams à l’aide de CallAgent.join
comme indiqué ci-dessous.
func joinTeamsMeeting() {
// Ask permissions
AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
if granted {
let joinCallOptions = JoinCallOptions()
// Insert meeting locator code for specific join methods here
// for CallAgent callAgent
self.callAgent?.join(with: teamsMeetingLinkLocator, joinCallOptions: joinCallOptions)
}
}
}
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 :
- Ouvrez le Gestionnaire de package NuGet en sélectionnant Outils>Gestionnaire de package NuGet>Gérer les packages NuGet pour la solution.
- Sélectionnez Parcourir, puis entrez Azure.Communication.Calling.WindowsClient dans la zone de recherche.
- Vérifiez que la case Inclure la préversion est cochée.
- Sélectionnez le package Azure.Communication.Calling.WindowsClient, puis Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 ou une version plus récente.
- Cochez la case qui correspond au projet Azure Communication Services dans le volet de droite.
- Sélectionnez Installer.
Méthodes de participation à une réunion
Pour participer à une réunion Teams, utilisez la méthode CallAgent.JoinAsync
et passez JoinMeetingLocator
et JoinCallOptions
.
ID de réunion et code secret
TeamsMeetingIdLocator
localise une réunion à l’aide d’un ID de réunion et d’un code secret. Vous trouverez ces informations sous les informations de participation d’une réunion Teams.
Un ID de réunion Teams est de 12 caractères et se compose de chiffres numériques regroupés en trois (c’est-à-dire 000 000 000 000
).
Un code secret se compose de 6 caractères alphabétiques (c’est-à-dire aBcDeF
). Le code secret respecte la casse.
string meetingId, passcode;
TeamsMeetingIdLocator locator = new TeamsMeetingIdLocator(meetingId, passcode);
Lien vers la réunion
Le TeamsMeetingLinkLocator
localise une réunion à l’aide d’un lien vers une réunion Teams. Cela se trouve sous les informations de participation d’une réunion Teams.
string meetingLink;
TeamsMeetingLinkLocator locator = new TeamsMeetingLinkLocator(meetingLink);
Coordonnées de réunion
TeamsMeetingCoordinatesLocator
localise les réunions à l’aide d’un ID d’organisateur, d’un ID de locataire, d’un ID de thread et d’un ID de message. Ces informations sont disponibles à l’aide de Microsoft Graph.
Guid organizerId, tenantId;
string threadId, messageId;
TeamsMeetingCoordinatesLocator locator = new TeamsMeetingCoordinatesLocator(threadId, organizerId, tenantId, messageId);
Participer à une réunion à l’aide de localisateurs
Après avoir créé ces localisateurs de réunions Teams, vous pouvez l’utiliser pour participer à une réunion Teams à l’aide de CallAgent.JoinAsync
comme indiqué ci-dessous.
var joinCallOptions = new JoinCallOptions() {
OutgoingAudioOptions = new OutgoingAudioOptions() { IsMuted = true },
OutgoingVideoOptions = new OutgoingVideoOptions() { Streams = new OutgoingVideoStream[] { cameraStream } }
};
var call = await callAgent.JoinAsync(locator, joinCallOptions);