Il DTMF è il suono di un tasto del telefono. Ogni tasto emette due toni nello stesso momento, uno da un gruppo basso e uno da un gruppo alto, e il sistema dall’altra parte decodifica la coppia come una cifra. Il nome dice proprio questo: dual-tone multi-frequency, multifrequenza a doppio tono. Bell lo ha lanciato come Touch-Tone nel 1963 e la Raccomandazione ITU-T Q.23 ne definisce ancora le frequenze.
Più di sessant’anni dopo, il DTMF è il modo in cui chi chiama inserisce numeri di conto, salta i menu e digita i PIN, e in cui il software naviga gli alberi telefonici di altro software. È anche una fonte abituale di ticket del tipo “ieri le cifre funzionavano”, perché in una chiamata VoIP i toni possono viaggiare in tre modi diversi. Questa guida copre i toni, i tre trasporti, perché si perdono le cifre e cosa cambia quando a rispondere o a comporre è un agente vocale IA. È scritta per ingegneri e team di contact center che gestiscono un flusso telefonico.
(Cercavi “DtMF” di Bad Bunny? È una canzone di DeBÍ TiRAR MáS FOToS. Pagina sbagliata, ottimo disco.)
Frequenze DTMF
La tastiera è una griglia quattro per quattro. Ogni riga ha una frequenza bassa, ogni colonna una alta, e un tasto suona la sua riga e la sua colonna insieme.
| 1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz | |
|---|---|---|---|---|
| 697 Hz | 1 | 2 | 3 | A |
| 770 Hz | 4 | 5 | 6 | B |
| 852 Hz | 7 | 8 | 9 | C |
| 941 Hz | * | 0 | # | D |
Il 5 suona 770 Hz e 1336 Hz. Il # suona 941 Hz e 1477 Hz. La quarta colonna, dalla A alla D, si usava su apparati militari e di rete e quasi non compare sui telefoni di consumo, quindi in pratica gestirai dodici tasti: da 0 a 9, asterisco e cancelletto.
L’idea furba è usare due toni invece di uno. La voce e la musica raramente concentrano energia proprio su una frequenza bassa e una alta di questi insiemi nello stesso istante, quindi un decodificatore distingue un tasto da una voce. Lo standard fissa anche limiti di durata e di differenza di volume tra i due toni, e questo rende rare le false rilevazioni anche quando qualcuno parla sulla linea.
Come viaggia il DTMF in una chiamata moderna
Su una linea in rame, il DTMF era solo audio sul filo. In una chiamata IP ci sono tre opzioni, e le due estremità devono accordarsi su una.
| Metodo | Come viaggia la cifra | Dove si rompe |
|---|---|---|
| Audio in banda | I toni sono mescolati all’audio della chiamata come qualsiasi altro suono | I codec compressi e la perdita di pacchetti deformano i toni; il decodificatore perde o raddoppia le cifre |
| Eventi RTP (RFC 4733 / 2833) | Un pacchetto telephone-event nel flusso RTP indica la cifra e la sua durata | Un lato invia eventi e l’altro ascolta solo l’audio |
| SIP INFO | Un messaggio SIP INFO sul percorso di segnalazione porta la cifra, fuori dall’audio | Proxy e operatori che non inoltrano INFO, e una temporizzazione che si sfasa rispetto all’audio |
RFC 4733 ha sostituito RFC 2833 nel 2006, ma molte impostazioni di PBX e operatori riportano ancora “RFC 2833”. È la stessa opzione. La RFC spiega in una frase perché esiste: i codec vocali a basso bitrate “non possono garantire di riprodurre questi toni con la precisione necessaria al riconoscimento automatico”. G.711, il codec a 8 kHz della maggior parte delle chiamate, trasporta bene i toni. I codec a basso bitrate come G.729 spesso no.
Gli eventi RTP sono la scelta sicura predefinita. Sopravvivono a qualsiasi codec, portano la cifra esatta invece di un suono da decodificare, e la maggior parte di operatori e piattaforme li supporta. Lo stack telefonico di LiveKit, per esempio, invia il DTMF come eventi telephone-event/8000.
Perché si perdono le cifre DTMF
Quando i tasti non funzionano in una chiamata VoIP, la causa di solito è una di queste:
- Metodi non allineati. L’operatore invia eventi RFC 4733 e il sistema dall’altra parte decodifica solo l’audio in banda, o viceversa. Controlla la modalità DTMF nell’offerta e nella risposta SDP di entrambe le tratte della chiamata.
- Audio compresso. Una tratta che transcodifica verso un codec a basso bitrate rovina i toni in banda. Passa quella tratta agli eventi RTP o tienila su G.711.
- Cifre doppie. Un gateway invia il tono sia come audio sia come evento, e il ricevitore li conta entrambi. “1234” arriva come “11223344”.
- Un flusso media che ascolta soltanto. Alcune API di streaming inoltrano i tasti solo in certe modalità. Twilio Media Streams, per esempio, invia un messaggio
dtmfsolo sui flussi bidirezionali. - Timeout. Chi chiama fa una pausa tra una cifra e l’altra e il sistema invia un inserimento parziale. Il
<Gather>di Twilio attende 5 secondi per impostazione predefinita e invia con#. Chiedi a chi chiama di premere cancelletto alla fine e imposta il numero di cifre quando lo conosci.
La prova più veloce è un telefono vero sull’operatore vero. Chiama, premi ogni tasto e digita un numero con cifre ripetute. I softphone nel browser e i client SIP di test spesso negoziano un metodo diverso da quello di un cellulare sulla rete pubblica.
DTMF e agenti vocali IA
Gli agenti vocali stanno sostituendo molti menu “premi 1 per la fatturazione”, ma le tastiere non spariranno. Un agente gestisce il DTMF in due direzioni: chi chiama preme tasti verso l’agente, e l’agente preme tasti verso il sistema di qualcun altro.
Ricevere i tasti da chi chiama
Alcune persone preferiscono digitare invece di parlare, e alcuni numeri si digitano più facilmente di quanto si dicano. Un numero di conto di 16 cifre letto ad alta voce su una linea rumorosa è un test di riconoscimento vocale; lo stesso numero sulla tastiera sono sedici pressioni senza ambiguità. Un buon agente accetta entrambe le cose nella stessa conversazione, senza menu.
Alcune regole fanno funzionare l’input da tastiera con un agente:
- Aspetta l’inserimento completo. Chi chiama digita un codice cliente tutto d’un fiato. Se l’agente risponde dopo la prima cifra, parla sopra il resto. Cartesia Managed Agents raccoglie le cifre finché chi chiama non fa una pausa, poi passa l’inserimento al modello come un unico turno da tastiera, etichettato in modo che il modello sappia che è stato digitato e non detto.
- Lascia che un tasto interrompa. Chi inizia a digitare a metà frase vuole che l’agente smetta di parlare. Su Managed Agents, un tasto interrompe la risposta dell’agente come la voce.
- Tieni i segreti lontani dal modello. Non raccogliere numeri di carta o PIN completi tramite l’agente. Trasferisci a una linea di pagamento che resti nel tuo perimetro PCI e restituisci solo un token o un esito. La guida per le banche approfondisce il punto.
- Di’ cosa premere. “Digiti il codice cliente e poi cancelletto” funziona meglio di “Mi indichi il codice cliente”, perché chi chiama sa che esistono entrambe le opzioni.
Su Managed Agents, i tasti arrivano all’agente nelle chiamate tramite Twilio e tramite il WebSocket dell’agente. Se colleghi un tuo client al WebSocket, inoltra ogni tasto come evento dtmf_input:
{ "type": "dtmf_input", "digit": "5" }
Le cifre valide sono da 0 a 9, * e #. Su qualsiasi altro percorso telefonico, trunk SIP compreso, fai una chiamata di prova e verifica che l’agente senta i tasti prima di costruire un flusso che ne dipende.
Inviare toni per navigare un altro menu telefonico
L’altra direzione è l’agente che preme i tasti. Gli agenti in uscita che chiamano assicurazioni, farmacie o fornitori passano il primo minuto di ogni chiamata nell’IVR di qualcun altro. SuperDial, che gestisce con Cartesia le chiamate agli enti pagatori per conto di strutture sanitarie, ha integrato la navigazione IVR nei suoi agenti proprio per questo.
Su Managed Agents, attiva lo strumento di sistema send_dtmf (Send keypad tones nella pagina Tools del Playground). L’agente potrà inviare uno o più toni, come 12#, quando un menu li chiede.
{
"config": {
"system_tools": {
"send_dtmf": {}
}
}
}
I menu telefonici sono pensati per esseri umani pazienti, quindi spiega all’agente come comportarsi:
- Ascolta tutto il messaggio prima di premere. Molti menu ignorano l’input finché il messaggio non è finito, e l’opzione che cerchi spesso è l’ultima.
- Metti i percorsi noti nel prompt. “Per Acme Health, premi 2, poi 4, poi inserisci l’NPI del medico seguito da cancelletto.” Le variabili dinamiche possono compilare gli identificativi per ogni chiamata.
- Non parlare mentre navighi. La voce sulla linea può confondere un menu che ascolta toni o parlato. Lo strumento invia i toni senza che l’agente li commenti.
- Preparati all’operatore. Quando risponde una persona, l’agente deve passare dalla modalità menu alla conversazione. Scrivi questo passaggio nel prompt.
Per verificare che tutto funzioni, esegui gli stessi scenari che useresti per qualsiasi flusso telefonico. La guida ai test IVR copre i percorsi da tastiera con script e come valutare un agente sul risultato.
Dove si inserisce Cartesia
Cartesia sviluppa i modelli vocali su cui girano gli agenti: Sonic per la sintesi vocale e Ink per la trascrizione. Managed Agents li riunisce in un agente ospitato che risponde alle chiamate su numeri Cartesia, Twilio o sul tuo trunk SIP, con send_dtmf e trasferimenti integrati. Le chiamate dell’agente costano 0,06 $ al minuto, e puoi crearne uno nel playground e chiamarlo dal tuo telefono.
Se ti serve solo un menu fisso da tastiera, un CPaaS come Twilio o il tuo PBX lo fanno già bene. Un agente conviene quando chi chiama alterna voce e tastiera, o quando le tue chiamate devono superare il menu di qualcun altro.