Le DTMF, c’est le son d’une touche de téléphone. Chaque touche joue deux tonalités en même temps, l’une d’un groupe grave et l’autre d’un groupe aigu, et le système en face décode la paire en chiffre. Le nom dit exactement cela : dual-tone multi-frequency, fréquences doubles. Bell l’a lancé sous le nom Touch-Tone en 1963, et la Recommandation UIT-T Q.23 en définit toujours les fréquences.
Plus de soixante ans plus tard, le DTMF sert aux appelants à saisir un numéro de compte, sauter un menu ou taper un code PIN, et aux logiciels à parcourir les serveurs vocaux d’autres logiciels. C’est aussi une source régulière de tickets « hier les chiffres passaient », parce que sur un appel VoIP les tonalités peuvent voyager de trois façons différentes. Ce guide couvre les tonalités, les trois transports, les causes de chiffres perdus et ce qui change quand c’est un agent vocal IA qui répond ou qui compose. Il s’adresse aux ingénieurs et aux équipes de centre de contact qui gèrent un parcours téléphonique.
(Vous cherchiez « DtMF » de Bad Bunny ? C’est un titre de DeBÍ TiRAR MáS FOToS. Mauvaise page, excellent album.)
Fréquences DTMF
Le clavier est une grille de quatre sur quatre. Chaque ligne a une fréquence grave, chaque colonne une fréquence aiguë, et une touche joue sa ligne et sa colonne ensemble.
| 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 |
La touche 5 joue 770 Hz et 1336 Hz. La touche # joue 941 Hz et 1477 Hz. La quatrième colonne, de A à D, servait sur des équipements militaires et réseau et n’apparaît presque jamais sur un téléphone grand public : en pratique, vous gérerez douze touches, de 0 à 9, étoile et dièse.
L’astuce, c’est d’utiliser deux tonalités au lieu d’une. La voix et la musique placent rarement de l’énergie exactement sur une fréquence grave et une fréquence aiguë de ces ensembles au même instant, donc un décodeur distingue une touche d’une voix. La norme fixe aussi des limites de durée et d’écart de volume entre les deux tonalités, ce qui rend les fausses détections rares même quand quelqu’un parle sur la ligne.
Comment le DTMF voyage sur un appel moderne
Sur une ligne cuivre, le DTMF n’était que de l’audio sur le fil. Sur un appel IP, il existe trois options, et les deux extrémités doivent s’accorder sur l’une d’elles.
| Méthode | Comment le chiffre voyage | Où ça casse |
|---|---|---|
| Audio dans la bande | Les tonalités sont mélangées à l’audio de l’appel comme n’importe quel son | Les codecs compressés et la perte de paquets déforment les tonalités ; le décodeur rate ou double des chiffres |
| Événements RTP (RFC 4733 / 2833) | Un paquet telephone-event dans le flux RTP indique le chiffre et sa durée | Un côté envoie des événements et l’autre n’écoute que l’audio |
| SIP INFO | Un message SIP INFO sur le chemin de signalisation porte le chiffre, hors audio | Proxys et opérateurs qui ne relaient pas INFO, et un horodatage qui dérive de l’audio |
La RFC 4733 a remplacé la RFC 2833 en 2006, mais beaucoup de réglages de PBX et d’opérateurs affichent encore « RFC 2833 ». C’est la même option. La RFC explique en une phrase pourquoi elle existe : les codecs vocaux à bas débit « ne peuvent pas garantir de reproduire ces tonalités assez fidèlement pour une reconnaissance automatique ». G.711, le codec à 8 kHz de la plupart des appels, transporte bien les tonalités. Les codecs à bas débit comme G.729 souvent non.
Les événements RTP sont le choix sûr par défaut. Ils survivent à n’importe quel codec, portent le chiffre exact plutôt qu’un son à décoder, et la plupart des opérateurs et des plateformes les prennent en charge. La pile téléphonique de LiveKit, par exemple, envoie le DTMF sous forme d’événements telephone-event/8000.
Pourquoi des chiffres DTMF se perdent
Quand les touches échouent sur un appel VoIP, la cause est en général l’une de celles-ci :
- Méthodes incompatibles. L’opérateur envoie des événements RFC 4733 et le système en face ne décode que l’audio dans la bande, ou l’inverse. Vérifiez le mode DTMF dans l’offre et la réponse SDP des deux tronçons de l’appel.
- Audio compressé. Un tronçon qui transcode vers un codec bas débit abîme les tonalités dans la bande. Passez ce tronçon aux événements RTP, ou gardez-le en G.711.
- Chiffres doublés. Une passerelle envoie la tonalité en audio et en événement, et le récepteur compte les deux. « 1234 » arrive en « 11223344 ».
- Un flux média qui ne fait qu’écouter. Certaines API de streaming ne transmettent les touches que dans certains modes. Twilio Media Streams, par exemple, n’envoie de message
dtmfque sur les flux bidirectionnels. - Délais d’attente. L’appelant marque une pause entre deux chiffres, et le système envoie une saisie incomplète. Le
<Gather>de Twilio attend 5 secondes par défaut et valide sur#. Demandez aux appelants de terminer par dièse, et fixez le nombre de chiffres quand vous le connaissez.
Le test le plus rapide reste un vrai téléphone sur le vrai opérateur. Appelez, appuyez sur chaque touche et tapez un numéro avec des chiffres répétés. Les softphones de navigateur et les clients SIP de test négocient souvent une autre méthode qu’un mobile sur le réseau public.
DTMF et agents vocaux IA
Les agents vocaux remplacent beaucoup de menus « tapez 1 pour la facturation », mais le clavier ne va nulle part. Un agent gère le DTMF dans deux directions : l’appelant qui appuie sur des touches face à l’agent, et l’agent qui appuie sur des touches face au système de quelqu’un d’autre.
Recevoir les touches de l’appelant
Certains appelants préfèrent taper que parler, et certains numéros se tapent plus facilement qu’ils ne se disent. Un numéro de compte de 16 chiffres dicté sur une ligne bruyante est un test de reconnaissance vocale ; le même numéro au clavier, ce sont seize touches sans ambiguïté. Un bon agent accepte les deux dans la même conversation, sans menu.
Quelques règles font fonctionner la saisie au clavier avec un agent :
- Attendez la saisie complète. Un appelant tape un numéro d’adhérent d’une traite. Si l’agent répond après le premier chiffre, il parle par-dessus le reste. Cartesia Managed Agents regroupe les chiffres jusqu’à ce que l’appelant fasse une pause, puis transmet la saisie au modèle comme un seul tour clavier, étiqueté pour que le modèle sache que l’appelant l’a tapée et non dite.
- Laissez une touche interrompre. Un appelant qui commence à taper en pleine phrase veut que l’agent se taise. Sur Managed Agents, une touche coupe la réponse de l’agent comme la voix.
- Gardez les secrets loin du modèle. Ne collectez ni numéros de carte ni codes PIN complets via l’agent. Transférez vers une ligne de paiement qui reste dans votre périmètre PCI et ne renvoyez qu’un jeton ou un résultat. Le guide bancaire détaille ce point.
- Dites quoi taper. « Tapez votre numéro d’adhérent puis dièse » marche mieux que « Veuillez indiquer votre numéro d’adhérent », parce que l’appelant sait que les deux options existent.
Sur Managed Agents, les touches parviennent à l’agent sur les appels via Twilio et via le WebSocket de l’agent. Si vous connectez votre propre client au WebSocket, transmettez chaque touche sous forme d’événement dtmf_input :
{ "type": "dtmf_input", "digit": "5" }
Les chiffres valides sont 0 à 9, * et #. Sur tout autre chemin téléphonique, y compris un trunk SIP, passez un appel de test et vérifiez que l’agent entend les touches avant de construire un parcours qui en dépend.
Envoyer des tonalités pour parcourir un autre menu
L’autre direction, c’est l’agent qui appuie sur les touches. Les agents sortants qui appellent des assureurs, des pharmacies ou des fournisseurs passent la première minute de chaque appel dans le serveur vocal de quelqu’un d’autre. SuperDial, qui gère les appels aux organismes payeurs pour des structures de santé avec Cartesia, a intégré la navigation IVR à ses agents précisément pour cela.
Sur Managed Agents, activez l’outil système send_dtmf (Send keypad tones dans la page Tools du Playground). L’agent peut alors envoyer une ou plusieurs tonalités, comme 12#, quand un menu les demande.
{
"config": {
"system_tools": {
"send_dtmf": {}
}
}
}
Les menus téléphoniques sont conçus pour des humains patients, alors dites à l’agent comment s’y comporter :
- Écoutez le message en entier avant d’appuyer. Beaucoup de menus ignorent la saisie tant que le message n’est pas fini, et l’option voulue est souvent la dernière.
- Mettez les chemins connus dans le prompt. « Pour Acme Health, tapez 2, puis 4, puis le numéro NPI du praticien suivi de dièse. » Les variables dynamiques peuvent remplir les identifiants à chaque appel.
- Ne parlez pas pendant la navigation. La voix sur la ligne peut troubler un menu qui écoute des tonalités ou de la parole. L’outil envoie les tonalités sans que l’agent les commente.
- Prévoyez l’humain. Quand un conseiller décroche, l’agent doit passer du mode menu à la conversation. Écrivez cette transition dans le prompt.
Pour vérifier l’ensemble, lancez les mêmes scénarios que pour n’importe quel parcours téléphonique. Le guide de test IVR couvre les chemins clavier scénarisés et l’évaluation d’un agent sur le résultat.
La place de Cartesia
Cartesia conçoit les modèles vocaux sur lesquels tournent les agents : Sonic pour la synthèse vocale et Ink pour la transcription. Managed Agents les réunit dans un agent hébergé qui répond aux appels sur des numéros Cartesia, Twilio ou votre propre trunk SIP, avec send_dtmf et les transferts intégrés. Les appels d’agent coûtent 0,06 $ par minute, et vous pouvez en créer un dans le playground et l’appeler depuis votre téléphone.
Si vous n’avez besoin que d’un menu clavier fixe, un CPaaS comme Twilio ou votre PBX le font déjà bien. Un agent devient rentable quand les appelants mélangent parole et clavier, ou quand vos propres appels doivent franchir le menu de quelqu’un d’autre.