Panoramica dell'automazione delle chiamate
Automazione chiamate di Servizi di comunicazione di Azure offre agli sviluppatori la possibilità di creare flussi di lavoro di chiamate intelligenti, basati su server e registrazione di chiamata per canali voce e PSTN (Public Switched Telephone Network). Gli SDK, disponibili in C#, Java, JavaScript e Python, usano un modello di evento azione per creare interazioni personalizzate con i clienti. Le applicazioni di comunicazione possono ascoltare gli eventi di chiamata in tempo reale ed eseguire azioni del piano di controllo (ad esempio risposta, trasferimento, riproduzione audio, avvio registrazione e così via) per gestire e controllare le chiamate in base alla logica di business.
Casi d'uso comuni
Alcuni dei casi d'uso comuni che è possibile compilare usando Automazione chiamate:
- Programmare chiamate VoIP o PSTN per flussi di lavoro transazionali, ad esempio click-to-call e promemoria appuntamenti per migliorare il servizio clienti.
- Creare flussi di lavoro di interazione interattiva per i clienti self-service per casi d'uso come prenotazioni e aggiornamenti degli ordini, usando le azioni Play (URL audio, Sintesi vocale e SSML) e Recognize (DTMF e Voce).
- Integrare le applicazioni di comunicazione con i Contact center e le reti telefoniche private usando l'instradamento diretto.
- Proteggere l'identità del cliente creando servizi di mascheramento del numero per connettere gli acquirenti ai venditori o gli utenti ai fornitori partner sulla piattaforma.
- Aumentare l'engagement creando programmi automatizzati di contatto con i clienti per il marketing e il servizio clienti.
- Analizzare in un processo post-chiamata le registrazioni audio non mixate a scopo di controllo della qualità.
Usare Automazione chiamate di Servizi di comunicazione di Azure per creare flussi di lavoro di chiamata per scenari di servizio clienti, come illustrato nell'architettura di alto livello. È possibile rispondere alle chiamate in ingresso o effettuare chiamate in uscita. Eseguire azioni come la riproduzione di un messaggio di benvenuto, la connessione del cliente con un agente live in un'app client di SDK di chiamata di Servizi di comunicazione di Azure, che risponde alla richiesta di chiamata in arrivo. Con il supporto per PSTN o instradamento diretto di Servizi di comunicazione di Azure, è quindi possibile riconnettere questo flusso di lavoro al Contact Center.
Funzionalità
Le funzionalità seguenti sono attualmente disponibili negli SDK di automazione della chiamata di Servizi di comunicazione di Azure.
Area funzionalità | Funzionalità | .NET | Java | JavaScript | Python |
---|---|---|---|---|---|
Scenari prima della chiamata | Rispondere a una chiamata uno-a-uno | ✔️ | ✔️ | ✔️ | ✔️ |
Rispondere a una chiamata di gruppo | ✔️ | ✔️ | ✔️ | ✔️ | |
Inserire una nuova chiamata in uscita a uno o più endpoint | ✔️ | ✔️ | ✔️ | ✔️ | |
Reindirizzare* (inoltrare) una chiamata a uno o più endpoint | ✔️ | ✔️ | ✔️ | ✔️ | |
Rifiutare una chiamata in arrivo | ✔️ | ✔️ | ✔️ | ✔️ | |
Connettersi a una chiamata in corso o a una stanza (in anteprima) | ✔️ | ✔️ | ✔️ | ✔️ | |
Scenari durante la chiamata | Aggiungere uno o più endpoint a una chiamata esistente | ✔️ | ✔️ | ✔️ | ✔️ |
Annullare l'aggiunta di un endpoint a una chiamata esistente | ✔️ | ✔️ | ✔️ | ✔️ | |
Riprodurre audio da un file audio | ✔️ | ✔️ | ✔️ | ✔️ | |
Riprodurre audio con sintesi vocale | ✔️ | ✔️ | ✔️ | ✔️ | |
Riconoscere l'input dell'utente tramite DTMF | ✔️ | ✔️ | ✔️ | ✔️ | |
Riconoscere gli input vocali degli utenti | ✔️ | ✔️ | ✔️ | ✔️ | |
Avviare il riconoscimento DTMF continuo | ✔️ | ✔️ | ✔️ | ✔️ | |
Arrestare il riconoscimento DTMF continuo | ✔️ | ✔️ | ✔️ | ✔️ | |
Inviare DTMF | ✔️ | ✔️ | ✔️ | ✔️ | |
Disattivare l'audio del partecipante | ✔️ | ✔️ | ✔️ | ✔️ | |
Avviare/Arrestare lo streaming audio (anteprima pubblica) | ✔️ | ✔️ | ✔️ | ✔️ | |
Avvio/Arresto della trascrizione in tempo reale (anteprima pubblica) | ✔️ | ✔️ | ✔️ | ✔️ | |
Rimuovere uno o più endpoint da una chiamata esistente | ✔️ | ✔️ | ✔️ | ✔️ | |
Trasferimento cieco di una chiamata 1:1 a un altro endpoint | ✔️ | ✔️ | ✔️ | ✔️ | |
Trasferimento cieco di un partecipante dalla chiamata di gruppo a un altro endpoint | ✔️ | ✔️ | ✔️ | ✔️ | |
Interrompere una chiamata (rimuovere il tratto di chiamata) | ✔️ | ✔️ | ✔️ | ✔️ | |
Terminare una chiamata (rimuovere tutti i partecipanti e terminare la chiamata) | ✔️ | ✔️ | ✔️ | ✔️ | |
Annullare le operazioni multimediali | ✔️ | ✔️ | ✔️ | ✔️ | |
Condividere informazioni personalizzate (tramite intestazioni VOIP o SIP) con gli endpoint durante l'aggiunta a una chiamata o il trasferimento di una chiamata a tali endpoint | ✔️ | ✔️ | ✔️ | ✔️ | |
Scenari di query | Ottenere lo stato della chiamata | ✔️ | ✔️ | ✔️ | ✔️ |
Ottenere un partecipante a una chiamata | ✔️ | ✔️ | ✔️ | ✔️ | |
Elencare tutti i partecipanti a una chiamata | ✔️ | ✔️ | ✔️ | ✔️ | |
Registrazione Chiamata | Avviare/sospendere/riprendere/arrestare la registrazione | ✔️ | ✔️ | ✔️ | ✔️ |
*Il trasferimento o il reindirizzamento di una chiamata VoIP a un numero di telefono non è attualmente supportato.
Architettura
L'automazione delle chiamate usa un'interfaccia API REST per ricevere le richieste e fornire risposte a tutte le azioni eseguite all'interno del servizio. A causa della natura asincrona della chiamata, la maggior parte delle azioni ha eventi corrispondenti che vengono attivati quando l'azione viene completata correttamente o ha esito negativo.
Servizi di comunicazione di Azure usa Griglia di eventi per recapitare l'evento IncomingCall e i webhook HTTPS per tutti i callback delle azioni durante la chiamata.
Azioni di chiamata
Azioni prima della chiamata
Queste azioni vengono eseguite prima che l'endpoint di destinazione elencato nella notifica degli eventi IncomingCall
sia connesso. Gli eventi di callback webhook comunicano solo l'azione di pre-chiamata answer
, non per le azioni reject
o redirect
.
Rispondere: usando l'evento IncomingCall di Griglia di eventi e l'SDK di automazione della chiamata, l'applicazione può rispondere a una chiamata. Usare questa azione in scenari IVR in cui l'applicazione può rispondere in modo programmatico alle chiamate PSTN in ingresso. Altri scenari includono la risposta a una chiamata per conto di un utente.
Rifiutare: rifiutare una chiamata significa che l'applicazione può ricevere l'evento IncomingCall
e impedire che la chiamata venga connessa all'endpoint di destinazione.
Reindirizzare: usando l'evento IncomingCall
di Griglia di eventi, è possibile reindirizzare una chiamata a uno o più endpoint creando uno scenario con squillo simultaneo o singolo. L'azione di reindirizzamento non risponde alla chiamata. La chiamata viene reindirizzata o inoltrata a un altro endpoint di destinazione a cui rispondere.
Creare chiamata: usare l'azione di creazione chiamata per effettuare chiamate in uscita ai numeri di telefono e ad altri utenti di comunicazione. I casi d'uso includono l'applicazione che effettua chiamate in uscita per informare in modo proattivo gli utenti di un'interruzione o per notificare un aggiornamento dell'ordine.
Connettere a chiamata (in anteprima): usare l'azione di connessione a una chiamata per connettersi a una chiamata in corso ed eseguire azioni di chiamata su di essa. È anche possibile usare questa azione per connettersi e gestire una stanza di chiamata in modo programmatico, ad esempio eseguendo chiamate PSTN per stanze tramite il servizio.
Azioni durante la chiamata
L'applicazione può eseguire queste azioni sulle chiamate a cui viene risposto o che vengono effettuate tramite gli SDK di Automazione chiamate. Ogni azione durante la chiamata ha un evento di callback di web hook riuscito o non riuscito corrispondente.
Aggiungere/rimuovere partecipanti: è possibile aggiungere/rimuovere uno o più partecipanti in una singola richiesta, in cui ogni partecipante rappresenta una variante degli endpoint di destinazione supportati. Viene inviato un callback web hook per ogni partecipante aggiunto correttamente alla chiamata.
Riprodurre: quando l'applicazione risponde a una chiamata o effettua una chiamata in uscita, è possibile riprodurre una richiesta audio per il chiamante. Questo audio può essere eseguito in loop se necessario in scenari come la riproduzione di musica in attesa. Per altre informazioni, vedere Riproduzione di audio nelle chiamate e Personalizzazione delle richieste vocali agli utenti con l'azione Riproduci.
Riconoscere l'input: dopo che l'applicazione ha riprodotto una richiesta audio, è possibile richiedere l'input dell'utente per guidare la logica di lavoro e lo spostamento nell'applicazione. Per altre informazioni, vedere Raccolta di input utente e la guida pratica Raccogliere l'input dell'utente con l'azione Riconosci.
Riconoscimento DTMF continuo: quando l'applicazione deve essere in grado di ricevere toni DTMF in qualsiasi punto della chiamata senza che l'applicazione debba attivare un'azione di riconoscimento specifica. Ciò può essere utile negli scenari in cui un agente si trova in una chiamata e richiede all'utente di immettere un determinato tipo di ID o numero di monitoraggio. Per altre informazioni, vedere Come controllare le azioni multimediali durante la chiamata.
Invia DTMF: quando l'applicazione deve inviare toni DTMF a un partecipante esterno. Usare questa azione per la chiamata in uscita a un agente esterno e per fornire il numero di estensione o spostarsi in un menu IVR esterno.
Disattivare l'audio: l'applicazione può disattivare determinati utenti in base alla logica di lavoro. L'utente dovrà quindi riattivare l'audio manualmente se vuole parlare.
Trasferire: quando l'applicazione risponde a una chiamata o inserisce una chiamata in uscita a un endpoint, tale chiamata può essere trasferita a un altro endpoint di destinazione. Il trasferimento di una chiamata 1:1 rimuove la capacità dell'applicazione di controllare la chiamata usando gli SDK di automazione delle chiamate.
Registrare: si può decidere quando avviare/sospendere/riprendere/arrestare la registrazione in base alla logica di lavoro dell'applicazione oppure si può concedere all'utente finale il controllo per l'attivazione di tali azioni. Per altre informazioni, vedere i concetti e la guida introduttiva.
Riagganciare: quando l'applicazione ha risposto a una chiamata uno-a-uno, l'azione di riagganciare rimuove il tratto di chiamata e termina la chiamata con l'altro endpoint. Se sono presenti più di due partecipanti nella chiamata (chiamata di gruppo), l'esecuzione di un'azione "hang-up" rimuove l'endpoint dell'applicazione dalla chiamata di gruppo.
Terminare: se l'applicazione ha risposto a una chiamata uno-a-uno o a un gruppo, oppure se ha effettuato una chiamata in uscita con uno o più partecipanti, questa azione rimuove tutti i partecipanti e termina la chiamata. Questa operazione viene attivata impostando la proprietà forEveryOne
su true
nell'azione Riaggancia chiamata.
Annullare le operazioni multimediali: in base alla logica di business, è possibile che l'applicazione debba annullare le operazioni multimediali in corso e in coda. A seconda dell'operazione multimediale annullata e di quelle in coda, l'applicazione potrebbe ricevere un evento webhook che indica che l'azione è stata annullata.
Start/Stop audio streaming (anteprima pubblica): lo streaming audio consente di sottoscrivere flussi audio in tempo reale da una chiamata in corso. Per indicazioni più dettagliate su come iniziare a usare lo streaming audio e informazioni sugli eventi di callback di streaming audio, vedere il concetto e la guida introduttiva.
Avvio/Arresto della trascrizione in tempo reale (anteprima pubblica): la trascrizione in tempo reale consente di accedere alle trascrizioni in tempo reale per l'audio di una chiamata in corso. Per indicazioni più dettagliate su come iniziare a usare la trascrizione in tempo reale e informazioni sugli eventi di callback della trascrizione in tempo reale, vedere il concetto e la guida introduttiva.
Scenari di query
Elencare partecipanti: restituisce un elenco di tutti i partecipanti a una chiamata. I bot di registrazione e trascrizione vengono omessi da questo elenco.
Eventi
Nella tabella seguente vengono descritti gli eventi correnti generati da Servizi di comunicazione di Azure. Le due tabelle seguenti descrivono gli eventi generati da Griglia di eventi e dall'automazione delle chiamate come eventi webhook.
Eventi di Griglia di eventi
La maggior parte degli eventi inviati da Griglia di eventi è indipendente dalla piattaforma. Questi eventi vengono inviati indipendentemente dall'SDK (Chiamata o Automazione chiamate). Anche se è possibile creare una sottoscrizione per qualsiasi evento, è consigliabile usare l'evento IncomingCall
per tutti i casi d'uso di automazione della chiamata in cui si vuole controllare la chiamata a livello di codice. Usare gli altri eventi a scopo di creazione di report/telemetria.
Evento | Descrizione |
---|---|
IncomingCall |
Notifica di una chiamata a un utente di comunicazione o a un numero di telefono. |
CallStarted |
Chiamata stabilita (in ingresso o in uscita). |
CallEnded |
Chiamata terminata e rimozione di tutti i partecipanti. |
ParticipantAdded |
Aggiunta di un partecipante a una chiamata. |
ParticipantRemoved |
Rimozione di un partecipante da una chiamata. |
RecordingFileStatusUpdated |
È disponibile un file di registrazione. |
Altre informazioni su questi eventi e sullo schema del payload sono disponibili in Servizi di comunicazione di Azure - Eventi di chiamate vocali e video
Chiamare eventi webhook di automazione
Gli eventi di automazione della chiamata vengono inviati all'URI di callback web hook specificato quando si risponde o si inserisce una nuova chiamata in uscita.
Evento | Descrizione |
---|---|
CallConnected |
La chiamata è stata avviata correttamente (quando si usa un'azione Answer o Create ) o l'applicazione è stata connessa a una chiamata in corso (quando si usa un'azione Connect ). |
CallDisconnected |
L'applicazione è stata disconnessa dalla chiamata. |
CreateCallFailed |
L'applicazione non è riuscita a creare la chiamata. |
ConnectFailed |
L'applicazione non è riuscita a connettersi a una chiamata (solo per l'azione Connect di chiamata). |
CallTransferAccepted |
L'azione di trasferimento è stata completata e il trasferimento è connesso al partecipante di destinazione. |
CallTransferFailed |
L'azione di trasferimento non è riuscita. |
AddParticipantSucceeded |
L'applicazione ha aggiunto correttamente un partecipante alla chiamata. |
AddParticipantFailed |
L'applicazione non è riuscita ad aggiungere un partecipante alla chiamata (a causa di un errore o il partecipante non ha accettato l'invito) |
CancelAddParticipantSucceeded |
L'applicazione ha annullato correttamente una richiesta AddParticipant (il partecipante non è stato aggiunto alla chiamata). |
CancelAddParticipantFailed |
L'applicazione non è stata in grado di annullare una richiesta AddParticipant (ciò potrebbe essere dovuto al fatto che la richiesta è già stata elaborata). |
RemoveParticipantSucceeded |
L'applicazione ha rimosso correttamente un partecipante dalla chiamata. |
RemoveParticipantFailed |
L'applicazione non è riuscita a rimuovere un partecipante dalla chiamata. |
ParticipantsUpdated |
Lo stato di un partecipante è cambiato mentre l'applicazione era connessa a una chiamata. |
PlayCompleted |
L'applicazione ha riprodotto correttamente il file audio fornito. |
PlayFailed |
L'applicazione non è riuscita a riprodurre l'audio. |
PlayCanceled |
L'azione di riproduzione richiesta è stata annullata. |
RecognizeCompleted |
Il riconoscimento dell'input dell'utente è stato completato correttamente. |
RecognizeCanceled |
L'azione richiesta Recognize è stata annullata. |
RecognizeFailed |
Il riconoscimento dell'input dell'utente non è riuscito. Per altre informazioni sugli eventi dell'azione di riconoscimento, vedere la guida pratica per la raccolta di input utente. |
RecordingStateChanged |
Lo stato dell'azione di registrazione è cambiato da attivo a inattivo o viceversa. |
ContinuousDtmfRecognitionToneReceived |
L'evento StartContinuousDtmfRecognition è stato completato correttamente e un tono DTMF è stato ricevuto dal partecipante. |
ContinuousDtmfRecognitionToneFailed |
L'evento StartContinuousDtmfRecognition è stato completato ma si è verificato un errore durante la gestione di un tono DTMF dal partecipante. |
ContinuousDtmfRecognitionStopped |
L'esecuzione di StopContinuousRecognition è stata completata. |
SendDtmfCompleted |
L'esecuzione di SendDTMF è stata completata e i toni DTMF sono stati inviati al partecipante di destinazione. |
SendDtmfFailed |
Si è verificato un errore durante l'invio dei toni DTMF. |
Per informazioni sugli eventi pubblicati per azioni diverse, vedere Azioni per il controllo delle chiamate. L'articolo fornisce esempi di codice e diagrammi di sequenza per vari flussi di controllo delle chiamate.
Quando si riconoscono gli eventi di callback, è consigliabile rispondere con codici di stato HTTP standard come 200 OK. Le informazioni dettagliate non sono necessarie e sono più adatte per i processi di debug.
Per informazioni su come proteggere il recapito degli eventi di callback, vedere Come proteggere l'endpoint del webhook.
URI di callback dell'operazione
L'URI di callback operazione è un parametro facoltativo in alcune API durante la chiamata che usano eventi come risposte asincrone. Per impostazione predefinita, tutti gli eventi vengono inviati all'URI di callback predefinito impostato dagli eventi API CreateCall
/ AnswerCall
quando l'utente stabilisce una chiamata. Usando l'URI di callback dell'operazione, l'API invia gli eventi corrispondenti per questa singola richiesta (una tantum) al nuovo URI.
API supportata | Evento corrispondente |
---|---|
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 |
Passaggi successivi
Articoli correlati
- Informazioni su come viene addebitato il costo della risorsa per vari casi d'uso delle chiamate con esempi.
- Vedere la guida introduttiva per effettuare una chiamata in uscita.
- Informazioni sull'utilizzo e sui log operativi pubblicati dall'automazione delle chiamate.