Partager via


Support Azure Communication Services pour les identités Teams – Cas d’usage

Microsoft Teams fournit des identités managées par Microsoft Entra ID et des expériences d’appel contrôlées par le centre d’administration et les stratégies Teams. Les utilisateurs ont peut-être des licences attribuées pour activer les appels téléphoniques et les fonctionnalités d’appel avancées du service téléphonique Microsoft Teams. La prise en charge d’Azure Communication Services pour Teams permet de gérer les appels vocaux Teams sur IP (VoIP), les appels téléphoniques Teams, et de rejoindre des réunions Teams. Les développeurs peuvent étendre Azure Communication Services avec l’API Graph pour fournir des données contextuelles issues de l’écosystème Microsoft 365. Cette page a vocation à donner envie d’utiliser les technologies Microsoft existantes pour offrir une expérience de bout en bout dans les scénarios d’appel faisant intervenir des utilisateurs Teams et les SDK d’appel Azure Communication Services.

Cas d’usage 1 : Passer un appel RTC Teams sortant

Ce scénario illustre un cas d’usage multilocataire, dans lequel la société Contoso fournit une capacité SaaS à la société Fabrikam. La capacité SaaS permet aux utilisateurs Fabrikam de passer des appels téléphoniques Teams par le biais d’un site web personnalisé qui accepte l’identité de l’utilisateur Teams et la configuration de la connectivité RTC attribuée à cet utilisateur Teams.

Le diagramme montre l’expérience de l’utilisateur Alice effectuant un appel téléphonique vers la cliente Megan.

Le diagramme de séquence suivant montre les étapes détaillées du lancement d’un appel téléphonique Teams :

Le diagramme de séquence décrit un ensemble détaillé d’étapes, qui se produit pour initier un appel téléphonique Teams à l’aide des services de communication Azure et de Teams.

Étapes

  1. Authentifier Alice auprès de Fabrikam dans l’application cliente de Contoso : Alice utilise un navigateur pour ouvrir la page web de Fabrikam afin de s’authentifier. Plus d’informations sont à votre disposition sur l’authentification avec une identité Teams. Si l’authentification réussit, Alice est redirigée vers la page initiale.
  2. Charger les clients et leurs numéros RTC : Contoso fournit une logique personnalisée pour récupérer la liste des clients et leurs numéros de téléphone associés. Cette liste s’affiche dans la page initiale présentée à Alice.
  3. Passer un appel à Megan : Alice sélectionne un bouton pour passer un appel RTPC à Megan dans l’application cliente de Contoso. L’application cliente utilise le SDK d’appel Azure Communication Services pour fournir la fonctionnalité d’appel. Tout d’abord, elle crée une instance de callAgent, qui contient le jeton d’accès Azure Communication Services acquis lors de la première étape.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Vous devez ensuite démarrer un appel en composant le numéro de téléphone de Megan.

const pstnCallee = { phoneNumber: '<MEGAN_PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = callAgent.startCall([pstnCallee], { threadId: '00000000-0000-0000-0000-000000000000' });
  1. Connexion de l’appel RTC à Megan : L’appel est routé par l’intermédiaire de la connectivité téléphonique Teams attribuée à Alice, en accédant au réseau RTC et en appelant le téléphone associé au numéro de téléphone fourni. Megan voit un appel entrant en provenance du numéro de téléphone associé à l’utilisateur Teams d’Alice.
  2. Megan accepte l’appel : Megan accepte l’appel et la connexion entre Alice et Megan est établie.

Cas d’usage 2 : Recevoir un appel téléphonique Teams entrant

Ce scénario illustre un cas d’usage multilocataire, dans lequel la société Contoso fournit une capacité SaaS à la société Fabrikam. La capacité SaaS permet aux utilisateurs Fabrikam de recevoir un appel téléphonique Teams par le biais d’un site web personnalisé qui accepte l’identité de l’utilisateur Teams et la configuration de la connectivité RTC attribuée à cet utilisateur Teams.

Le diagramme montre l’expérience de l’utilisateur Alice recevant un appel téléphonique de la cliente Megan.

Le diagramme de séquence suivant montre les étapes détaillées à suivre pour accepter des appels téléphoniques Teams entrants :

Le diagramme de séquence décrit un ensemble détaillé d’étapes, qui se produit pour recevoir un appel téléphonique Teams à l’aide des services de communication Azure et de Teams.

Étapes

  1. Authentifier Alice auprès de Fabrikam dans l’application cliente de Contoso : Alice utilise un navigateur pour ouvrir la page web de Fabrikam afin de s’authentifier. Plus d’informations sont à votre disposition sur l’authentification avec une identité Teams. Si l’authentification réussit, Alice est redirigée vers la page initiale.
  2. S’abonner pour recevoir des appels : L’application cliente utilise le SDK d’appel Azure Communication Services pour fournir la fonctionnalité d’appel. Tout d’abord, elle crée une instance de callAgent, qui contient le jeton d’accès Azure Communication Services acquis lors de la première étape.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Ensuite, vous vous abonnez à l’événement d’appel entrant.

const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
    
    const incomingCall = args.teamsIncomingCall;
    
    // Get information about caller
    var callerInfo = incomingCall.callerInfo
    
    showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);

La méthode showIncomingCall est une méthode personnalisée de Contoso qui affiche une interface utilisateur pour indiquer les appels entrants et deux boutons pour accepter et refuser un appel. Si vous sélectionnez le bouton d’acceptation, le code suivant est alors utilisé :

// Accept the call
var call = await incomingCall.accept();

Si vous sélectionnez le bouton de refus, le code suivant est alors utilisé :

// Reject the call
incomingCall.reject();
  1. Megan commence à appeler le numéro RTC affecté à l’utilisatrice Teams Alice : Megan utilise son téléphone pour appeler Alice. Le réseau de l’opérateur se connecte à la connectivité téléphonique Teams attribuée à Alice et appelle tous les points de terminaison Teams enregistrés pour Alice. Ces points comprennent les clients Teams de bureau, mobiles et web, ainsi que les applications basées sur le SDK d’appel Azure Communication Services.
  2. L’application cliente de Contoso montre l’appel entrant de Megan : l’application cliente reçoit la notification d’appel entrant. La méthode showIncomingCall va utiliser la logique personnalisée de Contoso pour convertir le numéro de téléphone en nom de client (par exemple, une base de données qui stocke des paires clé-valeur comprenant un numéro de téléphone et un nom de client). Lorsque les informations sont récupérées, la notification est présentée à Alice dans l’application cliente de Contoso.
  3. Alice accepte l’appel : Alice sélectionne un bouton pour accepter l’appel et la connexion entre Alice et Megan est établie.

Cas d’usage 3 : Passer un appel voix sur IP (VoIP) Teams sortant

Ce scénario illustre un cas d’usage multilocataire, dans lequel la société Contoso fournit une capacité SaaS à la société Fabrikam. La capacité SaaS permet aux utilisateurs de Fabrikam de passer des appels VoIP Teams par le biais d’un site web personnalisé qui accepte l’identité de l’utilisateur Teams.

Diagramme montrant l’expérience utilisateur d’Alice passant un appel VoIP Teams à sa collègue Megan.

Le diagramme de séquence suivant montre les étapes détaillées du lancement d’un appel VoIP Teams :

Le diagramme de séquence décrit un ensemble détaillé d’étapes, qui se produit pour initier un appel VoIP Teams à l’aide des services de communication Azure et de Teams.

Étapes

  1. Authentifier Alice auprès de Fabrikam dans l’application cliente de Contoso : Alice utilise un navigateur pour ouvrir la page web de Fabrikam afin de s’authentifier. Plus d’informations sont à votre disposition sur l’authentification avec une identité Teams. Si l’authentification réussit, Alice est redirigée vers la page initiale.
  2. Charger les utilisateurs de l’organisation de Fabrikam et leurs identificateurs : L’application cliente Contoso utilise l’API Graph pour obtenir la liste des utilisateurs auprès du locataire de Fabrikam. Alice, ou son administrateur, doit donner son consentement pour que l’API Graph effectue cette action. Plus d’informations sont à votre disposition sur la commande API Graph dans la documentation.
GET https://graph.microsoft.com/v1.0/users
Permissions: User.ReadBasic.All (delegated)
Response: response.body.value[1].displayName; // ”Megan Bowen”
	  response.body.value[1].id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"

L’application cliente de Contoso affiche ensuite la liste des utilisateurs et donne la possibilité de passer un appel à un utilisateur donné.

  1. Passer un appel à Megan : Alice sélectionne un bouton pour passer un appel VoIP Teams à Megan dans l’application cliente de Contoso. L’application cliente utilise le SDK d’appel Azure Communication Services pour fournir la fonctionnalité d’appel. Les appels dans les clients Teams sont associés à une conversation Teams. Tout d’abord, l’application demande la création d’une conversation dédiée pour l’appel VoIP.
POST https://graph.microsoft.com/v1.0/chats
Body:
{
    "chatType": "oneOnOne",
    "members": [
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "roles": [
                "owner"
            ],
            "user@odata.bind": "https://graph.microsoft.com/v1.0/users('8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca')"
        },
        {
            "@odata.type": "#microsoft.graph.aadUserConversationMember",
            "roles": [
                "owner"
            ],
            "user@odata.bind": "https://graph.microsoft.com/v1.0/users('e8b753b5-4117-464e-9a08-713e1ff266b3')"
        }
    ]
}
Permissions: Chat.Create (delegated)
Response: response.body.value.id; // "19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces"

Ensuite, l’application cliente crée une instance de callAgent, qui contient le jeton d’accès Azure Communication Services acquis lors de la première étape.

const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Ensuite, vous appelez l’ID Teams de Megan.

var teamsUser = { microsoftTeamsUserId: 'e8b753b5-4117-464e-9a08-713e1ff266b3'};
const oneToOneCall = callAgent.startCall([teamsUser], { threadId: '19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces' });
  1. Connexion de l’appel VoIP à Megan : L’appel est routé par l’intermédiaire de Teams et les clients Teams associés à Megan sont appelés. Megan voit un appel entrant d’Alice avec le nom défini dans Microsoft Entra ID indiqué.
  2. Megan accepte l’appel : Megan accepte l’appel et la connexion entre Alice et Megan est établie.

Cas d’usage 4 : Recevoir un appel VoIP Teams entrant

Ce scénario illustre un cas d’usage multilocataire, dans lequel la société Contoso fournit une capacité SaaS à la société Fabrikam. La capacité SaaS permet aux utilisateurs de Fabrikam de recevoir un appel VoIP Teams par le biais d’un site web personnalisé qui accepte l’identité de l’utilisateur Teams et applique les stratégies de routage affectées à cet utilisateur Teams.

Le diagramme montre l’expérience de l’utilisateur Alice recevant un appel VoIP de la cliente Megan.

Le diagramme de séquence suivant montre les étapes détaillées à suivre pour accepter des appels VoIP Teams entrants :

Le diagramme de séquence décrit un ensemble détaillé d’étapes, qui se produit pour recevoir un appel VoIP Teams à l’aide des services de communication Azure, de l’API Graph et de Teams.

Étapes

  1. Authentifier Alice auprès de Fabrikam dans l’application cliente de Contoso : Alice utilise un navigateur pour ouvrir la page web de Fabrikam afin de s’authentifier. Plus d’informations sont à votre disposition sur l’authentification avec une identité Teams. Si l’authentification réussit, Alice est redirigée vers la page initiale.
  2. S’abonner pour recevoir des appels : L’application cliente utilise le SDK d’appel Azure Communication Services pour fournir la fonctionnalité d’appel. Tout d’abord, elle crée une instance de callAgent, qui contient le jeton d’accès Azure Communication Services acquis lors de la première étape.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

L’application s’abonne ensuite à l’événement d’appel entrant.

const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
    
    const incomingCall = args.teamsIncomingCall;
    
    // Get information about caller
    var callerInfo = incomingCall.callerInfo
    
    showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);

La méthode showIncomingCall est une méthode personnalisée de Contoso qui affiche une interface utilisateur pour indiquer les appels entrants et deux boutons pour accepter et refuser un appel. Si vous sélectionnez le bouton d’acceptation, le code suivant est alors utilisé :

// Accept the call
var call = await incomingCall.accept();

Si vous sélectionnez le bouton de refus, le code suivant est alors utilisé :

// Reject the call
incomingCall.reject();
  1. Megan passe un appel VoIP à l’utilisatrice Teams Alice : Megan utilise son client de bureau Teams pour appeler Alice. L’infrastructure Teams va appeler tous les points de terminaison associés à Alice. Ces points comprennent les clients Teams de bureau, mobiles et web, ainsi que les applications basées sur le SDK d’appel Azure Communication Services.
  2. L’application cliente de Contoso montre l’appel entrant de Megan : l’application cliente reçoit la notification d’appel entrant. La méthode showIncomingCall va utiliser l’API Graph pour convertir l’ID d’utilisateur Teams en nom d’affichage.
GET https://graph.microsoft.com/v1.0/users/e8b753b5-4117-464e-9a08-713e1ff266b3
Permissions: User.Read (delegated)
Response: response.body.value.displayName; // ”Megan Bowen”
	  response.body.value.id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"

Lorsque les informations sont récupérées, la notification est présentée à Alice dans l’application cliente de Contoso.

  1. Alice accepte l’appel : Alice sélectionne un bouton pour accepter l’appel et la connexion entre Alice et Megan est établie.

Cas d’usage 5 : Participer à une réunion Teams

Ce scénario illustre un cas d’usage multilocataire, dans lequel la société Contoso fournit une capacité SaaS à la société Fabrikam. La capacité SaaS permet aux utilisateurs de Fabrikam de participer à des réunions Teams par le biais d’un site web personnalisé qui accepte l’identité de l’utilisateur Teams.

Diagramme montrant l’expérience utilisateur d’Alice rejoignant une réunion Teams.

Le diagramme de séquence suivant montre les étapes détaillées à suivre pour participer à une réunion Teams :

Diagramme de séquence décrivant un ensemble détaillé d’étapes, qui se produit pour recevoir un appel VoIP Teams à l’aide des services de communication Azure, de l’API Graph et de Teams.

Étapes

  1. Authentifier Alice auprès de Fabrikam dans l’application cliente de Contoso : Alice utilise un navigateur pour ouvrir la page web de Fabrikam afin de s’authentifier. Plus d’informations sont à votre disposition sur l’authentification avec une identité Teams. Si l’authentification réussit, Alice est redirigée vers la page initiale.
  2. Charger les réunions Teams et leurs identificateurs : L’application cliente Contoso utilise l’API Graph pour obtenir la liste des réunions Teams pour les utilisateurs de Fabrikam. Alice, ou son administrateur, doit donner son consentement pour que l’API Graph effectue cette action. Plus d’informations sont à votre disposition sur la commande API Graph dans la documentation.
GET https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
Permissions: Calendars.Read (delegated)
Response: response.body.value[0].subject; // ”Project Tailspin”
	  response.body.value[0].onlineMeeting.joinUrl; // "https://teams.microsoft.com/l/meetup-join/..."
	  response.body.value[0].start.dateTime;
	  response.body.value[0].end.dateTime;
	  response.body.value[0].location.displayName;

L’application cliente de Contoso affiche ensuite la liste des réunions Teams et donne la possibilité d’y participer.

  1. Participer à la réunion Teams « Project Tailspin » : Alice sélectionne un bouton pour participer à la réunion Teams « Project Tailspin » dans l’application cliente de Contoso. L’application cliente utilise le SDK d’appel Azure Communication Services pour fournir la fonctionnalité d’appel. Les applications clientes créent une instance de callAgent, qui contient le jeton d’accès Azure Communication Services acquis lors de la première étape.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

L’application rejoint ensuite une réunion par le biais de la valeur joinUrl reçue.

var meetingLocator = new TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...");
callAgent.startCallJoinAsync(meetingLocator , new JoinCallOptions());

Alice rejoint ensuite la réunion Teams.

  1. D’autres participants rejoignent la réunion Teams : L’expérience proposée est une réunion Teams standard. En fonction de la configuration et des invitations peuvent participer à la réunion Teams des utilisateurs Teams, des utilisateurs anonymes Teams qui utilisent le client web, de bureau ou mobile Teams, des utilisateurs Azure Communication Services par le biais d’applications basées sur le SDK d’appel Communication Services ou des utilisateurs se servant de téléphones.

Étapes suivantes

Les articles suivants peuvent vous intéresser :