Mediaacties voor middengesprekken beheren met Gespreksautomatisering

Aanroepautomatisering maakt gebruik van een REST API-interface voor het ontvangen van aanvragen voor acties en het verstrekken van antwoorden om te melden of de aanvraag is verzonden of niet. Vanwege de asynchrone aard van het aanroepen hebben de meeste acties overeenkomende gebeurtenissen die worden geactiveerd wanneer de actie is voltooid of mislukt. In deze handleiding worden de acties beschreven die beschikbaar zijn voor ontwikkelaars tijdens aanroepen, zoals DTMF en Continue DTMF-herkenning. Acties worden vergezeld van voorbeeldcode over het aanroepen van de genoemde actie.

Gespreksautomatisering ondersteunt verschillende andere acties voor het beheren van oproepen en opnemen die niet zijn opgenomen in deze handleiding.

Notitie

Gespreksautomatisering werkt momenteel niet samen met Microsoft Teams. Acties zoals het maken, omleiden van een oproep naar een Teams-gebruiker of het afspelen van audio naar een Teams-gebruiker met behulp van Gespreksautomatisering, worden niet ondersteund.

Als vereiste raden we u aan de onderstaande artikelen te lezen om optimaal gebruik te maken van deze handleiding:

  1. Handleiding voor aanroepautomatiseringsconcepten waarin het programmeermodel voor actiegebeurtenissen en callbacks voor gebeurtenissen wordt beschreven.
  2. Meer informatie over gebruikers-id's zoals CommunicationUserIdentifier en Telefoon NumberIdentifier die in deze handleiding worden gebruikt.
  3. Meer informatie over het beheren en sturen van gesprekken met Gespreksautomatisering, waarmee u de basisbeginselen van het omgaan met een gesprek leert.

Voor alle codevoorbeelden client is CallAutomationClient-object dat kan worden gemaakt zoals weergegeven en callConnection het object Call Verbinding maken ion is verkregen uit answer of CreateCall-antwoord. U kunt deze ook verkrijgen via callbackgebeurtenissen die door uw toepassing zijn ontvangen.

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

DTMF verzenden

U kunt DTMF-tonen verzenden naar een externe deelnemer, wat handig kan zijn wanneer u al in gesprek bent en een andere deelnemer moet uitnodigen die een toestelnummer of een IVR-menu heeft om te navigeren.

Notitie

Dit wordt alleen ondersteund voor externe PSTN-deelnemers en ondersteunt het verzenden van maximaal 18 tonen tegelijk.

Methode SendDtmfAsync

Verzend een lijst met DTMF-tonen naar een externe deelnemer.

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); 

Wanneer uw toepassing deze DTMF-tonen verzendt, ontvangt u gebeurtenisupdates. U kunt de SendDtmfTonesCompleted en SendDtmfTonesFailed gebeurtenissen gebruiken om bedrijfslogica in uw toepassing te maken om de volgende stappen te bepalen.

Voorbeeld van sendDtmfTonesCompleted-gebeurtenis

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

Voorbeeld van SendDtmfTonesFailed

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

Continue DTMF-herkenning

U kunt zich abonneren om doorlopende DTMF-tonen te ontvangen tijdens het gesprek. Uw toepassing ontvangt DTMF-tonen terwijl de beoogde deelnemer op een toets op het toetsenblok drukt. Deze tonen worden één voor één naar uw toepassing verzonden terwijl de deelnemer erop drukt.

Methode StartContinuousDtmfRecognitionAsync

Begin met het detecteren van DTMF-tonen die door een deelnemer zijn verzonden.

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

Wanneer uw toepassing geen DTMF-tonen meer van de deelnemer wil ontvangen, kunt u de StopContinuousDtmfRecognitionAsync methode gebruiken om Azure Communication Services te laten weten dat de DTMF-tonen niet meer worden gedetecteerd.

StopContinuousDtmfRecognitionAsync

Stop met het detecteren van DTMF-tonen die door de deelnemer zijn verzonden.

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

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

Uw toepassing ontvangt gebeurtenisupdates wanneer deze acties slagen of mislukken. U kunt deze gebeurtenissen gebruiken om aangepaste bedrijfslogica te bouwen om de volgende stap te configureren die uw toepassing moet uitvoeren wanneer deze gebeurtenisupdates worden ontvangen.

ContinuousDtmfRecognitionToneReceived-gebeurtenis

Voorbeeld van hoe u een DTMF-toon kunt verwerken die is gedetecteerd.

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

Azure Communication Services biedt u een SequenceId onderdeel van het ContinuousDtmfRecognitionToneReceived evenement, dat uw toepassing kan gebruiken om de volgorde te reconstrueren waarin de deelnemer de DTMF-tonen heeft ingevoerd.

Gebeurtenis ContinuousDtmfRecognitionFailed

Voorbeeld van hoe u kunt omgaan met het detecteren van DTMF-toon.

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

ContinuousDtmfRecogntionStopped-gebeurtenis

Voorbeeld van het afhandelen wanneer continue DTMF-herkenning is gestopt, kan dit komen doordat de toepassing de StopContinuousDtmfRecognitionAsync gebeurtenis heeft aangeroepen of omdat de aanroep is beëindigd.

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