Partage via


Ajouter un utilisateur Microsoft Teams à un appel existant à l’aide de Call Automation

Dans ce guide de démarrage rapide, nous utilisons les API Azure Communication Services Call Automation pour ajouter, supprimer et transférer un appel à un utilisateur Teams.

Prérequis

  • Compte Azure avec un abonnement actif.
  • Une licence téléphonique Microsoft Teams et un locataire Teams disposant de privilèges d’administration. La licence de téléphone Teams est un must pour utiliser cette fonctionnalité, en savoir plus sur les licences Teams ici. L’utilisateur Microsoft Teams doit également être activé par voice, consultez la configuration de votre système téléphonique. Les privilèges d’administration sont requis pour autoriser la ressource Communication Services à appeler des utilisateurs Teams, expliqué plus loin à l’étape 1.
  • Une ressource Communication Services déployée et une chaîne de connexion valide ont été trouvées en sélectionnant Clés dans le menu de gauche du portail Azure.
  • Obtenir un numéro de téléphone RTC à partir de la ressource Communication Services. Notez le numéro de téléphone que vous avez acquis pour l’utiliser dans ce guide de démarrage rapide.
  • Un abonnement Azure Event Grid pour recevoir l’événement IncomingCall .
  • La dernière bibliothèque d’API Azure Communication Service Call Automation pour votre système d’exploitation.
  • Un service web qui implémente la bibliothèque d’API Call Automation, suivez ce tutoriel.

Étape 1 : Autorisation pour votre ressource Azure Communication Services afin d’activer l’appel aux utilisateurs de Microsoft Teams

Pour activer l’appel via les API d’automatisation des appels, un administrateur Microsoft Teams ou un administrateur général doit activer explicitement l’accès aux ressources Communication Services à leur locataire pour autoriser l’appel.

Paramètre de niveau de locataire Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) qui active/désactive la fédération entre leur locataire et des ressources Communication Services spécifiques.

Stratégie d’utilisateur Set-CsExternalAccessPolicy (SkypeForBusiness) qui permet à l’administrateur de contrôler davantage les utilisateurs de leur organisation qui peuvent participer à des communications fédérées avec des utilisateurs Communication Services.

Notez que l’utilisateur Teams doit disposer d’une licence Téléphone pour utiliser cette fonctionnalité. Pour attribuer la licence, utilisez la cmdlet Set-CsPhoneNumberAssignment et définissez le paramètre EnterpriseVoiceEnabled sur $true. Pour plus d’informations, consultez Configurer Teams Phone dans votre organisation.

Étape 2 : utiliser l’API Graph pour obtenir l’identifiant d’objet Microsoft Entra pour les utilisateurs teams et vérifier éventuellement leur présence

L’ID d’objet Microsoft Entra (OID) d’un utilisateur Teams est requis pour les ajouter ou les transférer à partir d’un appel Communication Services. L’OID peut être récupéré via 1) portail Office, 2) Centre d’administration Microsoft Entra, 3) Microsoft Entra Connect ; ou 4) API Graph. L’exemple ci-dessous utilise l’API Graph.

Le consentement doit être accordé par un administrateur Microsoft Entra avant que Graph puisse être utilisé pour rechercher des utilisateurs, en savoir plus en suivant le document Vue d’ensemble de l’API de sécurité Microsoft Graph. L’OID peut être récupéré à l’aide de l’API utilisateurs de liste pour rechercher des utilisateurs. L’exemple suivant montre une recherche par nom complet, mais d’autres propriétés peuvent également être recherchées :

Répertorier les utilisateurs à l’aide de Microsoft Graph v1.0:

Request:
	https://graph.microsoft.com/v1.0/users?$search="displayName:Art Anderson"
Permissions:
	Application and delegated. Refer to documentation.
Response:
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
    "value": [
        {
            "displayName": "Art Anderson",
            "mail": "artanderson@contoso.com",
            "id": "fc4ccb5f-8046-4812-803f-6c344a5d1560"
        }

Si vous le souhaitez, la présence d’un utilisateur peut être récupérée à l’aide de l’API obtenir la présence et de ObjectId utilisateur. En savoir plus sur la documentation Microsoft Graph v1.0.

Request:
https://graph.microsoft.com/v1.0/users/fc4ccb5f-8046-4812-803f-6c344a5d1560/presence
Permissions:
Delegated only. Application not supported.  Refer to documentation.
Response:
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('fc4ccb5f-8046-4812-803f-6c344a5d1560')/presence/$entity",
    "id": "fc4ccb5f-8046-4812-803f-6c344a5d1560",
    "availability": "Offline",
    "activity": "Offline"

Étape 3 : Ajouter un utilisateur Teams à un appel Communication Services existant contrôlé par les API Automation d’appel

Vous devez effectuer l’étape requise et disposer d’une application de service web pour contrôler un appel Communication Services. À l’aide de l’objet callConnection, ajoutez un participant à l’appel.

CallAutomationClient client = new CallAutomationClient('<Connection_String>');
AnswerCallResult answer = await client.AnswerCallAsync(incomingCallContext, new Uri('<Callback_URI>'));
await answer.Value.CallConnection.AddParticipantAsync(
    new CallInvite(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'))
    {
        SourceDisplayName = "Jack (Contoso Tech Support)"
    });
CallAutomationClient client = new CallAutomationClientBuilder().connectionString("<resource_connection_string>").buildClient();
AnswerCallResult answer = client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.getCallConnection().addParticipant(
    new CallInvite(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"))
        .setSourceDisplayName("Jack (Contoso Tech Support)"));
const client = new CallAutomationClient("<resource_connection_string>");
const answer = await client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.callConnection.addParticipant({
    targetParticipant: { microsoftTeamsUserId: "<Teams_User_Guid>" },
    sourceDisplayName: "Jack (Contoso Tech Support)"
});
call_automation_client = CallAutomationClient.from_connection_string("<resource_connection_string>")
answer = call_automation_client.answer_call(incoming_call_context = incoming_call_context, callback_url = "<Callback_URI>")
call_connection_client = call_automation_client.get_call_connection(answer.call_connection_id)
call_connection_client.add_participant(target_participant = CallInvite(
    target = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"),
    source_display_name = "Jack (Contoso Tech Support)"))

Sur le client de bureau Microsoft Teams, l’appel de Jack sera envoyé à l’utilisateur Microsoft Teams par le biais d’une notification toast d’appel entrante.

Capture d’écran du client de bureau Microsoft Teams, l’appel de Jack est envoyé à l’utilisateur Microsoft Teams par le biais d’une notification toast d’appel entrante.

Une fois que l’utilisateur Microsoft Teams a accepté l’appel, l’expérience d’appel de l’utilisateur Microsoft Teams aura tous les participants affichés dans la liste Microsoft Teams. Notez que votre application qui gère l’appel à l’aide de l’API d’automatisation des appels restera masquée pour l’utilisateur Teams sur l’écran d’appel, à l’exception du cas où vous démarrez un appel individuel avec l’utilisateur Teams.
Capture d’écran de l’utilisateur Microsoft Teams acceptant l’appel et entrant l’expérience d’appel pour l’utilisateur Microsoft Teams.

Étape 4 : Supprimer un utilisateur Teams d’un appel Communication Services existant contrôlé par les API Automation d’appel

await answer.Value.CallConnection.RemoveParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().removeParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.removeParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.remove_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"))

Fonctionnalité facultative : Transférer vers un utilisateur Teams à partir d’un appel Communication Services existant contrôlé par les API Automation d’appel

await answer.Value.CallConnection.TransferCallToParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().transferCallToParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.transferCallToParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.transfer_call_to_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id = "<USER_ID>"))

Nettoyer les ressources

Si vous voulez nettoyer et supprimer un abonnement Communication Services, vous pouvez supprimer la ressource ou le groupe de ressources. La suppression du groupe de ressources efface également les autres ressources qui y sont associées. Apprenez-en davantage sur le nettoyage des ressources.

Étapes suivantes