Messaggi SpeechCall
SpeechCall è un tipo di messaggio di risposta vocale interattiva (IVR) che consente di effettuare chiamate vocali automatizzate con opzioni di menu e interazioni DTMF (multifrequenza a doppio tono).
Panoramica
SpeechCall consente alle aziende di:
- Effettua chiamate vocali automatizzate ai clienti
- Riproduci messaggi audio introduttivi
- Presenti opzioni di menu interattive
- Gestire le risposte alla pressione dei tasti DTMF (0-9, *, #)
- Definire il comportamento personalizzato per input non validi/timeout
- Attiva webhook con corpi e intestazioni personalizzati in base alle selezioni dell’utente
- Gestire il flusso delle chiamate in modo dinamico (navigare tra i menu)
Casi d’uso
- Sondaggi sui clienti: raccogli feedback tramite le opzioni del menu del telefono
- Promemoria appuntamenti - Conferma o riprogramma con l’interazione vocale
- Tracciamento dell’ordine - Fornisci aggiornamenti sullo stato dell’ordine
- Notifiche interattive - Fornisci informazioni importanti con opzioni di azione
- Verifica vocale - Autenticazione a più fattori tramite chiamate vocali
Richiedi formato
Struttura di base
{
"messages": [
{
"from": "YourSender",
"to": "+380XXXXXXXXX",
"text": "ivr",
"type": "speechcall",
"menu": [
{
"introUrl": "ivr_XXXXX",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "https://YourWebhookURL/0",
"body": {
"confirm": true
},
"headers": {
"test-header": "test"
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "https://YourWebhookURL/1",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "gotoMenu",
"menu": "1"
}
]
}
}
]
}
]
}
Descrizione dei parametri
| Parametro | Digitare | Obbligatorio | Descrizione |
|---|---|---|---|
| ”da” | stringa | Sì | Identificatore del mittente (nome alfabetico o ID) |
| “a” | stringa | Sì | Numero di telefono del destinatario in formato internazionale |
| ”testo” | stringa | Sì | Valore di testo, in genere “ivr” per SpeechCall |
| ”tipo” | stringa | Sì | Deve essere "chiamata vocale" |
menù | matrice | Sì | Serie di configurazioni di menu per la chiamata |
Configurazione del menu
Ogni oggetto del menu contiene:
| Parametro | Digitare | Obbligatorio | Descrizione |
|---|---|---|---|
introUrl | stringa | Sì | URL o identificatore del file audio introduttivo |
idleTimeoutMsec | intero | No | Timeout in millisecondi per attendere la pressione di un tasto (ad esempio, 10000). Se l’utente non risponde, verranno eseguite le azioni configurate con la chiave sbagliata |
dtmfActions | oggetto | Sì | Mappa dei tasti DTMF per le azioni |
Azioni DTMF
L’oggetto dtmfActions mappa le chiavi DTMF o le condizioni speciali su array di azioni:
| Tasto DTMF | Descrizione |
|---|---|
d0 | Premere 0 |
d1 | Premere 1 |
d2 | Premere 2 |
| … | … |
d9 | Premere 9 |
d* | Premere * |
d# | Premere # |
sbagliato | Si attiva quando viene premuto un tasto non valido o quando viene raggiunto idleTimeoutMsec senza alcun input |
Ciascun tasto/condizione DTMF è associato a una serie di azioni che verranno eseguite in sequenza.
Azioni supportate
| Azione | Parametri | Descrizione |
|---|---|---|
| ”webhook” | url (stringa, obbligatorio)body (oggetto, opzionale)headers (oggetto, opzionale) | Invia una richiesta HTTP POST in formato JSON all’URL specificato. L’oggetto “body” verrà nidificato nel campo “action” nella richiesta del webhook. Le intestazioni personalizzate sono incluse come intestazioni HTTP. |
| ”riagganciare” | Nessuno | Termina la chiamata |
vai al Menu | menu (stringa o intero) | Sposta la chiamata a un altro menu nell’array menu utilizzando il suo indice basato su 0 (ad esempio, "1") |
Comportamento dettagliato dell’azione
Azione webhook (webhook)
L’azione “webhook” invia una richiesta HTTP POST al tuo URL di richiamata con i metadati della chiamata e dati personalizzati facoltativi:
- Se viene fornito un “corpo”, le sue coppie chiave-valore vengono inviate all’interno del campo “azione” del corpo del payload.
- Se vengono fornite “intestazioni”, vengono inviate come intestazioni HTTP personalizzate nella richiesta.
Azione di riaggancio (riaggancia)
L’azione “riaggancia” termina immediatamente la chiamata attiva. Nessuna ulteriore azione nella sequenza o nei menu verrà elaborata dopo un’azione di “riaggancia”.
Vai all’azione del menu (gotoMenu)
L’azione “gotoMenu” reindirizza il flusso della chiamata a una struttura di menu diversa all’interno dell’array “menu”. Richiede un singolo parametro menu che specifica l’indice basato su 0 del menu di destinazione (ad esempio, "1" per andare al secondo menu o "0" per riavviare il primo menu).
Inattività e gestione degli errori (sbagliato)
La chiave “sbagliata” all’interno di “dtmfActions” è uno speciale gestore di fallthrough. Esegue la sequenza di serie di azioni in due scenari:
- Input non valido: il chiamante preme un tasto DTMF che non è definito in “dtmfActions” (ad esempio, preme “3” ma il menu definisce solo “d1” e “d2”).
- Idle Timeout: il chiamante non preme alcun tasto entro la durata specificata da
idleTimeoutMsec.
Se “sbagliato” non è definito e il chiamante preme un tasto non valido o va in timeout, il flusso della chiamata verrà interrotto per impostazione predefinita. La definizione di “sbagliato” consente di creare menu in loop (ad esempio, tornando allo stesso menu con “action”: “gotoMenu”, “menu”: “0”`) o reindirizzando l’utente a un menu di aiuto.
Formato di consegna del webhook
Quando viene attivata l’azione “webhook”, il sistema invia una richiesta HTTP POST all‘“url” configurato con “Content-Type: application/json”.
Intestazioni delle richieste webhook
Se l’azione è configurata con il parametro “headers”, tali coppie chiave-valore vengono incluse come intestazioni HTTP nella richiesta.
Corpo della richiesta webhook
Il payload JSON inviato all’URL del webhook ha la seguente struttura:
{
"from": "0443914272",
"to": "50001",
"mid": "7748021",
"action": {
"confirm": true
}
}
| Campo | Digitare | Descrizione |
|---|---|---|
| ”da” | stringa | Numero di telefono del chiamante/ID mittente |
| ”a” | stringa | Numero di telefono del destinatario |
mezzo | stringa | ID messaggio |
azione | oggetto | L’oggetto JSON personalizzato definito nel campo “corpo” dell’azione |
Esempio completo
IVR semplice con timeout e convalida dell’input
CODICE_BLOCCO_2
IVR complesso con menu multipli e routing DTMF
Questo esempio dimostra come definire più menu e navigare tra di essi utilizzando l’azione “gotoMenu” quando l’utente immette una chiave non valida o quando la chiamata scade. Mostra anche corpi personalizzati e intestazioni HTTP personalizzate inviate con i trigger webhook.
{
"messages": [
{
"from": "YourSender",
"to": "+380XXXXXXXXX",
"text": "ivr",
"type": "speechcall",
"menu": [
{
"introUrl": "ivr_XXXXX",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "https://YourWebhookURL/0",
"body": {
"confirm": true
},
"headers": {
"test-header": "test"
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "https://YourWebhookURL/1",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "gotoMenu",
"menu": "1"
}
]
}
},
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "https://YourWebhookURL/0",
"body": {
"confirm": true
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "https://YourWebhookURL/1",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "hangup"
}
]
}
}
]
}
]
}
Formato della risposta
Risposta riuscita
{
"messages": [
{
"messageId": "unique-message-id",
"recipient": "+380XXXXXXXXX",
"status": "sent"
}
]
}
Gestione degli errori
| Stato HTTP | Descrizione |
|---|---|
| 200 | Richiesta riuscita |
| 400 | Formato richiesta non valido |
| 401 | Autenticazione non riuscita |
| 429 | Limite tariffario superato |
| 500 | Errore interno del server |
Esempio di cURL
CODICE_BLOCCO_5
Migliori pratiche
- File audio: assicurati che gli URL introduttivi siano accessibili e che i file audio siano nei formati supportati
- Affidabilità del webhook: progetta i webhook per rispondere rapidamente (entro 2 secondi)
- Opzioni DTMF: limita le opzioni del menu a 4-6 scelte per una migliore esperienza utente
- Gestione del timeout - Utilizza
idleTimeoutMsecper specificare limiti di inattività personalizzati (ad esempio 10000 ms) e configura un fallback corretto sotto la chiave DTMF “sbagliata” (come ripetere il menu o riagganciare) - Flusso chiamate multi-menu: utilizzare “gotoMenu” con attenzione per evitare loop infiniti quando si reindirizzano gli utenti ai menu precedenti
- Strategia di fallback: utilizza messaggi di fallback per gli utenti che non rispondono o non si disconnettono
Argomenti correlati
- Invia messaggio - Guida generale all’invio di messaggi
- Chiamata Flash - Semplici chiamate di verifica vocale
- Verifica stato - Tieni traccia dello stato di consegna dei messaggi
- Tipi di messaggio - Panoramica di tutti i tipi di messaggio supportati