Partager via


Vue d’ensemble de Call Automation

Call Automation d’Azure Communication Services permet aux développeurs de créer des flux de travail d’appels intelligents basés sur serveur, ainsi que des fonctionnalités d’enregistrement d’appel pour les canaux vocaux et le réseau téléphonique commuté (RTC) public. Les kits de développement logiciel (SDK), disponibles en C#, Java, JavaScript et Python, utilisent un modèle d’évènement d’action pour vous aider à créer des interactions client personnalisées. Vos applications de communication peuvent écouter les évènements d’appel en temps réel et effectuer des actions de plan de contrôle (comme répondre, transférer, lire un audio, démarrer un enregistrement, etc.) pour diriger et contrôler les appels en fonction de votre logique métier.

Cas d’utilisation courants

Voici quelques-uns des cas d’usage courants possibles avec Call Automation :

  • Programmez des appels VoIP ou RTC pour des flux de travail transactionnels comme les appels par clic et les rappels de rendez-vous pour améliorer le service client.
  • Créez des flux de travail d’interaction interactifs pour les clients en libre service dans des cas d’usage comme les réservations de commandes et les mises à jour, à l’aide d’actions de lecture (URL audio, synthèse vocales et SSML) et de reconnaissance (DTMF et Voice).
  • Intégrez vos applications de communication aux centres de contacts et à vos réseaux de téléphonie privés à l’aide du routage direct.
  • Protégez l’identité de vos clients en créant des services de masquage de numéros pour mettre en relation les acheteurs avec les vendeurs ou les utilisateurs avec les fournisseurs partenaires sur votre plateforme.
  • Augmentez l’engagement en créant des programmes automatisés de suivi des clients pour le marketing et le service client.
  • Analysez dans un processus postappel vos enregistrements audio séparés à des fins d’assurance qualité.

Utilisez Call Automation d’Azure Communication Services pour créer des flux de travail d’appel dans les scénarios d’assistance à la clientèle (comme indiqué dans l’architecture de haut niveau). Il est possible de répondre aux appels entrants ou d’effectuer des appels sortants. Exécutez des actions comme lire un message d’accueil ou mettre le client en relation avec un agent en direct sur une application cliente du kit SDK d’appel Azure Communication Services pour répondre à la demande d’appel entrante. Grâce à la prise en charge d’Azure Communication Services RTC ou du routage direct, vous pouvez ensuite connecter ce flux de travail à votre centre de contacts.

Diagramme du flux d’appels dans un scénario de service client.

Fonctionnalités

Les fonctionnalités suivantes sont actuellement disponibles dans les kits SDK Call Automation d’Azure Communication Services.

Zone Fonctionnalités Fonctionnalité .NET Java JavaScript Python
Scénarios avant appel Répondre à un appel individuel ✔️ ✔️ ✔️ ✔️
Répondre à un appel de groupe ✔️ ✔️ ✔️ ✔️
Passer un nouvel appel sortant vers un ou plusieurs points de terminaison ✔️ ✔️ ✔️ ✔️
Rediriger* (transférer) un appel vers un ou plusieurs points de terminaison ✔️ ✔️ ✔️ ✔️
Rejeter un appel entrant ✔️ ✔️ ✔️ ✔️
Se connecter à un appel en cours ou à une salle (en préversion) ✔️ ✔️ ✔️ ✔️
Scénarios en cours d’appel Ajouter un ou plusieurs points de terminaison à un appel existant ✔️ ✔️ ✔️ ✔️
Annuler l’ajout d’un point de terminaison à un appel existant ✔️ ✔️ ✔️ ✔️
Lire un fichier audio ✔️ ✔️ ✔️ ✔️
Lire l’audio en utilisant la synthèse vocale ✔️ ✔️ ✔️ ✔️
Reconnaître l’entrée utilisateur via DTMF ✔️ ✔️ ✔️ ✔️
Reconnaître les entrées vocales de l’utilisateur ✔️ ✔️ ✔️ ✔️
Démarrer la reconnaissance DTMF en continu ✔️ ✔️ ✔️ ✔️
Arrêter la reconnaissance DTMF en continu ✔️ ✔️ ✔️ ✔️
Envoyer DTMF ✔️ ✔️ ✔️ ✔️
Désactiver le son du participant ✔️ ✔️ ✔️ ✔️
Démarrer/arrêter la diffusion audio (préversion publique) ✔️ ✔️ ✔️ ✔️
Démarrer/Arrêter la transcription en temps réel (préversion publique) ✔️ ✔️ ✔️ ✔️
Supprimer un ou plusieurs points de terminaison d’un appel existant ✔️ ✔️ ✔️ ✔️
Effectuer un transfert aveugle d’un appel individuel vers un autre point de terminaison ✔️ ✔️ ✔️ ✔️
Effectuer un transfert aveugle d’un participant de l’appel de groupe vers un autre point de terminaison ✔️ ✔️ ✔️ ✔️
Raccrocher (supprimer le signal d’appel) ✔️ ✔️ ✔️ ✔️
Mettre fin à un appel (supprimer tous les participants et arrêter l’appel) ✔️ ✔️ ✔️ ✔️
Annuler les opérations multimédias ✔️ ✔️ ✔️ ✔️
Partager des informations personnalisées (via des en-têtes VOIP ou SIP) avec des points de terminaison lors de leur ajout à un appel ou du transfert d’un appel vers eux ✔️ ✔️ ✔️ ✔️
Scénarios de requêtes Récupérer l’état d’appel ✔️ ✔️ ✔️ ✔️
Trouver un participant à un appel ✔️ ✔️ ✔️ ✔️
Lister les participants à un appel ✔️ ✔️ ✔️ ✔️
Enregistrement d’appel Démarrer/mettre en pause/reprendre/arrêter un enregistrement ✔️ ✔️ ✔️ ✔️

* Le transfert ou la redirection d’un appel VoIP vers un numéro de téléphone n’est actuellement pas pris en charge.

Architecture

Call Automation utilise une interface d’API REST pour recevoir des demandes et fournir des réponses à toutes les actions effectuées dans le service. Pour la plupart des actions, des événements correspondants sont déclenchés lorsque l’action se termine correctement ou échoue, et ce, en raison de la nature asynchrone de l’appel.

Azure Communication Services utilise Event Grid pour fournir l’événement IncomingCall et les webhooks HTTPS pour tous les rappels d’action en cours d’appel.

Capture d’écran du flux de l’appel entrant et des actions.

Actions d’appel

Actions avant appel

Ces actions sont effectuées avant que le point de terminaison de destination qui figure dans la notification d’événement IncomingCall soit connecté. Les événements de rappel par webhook communiquent uniquement l’action answer avant appel, et non les actions reject ou redirect.

Répondre : à l’aide de l’événement IncomingCall d’Event Grid et du SDK Call Automation, votre application peut répondre à un appel. Utilisez cette action dans les scénarios IVR dans lesquels votre application peut répondre par programmation aux appels RTC entrants. Un autre cas de figure consiste à répondre à un appel au nom d’un utilisateur.

Rejeter : rejeter un appel signifie que votre application peut recevoir l’événement IncomingCall et empêcher l’appel d’être connecté au point de terminaison de destination.

Rediriger : à l’aide de l’événement IncomingCall d’Event Grid, vous pouvez rediriger un appel vers un ou plusieurs points de terminaison, créant ainsi un scénario de sonnerie unique ou simultanée. L’action de redirection ne répond pas à l’appel. L’appel est simplement redirigé ou transféré vers un autre point de terminaison de destination pour la réponse.

Créer un appel : utilisez l’action Créer un appel pour passer des appels sortants vers des numéros de téléphone et vers d’autres utilisateurs de communication. Parmi les cas d’usage, on peut citer une application qui passe des appels sortants pour informer de manière proactive les utilisateurs d’une panne ou d’une mise à jour de commande.

Connecter un appel (en préversion) : utilisez l’action Connecter un appel pour se connecter à un appel en cours et effectuer des actions d’appel sur celui-ci. Vous pouvez également utiliser cette action pour connecter et gérer un appel de salle par programmation, comme l’exécution d’appels sortants RTC pour une salle à l’aide de votre service.

Actions en cours d’appel

Votre application peut effectuer ces actions sur les appels qui reçoivent une réponse ou qui sont passés à l’aide des kits SDK Call Automation. Chaque action en cours d’appel correspond à un événement de rappel par webhook ayant réussi ou échoué.

Ajouter ou supprimer un ou plusieurs participants : vous pouvez ajouter un ou plusieurs participants dans une requête unique, chacun d’eux constituant une variante des points de terminaison de destination pris en charge. Un rappel de webhook est envoyé pour chaque participant qui a pu être ajouté à l’appel.

Lire : lorsque votre application répond à un appel ou passe un appel sortant, vous pouvez diffuser une invite audio auprès de l’appelant. Ce contenu audio peut si nécessaire être lu en boucle dans des scénarios comme la lecture de musique d’attente. Pour plus d’informations, consultez Lire l’audio dans l’appel et Personnalisation des invites vocales destinées aux utilisateurs avec l’action Lire.

Reconnaître l’entrée : une fois que votre application a diffusé une invite audio, vous pouvez demander à l’utilisateur d’entrer des données pour piloter la logique métier et la navigation dans votre application. Pour plus d’informations, consultez Collecte de l’entrée utilisateur et le guide de procédure Collecter les entrées utilisateur avec l’action de reconnaissance.

Reconnaissance DTMF en continu : lorsque votre application doit être en mesure de recevoir des tonalités DTMF à n’importe quel moment de l’appel sans avoir besoin de déclencher une action de reconnaissance spécifique. Cette capacité peut être utile dans les scénarios où un agent est sur un appel et a besoin que l’utilisateur entre un type d’ID ou de numéro de suivi. Pour plus d’informations, consultez le Guide pratique pour contrôler les actions multimédias intermédiaires.

Envoyer DTMF : lorsque votre application doit envoyer des tonalités DTMF à un participant externe. Utilisez cette action pour appeler un agent externe et fournir le numéro d’extension, ou pour naviguer dans un menu IVR externe.

Désactiver le micro : votre application peut désactiver le micro de certains utilisateurs en fonction de votre logique métier. L’utilisateur doit ensuite réactiver son micro manuellement s’il souhaite parler.

Transférer - Quand votre application répond à un appel ou passe un appel sortant vers un point de terminaison, cet appel peut être transféré vers un autre point de terminaison de destination. Le fait de transférer un appel individuel empêche votre application de le contrôler à l’aide des SDK Call Automation.

Enregistrer : vous décidez du moment où il faut démarrer/mettre en pause/reprendre/arrêter un enregistrement en fonction de la logique métier de votre application, ou vous pouvez octroyer le contrôle à l’utilisateur final pour qu’il déclenche ces actions. Pour en savoir plus, consultez nos concepts et notre démarrage rapide.

Raccrocher : lorsque votre application répond à un appel individuel, l’action Raccrocher supprime le signal d’appel et met fin à l’appel avec l’autre point de terminaison. S’il y a plus de deux participants à l’appel (appel de groupe), exécuter une action Raccrocher a pour effet de supprimer de l’appel de groupe le point de terminaison de votre application.

Terminer : que votre application réponde à un appel individuel ou de groupe, ou qu’elle passe un appel sortant avec un ou plusieurs participants, cette action supprime tous les participants et met fin à l’appel. Cette opération est déclenchée en définissant la propriété forEveryOne sur true dans l’action d’appel Mettre fin.

Annuler les opérations multimédias : en fonction de la logique métier, votre application peut avoir besoin d’annuler des opérations multimédias en cours et en file d’attente. En fonction de l’opération multimédia annulée et des opérations en file d’attente, votre application est susceptible de recevoir un événement webhook indiquant que l’action a été annulée.

Démarrer/arrêter la diffusion audio (préversion publique) : La diffusion audio vous permet de vous abonner à des flux audio en temps réel à partir d’un appel en cours. Pour obtenir des conseils plus détaillés sur la prise en main de la diffusion audio en continu et des informations sur les événements de rappel de la diffusion audio en continu, consultez notre concept et notre guide de démarrage rapide.

Démarrer/Arrêter la transcription en temps réel (préversion publique) : La transcription en temps réel vous permet d’accéder à la transcription en direct de l’audio d’un appel en cours. Pour des conseils plus détaillés sur la prise en main de la transcription en temps réel et des informations sur les événements de rappel de la transcription en temps réel, consultez notre concept et notre guide de démarrage rapide.

Scénarios de requêtes

Lister les participants : retourne une liste de tous les participants à un appel. Les bots d’enregistrement et de transcription sont omis dans cette liste.

Événements

Le tableau suivant présente les événements actuels émis par Azure Communication Services. Les deux tableaux suivants décrivent les événements émis par Event Grid et à partir de l’automatisation des appels en tant qu’événements webhook.

Événements Event Grid

La plupart des événements envoyés par Event Grid sont indépendants de la plateforme. Ils sont envoyés quel que soit le SDK (Appel ou Call Automation). Bien qu’il soit possible de créer un abonnement pour n’importe quel événement, nous vous recommandons d’utiliser l’événement IncomingCall pour tous les cas d’usage Call Automation dans lesquels vous souhaitez contrôler l’appel programmatiquement. Servez-vous des autres événements à des fins de création de rapports ou de télémétrie.

Événement Description
IncomingCall Notification d’un appel à un utilisateur de communication ou à un numéro de téléphone.
CallStarted Établissement d’un appel (entrant ou sortant).
CallEnded Arrêt d’un appel et suppression de tous les participants.
ParticipantAdded Ajout d’un participant à un appel.
ParticipantRemoved Suppression d’un participant d’un appel.
RecordingFileStatusUpdated Un fichier d’enregistrement est disponible.

Apprenez-en davantage sur ces événements et sur le schéma de charge utile dans Azure Communication Services – Événements d’appel vocal et vidéo.

Événements webhook Call Automation

Les événements Call Automation sont envoyés à l’URI de rappel par webhook spécifié lorsque vous répondez à un appel sortant ou que vous en passez un.

Événement Description
CallConnected L’appel a correctement démarré (si utilisation de l’action Answer ou Create) ou votre application s’est correctement connectée à un appel en cours (si utilisation de l’action Connect).
CallDisconnected Votre application a été déconnectée de l’appel.
CreateCallFailed Votre application n’a pas pu créer l’appel.
ConnectFailed Votre application n’a pas pu se connecter à un appel (pour l’action d’appel Connect uniquement).
CallTransferAccepted L’action de transfert s’est correctement terminée et le destinataire est connecté au participant cible.
CallTransferFailed Échec de l’action de transfert.
AddParticipantSucceeded Votre application a correctement ajouté un participant à l’appel.
AddParticipantFailed Votre application n’a pas pu ajouter un participant à l’appel (en raison d’une erreur ou si le participant n’a pas accepté l’invitation)
CancelAddParticipantSucceeded Votre application a correctement annulé une requête AddParticipant (le participant n’a pas été ajouté à l’appel).
CancelAddParticipantFailed Votre application n’a pas pu annuler une requête AddParticipant (cela peut être dû au fait que la requête a déjà été traitée).
RemoveParticipantSucceeded Votre application a correctement supprimé un participant de l’appel.
RemoveParticipantFailed Votre application n’a pas pu supprimer un participant de l’appel.
ParticipantsUpdated Ls statut d’un participant a changé pendant que votre application était connectée à un appel.
PlayCompleted Votre application a correctement lu le fichier audio fourni.
PlayFailed Votre application n’a pas pu lire le fichier audio.
PlayCanceled L’action de lecture demandée a été annulée.
RecognizeCompleted La reconnaissance de l’entrée utilisateur s’est correctement terminée.
RecognizeCanceled L’action Recognize demandée a été annulée.
RecognizeFailed La reconnaissance de l’entrée utilisateur a échoué.
Pour plus d’informations sur la reconnaissance des évènements d’action, consultez le guide pratique sur la collecte des entrées utilisateur.
RecordingStateChanged Le statut de l’action d’enregistrement est passé d’actif à inactif ou inversement.
ContinuousDtmfRecognitionToneReceived StartContinuousDtmfRecognition s’est terminée avec succès et une tonalité DTMF a été reçue du participant.
ContinuousDtmfRecognitionToneFailed StartContinuousDtmfRecognition s’est terminée, mais une erreur s’est produite lors de la gestion d’une tonalité DTMF du participant.
ContinuousDtmfRecognitionStopped StopContinuousRecognition a été correctement exécutée.
SendDtmfCompleted SendDTMF s’est correctement terminée et a envoyé les tonalités DTMF au participant cible.
SendDtmfFailed Une erreur s’est produite lors de l’envoi des tonalités DTMF.

Pour comprendre quels sont les événements publiés pour différentes actions, consultez Actions pour le contrôle d’appel. L’article fournit des exemples de code et des diagrammes de séquence pour différents flux de contrôle d’appel.

En guise de meilleure pratique lorsque vous accusez réception d’événements de rappel, veillez à répondre avec des codes d’état HTTP standard, comme 200 OK. Les informations détaillées sont inutiles et sont davantage adaptées à vos processus de débogage.

Pour découvrir comment sécuriser la remise des événements de rappel, consultez le Guide pratique pour sécuriser le point de terminaison webhook.

URI de rappel d’opération

L’URI de rappel d’opération est un paramètre facultatif dans certaines API intermédiaires qui utilisent des événements comme réponses asynchrones. Par défaut, tous les événements sont envoyés à l’URI de rappel par défaut défini par des événements d’API CreateCall / AnswerCall lorsque l’utilisateur établit un appel. Utilisant l’URI de rappel d’opération, l’API envoie les évènements correspondants de cette requête spécifique (unique seulement) au nouvel URI.

API prise en charge Événement correspondant
AddParticipant AddParticipantSucceed / AddParticipantFailed
RemoveParticipant RemoveParticipantSucceed / RemoveParticipantFailed
TransferCall CallTransferAccepted / CallTransferFailed
CancelAddParticipant CancelAddParticipantSucceeded / CancelAddParticipantFailed
Play PlayCompleted / PlayFailed / PlayCanceled
PlayToAll PlayCompleted / PlayFailed / PlayCanceled
Recognize RecognizeCompleted / RecognizeFailed / RecognizeCanceled
StopContinuousDTMFRecognition ContinuousDtmfRecognitionStopped
SendDTMF ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed
Hold HoldFailed
StartMediaStreaming MediaStreamingStarted / MediaStreamingFailed
StopMediaStreaming MediaStreamingStopped / MediaStreamingFailed
StartTranscription TranscriptionStarted / TranscriptionFailed
UpdateTranscription TranscriptionUpdated / TranscriptionFailed
StopTranscription TranscriptionStopped / TranscriptionFailed

Étapes suivantes