Share via


Comment contrôler les actions multimédias intermédiaires avec Call Automation

Call Automation utilise une interface d’API REST pour recevoir des requêtes d’actions et fournir des réponses pour indiquer si la requête a été envoyée avec succès ou non. 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. Ce guide décrit les actions disponibles pour les développeurs pendant les appels, telles que l’envoi de DTMF et la reconnaissance DTMF continue. Les actions sont accompagnées d’exemples de code sur la façon d’appeler l’action dite.

Call Automation prend en charge différentes autres actions pour gérer les appels et l’enregistrement qui ne sont pas inclus dans ce guide.

Remarque

Call Automation n’est actuellement pas interopérable avec Microsoft Teams. Les actions telles que la création, la redirection d’un appel vers un utilisateur Teams ou la lecture audio vers un utilisateur Teams à l’aide d’Call Automation ne sont pas prises en charge.

En guise de prérequis, nous vous recommandons de lire les articles ci-dessous pour tirer le meilleur parti de ce guide :

  1. Guide des concepts de Call Automation, qui décrit le modèle de programmation d’événements d’action et les rappels d’événements.
  2. Découvrez les identificateurs d’utilisateur comme CommunicationUserIdentifier et PhoneNumberIdentifier utilisés dans ce guide.
  3. Apprenez-en davantage sur la façon de contrôler et de diriger les appels avec Call Automation, qui vous apprend à gérer les principes fondamentaux de l’utilisation d’un appel.

Pour tous les exemples de code, client est l’objet CallAutomationClient qui peut être créé comme indiqué, et callConnection est l’objet CallConnection obtenu à partir de la réponse Answer ou CreateCall. Vous pouvez également l’obtenir à partir d’événements de rappel reçus par votre application.

var callAutomationClient = new CallAutomationClient("<Azure Communication Services connection string>");

Envoyer DTMF

Vous pouvez envoyer des tonalités DTMF à un participant externe, ce qui peut être utile lorsque vous êtes déjà en cours d’appel et que vous devez inviter un autre participant disposant d’un numéro d’extension ou d’un menu IVR à parcourir.

Remarque

Cela est uniquement pris en charge pour les participants RTC externes et prend en charge l’envoi d’un maximum de 18 tonalités à la fois.

SendDtmfAsync, méthode

Envoyez une liste de tonalités DTMF à un participant externe.

var tones = new DtmfTone[] { DtmfTone.One, DtmfTone.Two, DtmfTone.Three, DtmfTone.Pound }; 
var sendDtmfTonesOptions = new SendDtmfTonesOptions(tones, new PhoneNumberIdentifier(calleePhonenumber))
{ 
	OperationContext = "dtmfs-to-ivr" 
}; 

var sendDtmfAsyncResult = await callAutomationClient.GetCallConnection(callConnectionId) 
	.GetCallMedia() 
        .SendDtmfTonesAsync(sendDtmfTonesOptions); 

Lorsque votre application envoie ces tonalités DTMF, vous recevez des mises à jour d’événements. Vous pouvez utiliser les événements et SendDtmfTonesFailed les SendDtmfTonesCompleted événements pour créer une logique métier dans votre application pour déterminer les étapes suivantes.

Exemple d’événement SendDtmfTonesCompleted

if (acsEvent is SendDtmfTonesCompleted sendDtmfCompleted) 
{ 
    logger.LogInformation("Send DTMF succeeded, context={context}", sendDtmfCompleted.OperationContext); 
} 

Exemple d’SendDtmfTonesFailed

if (acsEvent is SendDtmfTonesFailed sendDtmfFailed) 
{ 
    logger.LogInformation("Send dtmf failed: result={result}, context={context}", 
        sendDtmfFailed.ResultInformation?.Message, sendDtmfFailed.OperationContext); 
} 

Reconnaissance DTMF continue

Vous pouvez vous abonner pour recevoir des tonalités DTMF continues tout au long de l’appel. Votre application reçoit des tonalités DTMF lorsque le participant ciblé appuie sur une touche sur son pavé numérique. Ces tonalités sont envoyées à votre application un par un, car le participant les appuie.

StartContinuousDtmfRecognitionAsync, méthode

Commencez à détecter les tonalités DTMF envoyées par un participant.

await callAutomationClient.GetCallConnection(callConnectionId) 
    .GetCallMedia() 
    .StartContinuousDtmfRecognitionAsync(new PhoneNumberIdentifier(c2Target), "dtmf-reco-on-c2"); 

Lorsque votre application ne souhaite plus recevoir les tonalités DTMF du participant, vous pouvez utiliser la StopContinuousDtmfRecognitionAsync méthode pour informer Azure Communication Services de cesser de détecter les tonalités DTMF.

StopContinuousDtmfRecognitionAsync

Arrêtez la détection des tonalités DTMF envoyées par le participant.

var continuousDtmfRecognitionOptions = new ContinuousDtmfRecognitionOptions(new PhoneNumberIdentifier(callerPhonenumber)) 
{ 
    OperationContext = "dtmf-reco-on-c2" 
}; 

var startContinuousDtmfRecognitionAsyncResult = await callAutomationClient.GetCallConnection(callConnectionId) 
    .GetCallMedia() 
    .StartContinuousDtmfRecognitionAsync(continuousDtmfRecognitionOptions); 

Votre application reçoit les mises à jour des événements lorsque ces actions réussissent ou échouent. Vous pouvez utiliser ces événements pour créer une logique métier personnalisée pour configurer l’étape suivante que votre application doit prendre quand elle reçoit ces mises à jour d’événements.

ContinuousDtmfRecognitionToneReceived, événement

Exemple de la façon dont vous pouvez gérer une tonalité DTMF détectée avec succès.

if (acsEvent is ContinuousDtmfRecognitionToneReceived continuousDtmfRecognitionToneReceived) 
{ 
	logger.LogInformation("Tone detected: sequenceId={sequenceId}, tone={tone}", 
	continuousDtmfRecognitionToneReceived.SequenceId, 
        continuousDtmfRecognitionToneReceived.Tone); 
} 

Azure Communication Services vous fournit un SequenceId élément dans le cadre de l’événement ContinuousDtmfRecognitionToneReceived , que votre application peut utiliser pour reconstruire l’ordre dans lequel le participant a entré les tonalités DTMF.

Événement ContinuousDtmfRecognitionFailed

Exemple de gestion de l’échec de la détection de tonalité DTMF.

if (acsEvent is ContinuousDtmfRecognitionToneFailed continuousDtmfRecognitionToneFailed) 
{ 
    logger.LogInformation("Start continuous DTMF recognition failed, result={result}, context={context}", 
        continuousDtmfRecognitionToneFailed.ResultInformation?.Message, 
        continuousDtmfRecognitionToneFailed.OperationContext); 
} 

Événement ContinuousDtmfRecogntionStopped

Exemple de gestion du moment où la reconnaissance DTMF continue s’est arrêtée, cela peut être dû au fait que votre application a appelé l’événement StopContinuousDtmfRecognitionAsync ou parce que l’appel s’est terminé.

if (acsEvent is ContinuousDtmfRecognitionStopped continuousDtmfRecognitionStopped) 
{ 
    logger.LogInformation("Continuous DTMF recognition stopped, context={context}", continuousDtmfRecognitionStopped.OperationContext); 
}