Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet exercice, vous allez ajouter le composant d'appel de l'interface utilisateur ACS dans une application React pour permettre de passer des appels audio/vidéo à partir d’une application personnalisée vers une réunion Microsoft Teams.
Visitez GitHub et connectez-vous. Si vous n’avez pas encore de compte GitHub, vous pouvez sélectionner l’option d’inscription pour en créer un.
Visitez le référentiel GitHub Microsoft Cloud.
Sélectionnez l’option Fork pour ajouter le référentiel à votre organisation/compte GitHub souhaitée.
Exécutez la commande suivante pour cloner ce référentiel sur votre ordinateur. Remplacez <YOUR_ORG_NAME> par le nom de votre organisation/compte GitHub.
git clone https://github.com/<YOUR_ORG_NAME>/MicrosoftCloudOuvrez le dossier de projet samples/acs-to-teams-meeting dans Visual Studio Code.
Développez le dossier client/react .
Ouvrez le fichier package.json dans VS Code et notez que les packages ACS suivants sont inclus :
@azure/communication-common @azure/communication-reactVérifiez que npm 10 ou version ultérieure est installé en ouvrant une fenêtre de terminal et en exécutant la commande suivante :
npm --versionConseil / Astuce
Si vous n’avez pas installé npm 10 ou version ultérieure, vous pouvez mettre à jour npm vers la dernière version en exécutant
npm install -g npm.Ouvrez une fenêtre de terminal et exécutez la
npm installcommande dans le dossier React pour installer les dépendances de l’application.Ouvrez App.tsx et prenez un moment pour explorer les importations en haut du fichier. Ils gèrent l’importation des symboles d’appel audio/vidéo et de sécurité ACS qui seront utilisés dans l’application.
import { AzureCommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common'; import { CallComposite, fromFlatCommunicationIdentifier, useAzureCommunicationCallAdapter } from '@azure/communication-react'; import React, { useState, useMemo, useEffect } from 'react'; import './App.css';Remarque
Vous verrez comment le
CallCompositecomposant est utilisé plus loin dans cet exercice. Il fournit les fonctionnalités principales de l’interface utilisateur pour Azure Communication Services afin d’activer l’exécution d’un appel audio/vidéo de l’application dans une réunion Microsoft Teams.Recherchez le
Appcomposant et effectuez les tâches suivantes :- Prenez un moment pour examiner les
useStatedéfinitions du composant. - Remplacez les guillemets vides de la
userIduseStatefonction par la valeur d’identité utilisateur ACS que vous avez copiée dans l’exercice précédent. - Remplacez les guillemets vides de la
tokenuseStatefonction par la valeur du jeton ACS que vous avez copiée dans l’exercice précédent. - Remplacez les guillemets vides de la
teamsMeetingLinkuseStatefonction par la valeur du lien de réunion Teams que vous avez copiée dans l’exercice précédent.
// Replace '' with the ACS user identity value const [userId, setUserId] = useState<string>(''); // Replace '' with the ACS token value const [token, setToken] = useState<string>(''); // Replace '' with the Teams meeting link value const [teamsMeetingLink, setTeamsMeetingLink] = useState<string>('');Remarque
Plus loin dans ce tutoriel, vous allez voir comment récupérer les valeurs
userId,token, etteamsMeetingLinkde manière dynamique.- Prenez un moment pour examiner les
Prenez un moment pour explorer les
useMemofonctions dans leAppcomposant.- La
credentialuseMemofonction crée uneAzureCommunicationTokenCredentialinstance une fois que le jeton a une valeur. - La
callAdapterArgsuseMemofonction retourne un objet qui a les arguments utilisés pour effectuer un appel audio/vidéo. Notez qu’il utilise les valeursuserId,credential, etteamsMeetingLinkdans les arguments d'appel ACS.
const credential = useMemo(() => { if (token) { return new AzureCommunicationTokenCredential(token) } return; }, [token]); const callAdapterArgs = useMemo(() => { if (userId && credential && displayName && teamsMeetingLink) { return { userId: fromFlatCommunicationIdentifier(userId) as CommunicationUserIdentifier, displayName, credential, locator: { meetingLink: teamsMeetingLink }, } } return {}; }, [userId, credential, displayName, teamsMeetingLink]);Remarque
useMemoest utilisé dans ce scénario, car nous voulons uniquement que l’objetAzureCommunicationTokenCredentialet les arguments de l’adaptateur d’appel soient créés une fois que les paramètres nécessaires sont passés. Affichez des détails supplémentaires sur useMemo ici.- La
Une fois que
credentialsetcallAdapterArgssont prêts, la ligne suivante permet de créer un adaptateur d’appel ACS à l’aide du hook React fourni par ACS. L’objetcallAdaptersera utilisé ultérieurement dans le composant composite appelant l’interface utilisateur.const callAdapter = useAzureCommunicationCallAdapter(callAdapterArgs);Remarque
Étant donné que
useAzureCommunicationCallAdapterest un hook React, il n'attribuera pas de valeur àcallAdaptertant que la valeurcallAdapterArgsn'est pas valide.Précédemment, vous avez affecté l'identité d'utilisateur, le jeton et le lien de réunion Teams à des valeurs d'état dans le composant
App. Cela fonctionne correctement pour l’instant, mais dans un exercice ultérieur, vous verrez comment récupérer dynamiquement ces valeurs. Étant donné que vous définissez les valeurs précédemment, commentez le code dans lauseEffectfonction comme indiqué ci-dessous. Une fois que vous avez exécuté Azure Functions dans les exercices suivants, vous revisitez ce code.useEffect(() => { /* Commenting out for now const init = async () => { setMessage('Getting ACS user'); //Call Azure Function to get the ACS user identity and token let res = await fetch(process.env.REACT_APP_ACS_USER_FUNCTION as string); let user = await res.json(); setUserId(user.userId); setToken(user.token); setMessage('Getting Teams meeting link...'); //Call Azure Function to get the meeting link res = await fetch(process.env.REACT_APP_TEAMS_MEETING_FUNCTION as string); let link = await res.text(); setTeamsMeetingLink(link); setMessage(''); console.log('Teams meeting link', link); } init(); */ }, []);Recherchez le code JSX suivant. Il utilise le
CallCompositesymbole que vous avez vu importé pour afficher l’interface utilisateur utilisée pour effectuer un appel audio/vidéo à partir de l’application React dans une réunion Teams. Ce que vous avez exploré plus tôt est transmis à sa propriétécallAdapterpour fournir les arguments requis.if (callAdapter) { return ( <div> <h1>Contact Customer Service</h1> <div className="wrapper"> <CallComposite adapter={callAdapter} /> </div> </div> ); }Enregistrez le fichier avant de continuer.
Exécutez
npm startdans votre fenêtre de terminal pour exécuter l’application. Veillez à exécuter la commande dans le dossier React .Une fois les applications générées, une interface utilisateur d'appel doit s’afficher. Activez la sélection de votre microphone et de votre caméra et lancez l’appel. Vous devriez voir que vous êtes placé dans une salle d’attente. Si vous participez à la réunion que vous avez configurée précédemment dans Microsoft Teams, vous pouvez autoriser l’invité à participer à la réunion.
Appuyez sur Ctrl +C pour arrêter l’application. Maintenant que vous l’avez correctement exécutée, examinons comment vous pouvez obtenir dynamiquement l’identité et le jeton de l’utilisateur ACS et créer automatiquement une réunion Microsoft Teams et retourner l’URL de participation à l’aide de Microsoft Graph.