VoIP and Hacking | Consulenza Documentazione

Asterisk e DTMF

by admin on Aug.27, 2010, under Asterisk, Telefonia, VoIP

Con DTMF (Dual tone multi frequencies) ci si riferisce a quei toni che vengono generati quando viene premuto un tasto [una cifra, il simbolo di asterisco (star) o di cancelletto (pound)] sulla tastiera di un apparecchio telefonico. Data la attuale e crescente tendenza alla adozione di sistemi IVRs, l’utilizzo di DTMFs sta ovviamente crescendo in proporzione.

Che si chiami la propria banca, una qualsiasi azienda, un ufficio o servizio pubblico, diviene sempre più probabile inbattersi in una serie di opzioni IVR cui rispondere premendo tasti corrispondenti a cifre, asterisco e cancelletto, in varie salse e combinazioni.

Pertanto, quando si configura professionalmente un server asterisk, assume grande importanza un altrettanto corretto setup del suo meccanismo di rilevamento dei DTMF.

Per poter configurare correttamente la gestione dei DTMF, è forse utile sapere che esistono due tipi di DTMF: inband ed out-of-band.

Inband sono quei toni DTMF che sono a tutti gli effetti segnali audio. Quando si preme un tasto numerico (ad esempio) del dialpad di un terminale telefonico, il tono che si ode dovrebbe essere esattamente quello che viene udito dal sistema telefonico all’altro capo, per poter essere affidabile. Il tipico problema della tecnologia DTMF inband è che il sistema telefonico può confondere suoni di un alto come DTMF random. Succede realmente che una donna, mentre parla al telefono, rilevi in sottofondo un DTMF senza aver realmente premuto alcun tasto.

Una voce femminile, essendo caratterizzata da toni piu alti può venire più facilmente riconosciuta, incorrettamente, come un DTMF rispetto ad una voce maschile.

Un altro inconveniente dei DTMF inband consiste nel fatto che se la linea è cattiva e se per questo una chiamata vocale non risultasse chiara, i DTMF non verrebbero inviati correttamente e il terminale all’altra estremità non sarebbe pertanto in grado di interpretarli correttamente.

Un fastidioso rumore di fondo pure può causare lo stesso effetto.
L’utilizzo di un qualsiasi codec diverso da g711/ulaw/alaw risulterà generalmente in una distorsione dell’audio dei DTMF.
I DTMF inband non sono infatti supportati sul codec g729.

I DTMF out-of-band invece non soffrono di questi problemi. Non si tratta infatti di un segnale audio, ma di un segnale digitale che non viene influenzato dai fattori appena visti. Tuttavia richiedono che la parte inviante, tipicamente il telefono, possieda anch’esso la capacità di inviare DTMFs out-of-band. Sfortunatamente i normali telefoni casalinghi, ma questo vale anche per i cellulari, non possono trasmettere DTMF out-of-band.

Out-of-band è una modalità affidabile per l’invio di DTMF che a sua volta comprende due modalità distinte: SIP-INFO ed RFC2833.
SIP-INFO non viene molto utilizzato mentre RFC2833 [Schulzrinne e Petrack (2000)], che descrive come trasportare la segnalazione DTMF, altri toni di segnale, ed eventi telefonici, all’interno di pacchetti RTP (Reat Time Protocol), è diventato lo standard di fatto relativamente all’uso dei DTMF out-of-band nel VoIP, quando si utilizza SIP.

Quando si imposta un sistema Asterisk destinato a  interfacciarsi solamente con altri sistemi puramente VoIP, non vi è motivo di preoccuparsi, così come purtroppo non vi è molto da fare relativamente a chiamate provenienti da sorgenti non VoIP.

Tutti gli IP phones possiedono la capacità di usare DTMF sia inband che out-of-band. Per default la maggior parte di essi è gia impostata ad usare la modalità RFC2833.
Non occorre modificarla, ma solo verificare che per caso non sia impostata in modo differente.

Dal lato Asterisk, non importa quale versione si usi, i toni DTMF verranno tranquillamente accettati senza alcuna configurazione extra.

Se ad un sistema Asterisk si interfacciano sia terminali VoIP che terminali o linee analogiche, potrebbe essere necessario apportare delle modifiche al file zapata.conf (o chan_dahdi.conf). Questo perché zapata.conf (o chan_dahdi.conf) è il file che si occupa della configurazione dell’ hardware che abilità i telefoni e le linee non VoIP a connettersi al server Asterisk.
Se asterisk riceve correttamente i DTMF dagli IP phones ciò non implica che li debba ricevere altrettanto bene da parte di apparecchi o linee analogiche. Le modifiche a zapata.conf (o chan_dahdi.conf) si limitano poi al tuning dei valori rxgain, txgain e relaxdtmf.
Pertanto il valore di default rxgain=0.0 può venire modificato mentre relaxdtmf=no può venire cambiata in relaxdtmf=yes. Ma ancora una volta, se i toni DTMF dovessero giungere poco chiari a causa di una connessione di cattiva qualità, Asterisk faticherebbe certamente ad interpretarli, e potrebbe non riconoscerli del tutto.

Se una chiamata provenisse pertanto da una sorgente analogica, ad esempio un normale fisso, oppure da un cellulare, significherebbe che eventuali DTMFs entranti sarebbero solamente di tipo inband e non ci sarebbe un gran chè su cui intervenire.
Se la chiamata proviene da un cellulare, che trasmette i DTMF come segnali audio, un server Asterisk potrebbe non essere in grado di intercettarli distintamente. Non si potrà mai conoscere i percorsi che tali DTMF hanno compiuto e quanto ciò possa aver apportato loro una qualche distorsione prima di raggiungere il server asterisk.

Alcuni utenti hanno riportato che la rimozione di ogni riferimento ad un qualsiasi DTMF mode sui propri PBX Asterisk ha risolto qualsiasi inconveniente precedentemente incontrato con i DTMF. Ciò si effettua editando sip.conf per rimuovere qualsiasi riferimento a linee tipo “dtmfmode=rfc2833″ o “dtmf=inband”, consentendo di fatto ad Asterisk negoziare la modalità DTMF in modo autonomo.

Tuttavia, alcuni devices (Linksys, alcuni IP phones) richiedono l’impostazione di un DTMF mode. In tal caso, si consiglia di scegliere RFC2833 come DTMF mode. Se non dovesse funzionare occorre tentare le altre opzioni possibili, inband o SIP INFO.

L’importanza di aggiornare la versione di Asterisk
Versioni datate di Asterisk (tipicamente pre-1.4) evidenziano problemi coi DTMF più di quanto avvenga con versioni più recenti. Fix relativi al miglioramento del mode rfc2833 sono presenti nella versione 1.6 (1.6.2.11) mentre nella 1.8, che attualmente si trova in beta version (è stata appena annunciata la release di Asterisk 1.8.0-beta3), ha fatto la sua comparsa un enhancement relativo ai DTMF inband.

Send post as PDF to PDF | PDF Creator | PDF Converter
:, , , ,

1 Trackback or Pingback for this entry

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...