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 :
- 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.
- Découvrez les identificateurs d’utilisateur comme CommunicationUserIdentifier et PhoneNumberIdentifier utilisés dans ce guide.
- 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);
}