Ajouter un utilisateur Microsoft Teams à un appel existant à l’aide de Call Automation
Important
Cette fonctionnalité d’Azure Communication Services est actuellement en préversion.
Ces interfaces de programmation d’applications et kits de développement logiciel (SDK) en préversion sont fournis sans contrat au niveau du service. Nous vous recommandons de ne pas les utiliser pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge.
Pour plus d’informations, consultez Conditions d’utilisation supplémentaires relatives aux préversions de Microsoft Azure.
Dans ce guide de démarrage rapide, nous utilisons les API d’automatisation des appels Azure Communication Services pour ajouter, supprimer et transférer les appels vers un utilisateur Teams.
Prérequis
- Un compte Azure avec un abonnement actif. Pour plus d’informations, consultez Créer un compte gratuitement..
- Une licence Microsoft Teams Phone et un tenant (locataire) Teams avec des privilèges administratifs. Une licence Teams Phone est indispensable pour utiliser cette fonctionnalité. Découvrez plus en détail 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 permettre les appels via les API d’automatisation des appels, un administrateur Microsoft Teams ou un Administrateur général doit explicitement permettre aux ressources Communication Services d’accéder à leur tenant (locataire).
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.
É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 suivant utilise l’API Graph.
Un administrateur Microsoft Entra doit donner son consentement pour permettre l’utilisation de Graph dans le cadre de la recherche d’utilisateurs. Découvrez plus en détail 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 d’affichage, mais vous pouvez également rechercher d’autres propriétés :
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 est envoyé à l’utilisateur Microsoft Teams via une notification toast d’appel entrant.
Une fois que l’utilisateur Microsoft Teams a accepté l’appel, l’expérience d’appel de l’utilisateur Microsoft Teams affiche tous les participants de la liste Microsoft Teams. Votre application, qui gère l’appel à l’aide de l’API d’automatisation des appels, reste masquée pour l’utilisateur Teams sur l’écran d’appel.
É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
- Découvrez comment enregistrer vos appels.
- En savoir plus sur l’automatisation des appels et ses fonctionnalités.
- En savoir plus sur les fonctionnalités de la prise en charge de l’interopérabilité Teams avec Azure Communication Services Call Automation
- Découvrez-en plus sur l’action Lire pour lire l’audio dans un appel.
- Découvrez comment créer un workflow d’appels pour un scénario de service client.