DTMF es el sonido de pulsar una tecla del teléfono. Cada tecla reproduce dos tonos a la vez, uno de un grupo grave y otro de un grupo agudo, y el sistema del otro lado decodifica el par como un dígito. El nombre lo dice tal cual: multifrecuencia de doble tono (dual-tone multi-frequency). Bell lo lanzó como Touch-Tone en 1963, y la Recomendación UIT-T Q.23 todavía define las frecuencias.
Más de sesenta años después, DTMF es cómo quien llama introduce números de cuenta, se salta menús y teclea PIN, y cómo el software navega los árboles telefónicos de otro software. También es una fuente habitual de tickets del tipo “ayer los dígitos funcionaban”, porque en una llamada VoIP los tonos pueden viajar de tres maneras distintas. Esta guía cubre los tonos, los tres transportes, por qué se pierden dígitos y qué cambia cuando quien contesta o marca es un agente de voz con IA. Está escrita para ingenieros y equipos de contact center que gestionan un flujo telefónico.
(¿Buscabas “DtMF” de Bad Bunny? Es una canción de DeBÍ TiRAR MáS FOToS. Página equivocada, gran disco.)
Frecuencias DTMF
El teclado es una cuadrícula de cuatro por cuatro. Cada fila tiene una frecuencia grave, cada columna una aguda, y una tecla reproduce su fila y su columna a la vez.
| 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 |
Al pulsar el 5 suenan 770 Hz y 1336 Hz. Al pulsar # suenan 941 Hz y 1477 Hz. La cuarta columna, de la A a la D, se usaba en equipos militares y de red y casi nunca aparece en un teléfono de consumo, así que en la práctica manejarás doce teclas: del 0 al 9, asterisco y almohadilla.
Lo ingenioso es usar dos tonos en vez de uno. La voz humana y la música rara vez concentran energía justo en una frecuencia grave y una aguda de estos conjuntos al mismo tiempo, así que un decodificador distingue una pulsación de una voz. La norma también fija límites de duración y de diferencia de volumen entre los dos tonos, lo que mantiene raras las detecciones falsas incluso cuando alguien habla por la línea.
Cómo viaja DTMF en una llamada moderna
En una línea de cobre, DTMF era simplemente audio en el cable. En una llamada IP hay tres opciones, y los dos extremos tienen que ponerse de acuerdo en una.
| Método | Cómo viaja el dígito | Dónde falla |
|---|---|---|
| Audio en banda | Los tonos se mezclan con el audio de la llamada como cualquier otro sonido | Los códecs comprimidos y la pérdida de paquetes deforman los tonos; el decodificador pierde o duplica dígitos |
| Eventos RTP (RFC 4733 / 2833) | Un paquete telephone-event en el flujo RTP indica el dígito y su duración | Un lado envía eventos y el otro solo escucha audio |
| SIP INFO | Un mensaje SIP INFO en la ruta de señalización lleva el dígito, fuera del audio | Proxies y operadores que no dejan pasar INFO, y una sincronización que se desvía del audio |
RFC 4733 sustituyó a RFC 2833 en 2006, pero muchas configuraciones de PBX y de operadores siguen diciendo “RFC 2833”. Significan la misma opción. La RFC explica en una frase por qué existe: los códecs de voz de baja tasa “no pueden garantizar que reproduzcan estas señales de tono con la precisión suficiente para el reconocimiento automático”. G.711, el códec de 8 kHz que usa la mayoría de las llamadas, transporta bien los tonos. Los códecs de baja tasa como G.729 a menudo no.
Los eventos RTP son la opción segura por defecto. Sobreviven a cualquier códec, llevan el dígito exacto en lugar de un sonido que hay que decodificar, y la mayoría de los operadores y plataformas los admiten. La pila de telefonía de LiveKit, por ejemplo, envía DTMF como eventos telephone-event/8000.
Por qué se pierden los dígitos DTMF
Cuando las pulsaciones fallan en una llamada VoIP, la causa suele ser una de estas:
- Métodos que no coinciden. El operador envía eventos RFC 4733 y el sistema del otro lado solo decodifica audio en banda, o al revés. Revisa el modo DTMF en la oferta y la respuesta SDP de los dos tramos de la llamada.
- Audio comprimido. Un tramo que transcodifica a un códec de baja tasa estropea los tonos en banda. Pasa ese tramo a eventos RTP o mantenlo en G.711.
- Dígitos duplicados. Una pasarela envía el tono como audio y como evento, y el receptor cuenta ambos. “1234” llega como “11223344”.
- Un flujo de medios que solo escucha. Algunas API de streaming solo reenvían pulsaciones en ciertos modos. Twilio Media Streams, por ejemplo, envía un mensaje
dtmfsolo en flujos bidireccionales. - Tiempos de espera. Quien llama hace una pausa entre dígitos y el sistema envía una entrada incompleta. El
<Gather>de Twilio espera 5 segundos por defecto y envía al pulsar#. Pide a quien llama que pulse almohadilla al terminar y fija el número de dígitos cuando lo conozcas.
La prueba más rápida es un teléfono real con el operador real. Llama, pulsa todas las teclas y marca un número con dígitos repetidos. Los softphones del navegador y los clientes SIP de prueba suelen negociar un método distinto al de un móvil en la red pública.
DTMF y los agentes de voz con IA
Los agentes de voz están sustituyendo muchos menús de “pulse 1 para facturación”, pero los teclados no van a desaparecer. Un agente trata con DTMF en dos direcciones: quien llama pulsa teclas para el agente, y el agente pulsa teclas en el sistema de otro.
Recibir pulsaciones de quien llama
Hay quien prefiere teclear a hablar, y hay números más fáciles de teclear que de decir. Un número de cuenta de 16 dígitos dicho en voz alta en una línea con ruido es una prueba de reconocimiento de voz; el mismo número en el teclado son dieciséis pulsaciones sin ambigüedad. Un buen agente acepta ambas cosas en la misma conversación, sin menú.
Algunas reglas hacen que la entrada por teclado funcione con un agente:
- Espera a la entrada completa. Quien llama teclea un número de socio de corrido. Si el agente responde tras el primer dígito, habla encima del resto. Cartesia Managed Agents reúne los dígitos hasta que quien llama hace una pausa y pasa la entrada al modelo como un solo turno de teclado, etiquetado para que el modelo sepa que se tecleó y no se dijo.
- Deja que una pulsación interrumpa. Si quien llama empieza a teclear a mitad de frase, quiere que el agente deje de hablar. En Managed Agents, una pulsación corta la respuesta del agente igual que la voz.
- Mantén los secretos lejos del modelo. No recojas números de tarjeta ni PIN completos a través del agente. Transfiere a una línea de pago que se quede dentro de tu alcance PCI y devuelve solo un token o un resultado. La guía de banca lo explica con más detalle.
- Di qué hay que pulsar. “Teclee su número de socio y pulse almohadilla” funciona mejor que “Indique su número de socio”, porque quien llama sabe que existen las dos opciones.
En Managed Agents, las pulsaciones llegan al agente en las llamadas por Twilio y por el WebSocket del agente. Si conectas tu propio cliente al WebSocket, reenvía cada pulsación como un evento dtmf_input:
{ "type": "dtmf_input", "digit": "5" }
Los dígitos válidos son del 0 al 9, * y #. En cualquier otra ruta de telefonía, incluido un trunk SIP, haz una llamada de prueba y confirma que el agente oye las pulsaciones antes de construir un flujo que dependa de ellas.
Enviar tonos para navegar otro menú telefónico
La otra dirección es el agente pulsando teclas. Los agentes salientes que llaman a aseguradoras, farmacias o proveedores pasan el primer minuto de cada llamada en el IVR de otro. SuperDial, que gestiona llamadas a aseguradoras para organizaciones sanitarias con Cartesia, incorporó la navegación de IVR a sus agentes justo por eso.
En Managed Agents, activa la herramienta de sistema send_dtmf (Send keypad tones en la página Tools del Playground). El agente podrá enviar uno o varios tonos, como 12#, cuando un menú los pida.
{
"config": {
"system_tools": {
"send_dtmf": {}
}
}
}
Los menús telefónicos están pensados para humanos pacientes, así que dile al agente cómo comportarse en ellos:
- Escucha el aviso completo antes de pulsar. Muchos menús ignoran la entrada hasta que termina el aviso, y la opción que buscas suele ser la última.
- Pon las rutas conocidas en el prompt. “En Acme Health, pulsa 2, luego 4, y después introduce el NPI del proveedor seguido de almohadilla.” Las variables dinámicas pueden rellenar los identificadores en cada llamada.
- No hables mientras navegas. La voz en la línea puede confundir a un menú que escucha tonos o voz. La herramienta envía los tonos sin que el agente los narre.
- Prepárate para la persona. Cuando contesta un representante, el agente tiene que pasar del modo menú a la conversación. Escribe esa transición en el prompt.
Para comprobar que todo funciona, ejecuta los mismos escenarios que usarías para cualquier flujo telefónico. La guía de pruebas de IVR cubre las rutas de teclado con guion y cómo evaluar a un agente por el resultado.
Dónde encaja Cartesia
Cartesia desarrolla los modelos de voz sobre los que funcionan los agentes: Sonic para texto a voz e Ink para voz a texto. Managed Agents los reúne en un agente alojado que contesta llamadas en números de Cartesia, Twilio o tu propio trunk SIP, con send_dtmf y transferencias integradas. Las llamadas de agente cuestan 0,06 $ por minuto, y puedes crear uno en el playground y llamarlo desde tu teléfono.
Si solo necesitas un menú de teclado fijo, un CPaaS como Twilio o tu PBX ya lo hacen bien. Un agente compensa cuando quienes llaman mezclan hablar y teclear, o cuando tus propias llamadas tienen que atravesar el menú de otro.