Řízení akcí médií uprostřed volání pomocí automatizace volání
Automatizace volání používá rozhraní REST API k příjmu požadavků na akce a poskytnutí odpovědí, které upozorňují, jestli byl požadavek úspěšně odeslán nebo ne. Vzhledem k asynchronní povaze volání má většina akcí odpovídající události, které se aktivují, když se akce úspěšně dokončí nebo selže. Tato příručka popisuje akce dostupné vývojářům během volání, jako je odesílání DTMF a průběžné rozpoznávání DTMF. Akce jsou doprovázeny ukázkovým kódem o tom, jak vyvolat zmíněné akce.
Automatizace volání podporuje různé další akce pro správu hovorů a nahrávání, které nejsou součástí této příručky.
Poznámka:
Automatizace hovorů v současné době nespolupracuje s Microsoft Teams. Akce, jako je provádění, přesměrování hovoru na uživatele Teams nebo přehrávání zvuku na uživatele Teams pomocí automatizace hovorů se nepodporuje.
Jako předpoklad doporučujeme přečíst si následující články, které vám povedou na maximum z tohoto průvodce:
- Průvodce koncepty automatizace volání, který popisuje programovací model akcí a zpětné volání událostí.
- Seznamte se s identifikátory uživatelů, jako jsou CommunicationUserIdentifier a Telefon NumberIdentifier používané v této příručce.
- Přečtěte si další informace o tom, jak řídit a řídit volání pomocí automatizace volání, která vás naučí o práci se základy práce s voláním.
Pro všechny ukázky kódu je CallAutomationClient objekt, client
který lze vytvořit, jak je znázorněno, a callConnection
jedná se o Call Připojení ion objekt získaný z odpovědi Answer nebo CreateCall odpovědi. Můžete ho také získat z událostí zpětného volání přijatých vaší aplikací.
var callAutomationClient = new CallAutomationClient("<Azure Communication Services connection string>");
Odeslat DTMF
Můžete posílat tóny DTMF externímu účastníkovi, což může být užitečné, když už jste na hovoru a potřebujete pozvat jiného účastníka, který má číslo linky nebo nabídku IVR pro navigaci.
Poznámka:
To se podporuje jenom u externích účastníků veřejné telefonní sítě a podporuje odesílání maximálně 18 tónů najednou.
SendDtmfAsync – metoda
Pošlete externímu účastníkovi seznam tónů DTMF.
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);
Když vaše aplikace odešle tyto tóny DTMF, obdržíte aktualizace událostí. Pomocí událostí a SendDtmfTonesFailed
událostí můžete SendDtmfTonesCompleted
ve své aplikaci vytvořit obchodní logiku a určit další kroky.
Příklad události SendDtmfTonesCompleted
if (acsEvent is SendDtmfTonesCompleted sendDtmfCompleted)
{
logger.LogInformation("Send DTMF succeeded, context={context}", sendDtmfCompleted.OperationContext);
}
Příklad SendDtmfTonesFailed
if (acsEvent is SendDtmfTonesFailed sendDtmfFailed)
{
logger.LogInformation("Send dtmf failed: result={result}, context={context}",
sendDtmfFailed.ResultInformation?.Message, sendDtmfFailed.OperationContext);
}
Průběžné rozpoznávání DTMF
Můžete se přihlásit k odběru nepřetržitých tónů DTMF během hovoru. Vaše aplikace obdrží tóny DTMF, protože cílový účastník stiskne na klávesu na klávesnici. Tyto tóny se posílají do aplikace jeden po druhém, protože je účastník stiskne.
StartContinuousDtmfRecognitionAsync – metoda
Začněte zjišťovat tóny DTMF odeslané účastníkem.
await callAutomationClient.GetCallConnection(callConnectionId)
.GetCallMedia()
.StartContinuousDtmfRecognitionAsync(new PhoneNumberIdentifier(c2Target), "dtmf-reco-on-c2");
Pokud už vaše aplikace nechce od účastníka přijímat tóny DTMF, můžete pomocí StopContinuousDtmfRecognitionAsync
této metody dát službě Azure Communication Services vědět, aby se zastavilo zjišťování tónů DTMF.
StopContinuousDtmfRecognitionAsync
Přestaňte zjišťovat tóny DTMF odeslané účastníkem.
var continuousDtmfRecognitionOptions = new ContinuousDtmfRecognitionOptions(new PhoneNumberIdentifier(callerPhonenumber))
{
OperationContext = "dtmf-reco-on-c2"
};
var startContinuousDtmfRecognitionAsyncResult = await callAutomationClient.GetCallConnection(callConnectionId)
.GetCallMedia()
.StartContinuousDtmfRecognitionAsync(continuousDtmfRecognitionOptions);
Když tyto akce proběhnou úspěšně nebo selžou, vaše aplikace obdrží aktualizace událostí. Tyto události můžete použít k vytvoření vlastní obchodní logiky pro konfiguraci dalšího kroku, který vaše aplikace potřebuje, když obdrží tyto aktualizace událostí.
Událost ContinuousDtmfRecognitionToneReceived
Příklad úspěšného zjištění tónu DTMF
if (acsEvent is ContinuousDtmfRecognitionToneReceived continuousDtmfRecognitionToneReceived)
{
logger.LogInformation("Tone detected: sequenceId={sequenceId}, tone={tone}",
continuousDtmfRecognitionToneReceived.SequenceId,
continuousDtmfRecognitionToneReceived.Tone);
}
Služba Azure Communication Services poskytuje SequenceId
v rámci ContinuousDtmfRecognitionToneReceived
události, kterou vaše aplikace může použít k rekonstrukci pořadí, ve kterém účastník vstoupil do tónů DTMF.
Událost ContinuousDtmfRecognitionFailed
Příklad, jak můžete zpracovat, když detekce tónu DTMF selže.
if (acsEvent is ContinuousDtmfRecognitionToneFailed continuousDtmfRecognitionToneFailed)
{
logger.LogInformation("Start continuous DTMF recognition failed, result={result}, context={context}",
continuousDtmfRecognitionToneFailed.ResultInformation?.Message,
continuousDtmfRecognitionToneFailed.OperationContext);
}
Událost ContinuousDtmfRecogntionStopped
Příklad, jak zpracovat, když je zastaveno průběžné rozpoznávání DTMF, může to být proto, že aplikace vyvolala StopContinuousDtmfRecognitionAsync
událost nebo protože volání skončilo.
if (acsEvent is ContinuousDtmfRecognitionStopped continuousDtmfRecognitionStopped)
{
logger.LogInformation("Continuous DTMF recognition stopped, context={context}", continuousDtmfRecognitionStopped.OperationContext);
}
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro