Section courante

A propos

Section administrative du site

Azure Communication

Bibliothèque cliente Azure Communication CallAutomation pour .NET

Installez la bibliothèque cliente Azure Communication CallAutomation pour .NET avec NuGet :

dotnet add package Azure.Communication.CallAutomation

Prérequis

Vous avez besoin d'un abonnement Azure et d'une ressource de service de communication pour utiliser ce paquet.

Pour créer un service de communication, vous pouvez utiliser le portail Azure, Azure PowerShell ou la bibliothèque cliente de gestion .NET.

Concepts clefs

CallAutomationClient permet de répondre aux appels entrants ou d'initialiser un appel sortant.

Utilisation des instructions

  1. using Azure.Communication.CallAutomation;

Authentifier le client

Le client d'automatisation des appels peut être authentifié à l'aide de la chaîne de connexion obtenue à partir d'une ressource de communication Azure dans le portail Azure.

  1. var connectionString = "<chaine_de_connexion>"; // Trouvez votre ressource Communication Services dans le portail Azure
  2. CallAutomationClient callAutomationClient = new CallAutomationClient(connectionString);

Ou bien, en utilisant un jeton Active Directory valide :

  1. var endpoint = new Uri("https://my-resource.communication.azure.com");
  2. TokenCredential tokenCredential = new DefaultAzureCredential();
  3. var client = new CallAutomationClient(endpoint, tokenCredential);

Exemples

Pour appeler un numéro de téléphone (pour passer un appel sortant), appelez la fonction CreateCall ou CreateCallAsync depuis CallAutomationClient :

  1. CallInvite callInvite = new CallInvite(
  2.     new PhoneNumberIdentifier("<numero-de-telephone-destinataire>"),
  3.     new PhoneNumberIdentifier("<numero-de-telephone-de-l-appelant>")
  4.     );  // Numéro de téléphone du destinataire au format E.164
  5.  
  6. // créer un appel avec l'invitation ci-dessus
  7. createCallResult = await callAutomationClient.CreateCallAsync(
  8.     callInvite,
  9.     new Uri("<VOTRE-URL-DE-RAPPEL>")
  10.     );
  11.  
  12. Console.WriteLine($"ID de connexion d'appel : {createCallResult.CallConnectionProperties.CallConnectionId}");

Gérer les événements de rappel de mi-connexion

Votre application recevra les événements de rappel de mi-connexion via le callbackEndpoint que vous avez fourni. Vous devrez écrire un contrôleur de gestionnaire d'événements pour recevoir ces événements et diriger le flux de votre application en fonction de votre logique métier :

  1. /// <summary>
  2. /// Gérer les événements de rappel.
  3. /// </summary>>
  4. [HttpPost]
  5. [Route("/CallBackEvent")]
  6. public IActionResult OnMidConnectionCallBackEvent([FromBody] CloudEvent[] events)
  7. {
  8.     try
  9.     {
  10.         if (events != null)
  11.         {
  12.             // Fonction d'assistance pour analyser CloudEvent en un événement CallAutomation.
  13.             CallAutomationEventBase callBackEvent = CallAutomationEventParser.Parse(events.FirstOrDefault());
  14.  
  15.             switch (callBackEvent)
  16.             {
  17.                 case CallConnected ev:
  18.                     # logique pour gérer un événement CallConnected
  19.                     break;
  20.                 case CallDisconnected ev:
  21.                     # logique pour gérer un événement CallDisConnected
  22.                     break;
  23.                 case ParticipantsUpdated ev:
  24.                     # Convertissez l'événement en événement ParticipantUpdated et effectuez une action, par exemple en parcourant les participants.
  25.                     ParticipantsUpdated updatedEvent = (ParticipantsUpdated)ev;
  26.                     break;
  27.                 case AddParticipantsSucceeded ev:
  28.                     # logique pour gérer un événement AddParticipantsSucceeded
  29.                     break;
  30.                 case AddParticipantsFailed ev:
  31.                     # logique pour gérer un événement AddParticipantsFailed
  32.                     break;
  33.                 case CallTransferAccepted ev:
  34.                     # logique pour gérer l'événement CallTransferAccepted
  35.                     break;
  36.                 case CallTransferFailed ev:
  37.                     # logique pour gérer l'événement CallTransferFailed
  38.                     break;
  39.                 default:
  40.                     break;
  41.             }
  42.         }
  43.     }
  44.     catch (Exception ex)
  45.     {
  46.         // gérer l'exception
  47.     }
  48.     return Ok();
  49. }

Gérez les événements de mi-connexion avec le processeur d'événements de CallAutomation.

Pour gérer facilement les événements de mi-connexion, le SDK de CallAutomation offre une solution simplifiée. Découvrez le processeur d'événements CallAutomation. Il facilite la corrélation entre l'appel et les événements.

  1. [HttpPost]
  2. [Route("/CallBackEvent")]
  3. public IActionResult OnMidConnectionCallBackEvent([FromBody] CloudEvent[] events)
  4. {
  5.     try
  6.     {
  7.         // traiter l'événement entrant pour EventProcessor
  8.         _callAutomationClient.GetEventProcessor().ProcessEvents(cloudEvents);
  9.     }
  10.     catch (Exception ex)
  11.     {
  12.         // gérer l'exception
  13.     }
  14.     return Ok();
  15. }

ProcessEvents est requis pour le fonctionnement d'EventProcessor. Une fois l'événement consommé par EventProcessor, vous pouvez commencer à utiliser sa fonctionnalité.

Voir l'exemple ci-dessous : vous effectuez un appel avec CreateCall et attendez l'événement CallConnected.

  1. CallInvite callInvite = new CallInvite(
  2.     new PhoneNumberIdentifier("<cibles-numero-de-telephone>"),
  3.     new PhoneNumberIdentifier("<numero-de-telephone-de-l-appelant>")
  4.     );  // Numéro de téléphone du destinataire au format E.164
  5.  
  6. // créer un appel avec l'invitation ci-dessus
  7. createCallResult = await callAutomationClient.CreateCallAsync(
  8.     callInvite,
  9.     new Uri("<VOTRE-URL-DE-RAPPEL>")
  10.     );
  11.  
  12. // donner un délai de 30 secondes au destinataire de l'appel pour répondre
  13. CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
  14. CancellationToken token = cts.Token;
  15.  
  16. try
  17. {
  18.     // cela attendra que CreateCall soit terminé ou que délai d'attente soit dépassé !
  19.     CreateCallEventResult eventResult = await createCallResult.WaitForEventAsync(token);
  20.  
  21.     // Une fois ceci reçu, vous savez que l'appel est désormais connecté.
  22.     CallConnected returnedEvent = eventResult.SuccessEvent;
  23.  
  24.     // ...Effectuez d'autres actions, telles que Jouer ou Ajouter un participant, puisque l'appel est établi...
  25. }
  26. catch (OperationCanceledException ex)
  27. {
  28.     // Une exception de délai d'attente s'est produite !
  29.     // L'appel n'a probablement jamais reçu de réponse.
  30. }

Si le jeton d'annulation n'a pas été transmis avec un délai d'expiration, le délai par défaut est de 4 minutes.

Dépannage

Une exception RequestFailedException est générée en réponse à toute requête infructueuse. L'exception contient des informations sur le code de réponse renvoyé par le service.



Dernière mise à jour : Mardi, le 3 juin 2025