Duda con negociación del método dtmf a usar en centralita Asterisk

341 views
Skip to first unread message

Miguel Alberto Sanz Pardo

unread,
Apr 6, 2015, 11:36:45 AM4/6/15
to aster...@googlegroups.com
Hola buenas tardes,


Desde hace un tiempo me surge alguna duda con respecto a:
- Cómo funciona la negociación del método DTMF a usar 
- Si es posible que un terminal pueda usar un método dtmf u otro según al destinatario al que se quiera llamar (al igual que se puede hacer con la "negociación" de codecs.


Digamos que trabajo con unos teléfonos analógicos los cuales pueden realizar comunicaciones de voz (llamada a otro teléfono) y comunicaciones de datos(llamada a un modem conectado a un pc).


¿Qué es lo que trato de conseguir?
- Por una parte cuando se realicen comunicaciones de voz desde mi teléfono necesito que se use el método dtmf "rfc2833" ya que trato de usar el codec g729 para llamadas de voz, y el método dtmf inband no me vale sobre g729(si no me confundo)

- Por otra parte cuando se realicen comunicaciones de datos desde mi teléfono necesito que se use el codec g711 y el método dtmf "inband", ya que sino fallan las comunicaciones de datos (no entiendo el por qué, pero al parecer el protocolo que usan los teléfonos analógicos para comunicarse con los modems debe de usar tonos dtmf en algún momento, y sino se usa dtmf "inband" la comunicación resulta fallida).


Este es mi dialplan resumido:

exten => _*00*.,1,NoOp()
same  => n, Set(SIP_CODEC=alaw)
same => n,Dial(SIP/GXW4104P1/991${EXTEN:4},30)
same => n,Hangup()

exten => _9876.,1,NoOp()
same => n,Dial(SIP/proveedorvoip/${EXTEN:4},60)
same => n,Hangup()


Y este es mi sip.conf:
[telefonos_analogicos](!)
type=friend
context=outgoing
host=dynamic
language = es
dtmfmode=auto
disallow=all
allow=g729
allow=alaw
qualify=yes
canreinvite=no
busylevel=1
call-limit=1


[GXW4104P1]
defaultuser=GXW4104P1
type=friend
host=dynamic
dtmfmode=inband
language = es
qualify = yes
disallow=all
allow=alaw
context=default
canreinvite=no
insecure=port
secret=


[voipdiscount]
type = peer
secret = 
defaultuser = 
fromuser = 
host = 
fromdomain = 
language = es
dtmfmode=rfc2833
insecure = invite
canreinvite = no
nat = force_rport,comedia
qualify = no
disallow=all
allow=g729


Cuando realizo las llamadas de datos salgo a través de un GXW4104(FXO) y cuando realizo las llamadas de voz a través de internet.

Dispongo de un gateway GXW4232 para conectar mis teléfonos analógicos.


El GXW4104 lo tengo configurado de manera que solo se usa el codec ALAW y el método dtmf in audio

El GXW4232 lo tengo configurado de manera que la negociación DTMF esté activada. Si tengo como prefered DTMF en primera opción IN AUDIO y en segunda opción RFC2833 las comunicaciones de datos fallan ya que al parecer trata de establecerlas usando rfc2833 a pesar de tener como primera opcion IN AUDIO y de usar dtmfmode=auto. Si tengo como prefered DTMF en las 3 opciones IN AUDIO establece las comunicaciones usando dtmf inband si o si y no fallan las comunicaciones de datos pero a cambio no puedo usar mas que dtmf in audio, lo cual bajo g729 no funciona de forma correcta.


He probado creo que todas las combinaciones posibles (las más y las menos lógicas) y no consigo que funcionen de forma correcta las comunicaciones de datos y voz a la vez. 
Hasta ahora lo mejor que he podido conseguir es que las comunicaciones de datos funcionen al 100% y las de voz funcionen pero con posibles problemas de dtmf. Lo curioso es que si establezco comunicación con otra centralita Asterisk que dispongo, al entrar al menú IVR y marcar el número de la extensión, la centralita llamante no detecta los tonos DTMF pero sí los detecta la centralita llamada (en la consola de la centralita llamante no aparecen los tonos DTMF pero sí aparecen en la centralita llamada).



un saludo y gracias por vuestra ayuda

Miguel Sanz

Miguel Alberto Sanz Pardo

unread,
Apr 6, 2015, 11:40:55 AM4/6/15
to aster...@googlegroups.com
He probado a usar la aplicación SIPDtmfMode( ) pero al parecer no funciona como pensaba o no he sabido usarla.

Miguel Alberto Sanz Pardo

unread,
Apr 6, 2015, 12:48:25 PM4/6/15
to aster...@googlegroups.com
Bueno, después de un buen rato creo que ya he visto cómo solucionarlo. Os expongo una posible solución; y sí, ha sido usando la aplicación comentada en el mensaje anterior(pero esta vez usándola como es debido o eso creo :p):

extensions.conf:

exten => _*02*.,1,NoOp()
same  => n, Set(SIP_CODEC=alaw)
same => n,SIPDtmfMode(inband)
same => n,Dial(SIP/GXW4104P1/991${EXTEN:4},30)
same => n,Dial(SIP/GXW4104P2/992${EXTEN:4},30)
...
same => n,Hangup()


exten => _9876.,1,NoOp()
same => n,Dial(SIP/proveedorvoip/${EXTEN:4},60)
...
same => n,Hangup()



sip.conf

[proveedorvoip]
type = peer
secret = 
defaultuser = 
fromuser = 
host = 
fromdomain = 
language = es
dtmfmode=rfc2833
insecure = invite
canreinvite = no
nat = force_rport,comedia
qualify = no
disallow=all
allow=g729


Y en el gateway GWX4232 como primera-segunda opcion del método dtmf he puesto inband y como tercera opcion rfc2833. Como primer codec g729 y como segunda y posteriores alaw
Y en el gateway GXW4104 dtmf inband y codec alaw


un saludo

Miguel Sanz

Miguel Alberto Sanz Pardo

unread,
Apr 7, 2015, 4:39:46 AM4/7/15
to aster...@googlegroups.com
No obstante sigo con el otro problema que comenté en el hilo: https://groups.google.com/forum/#!topic/asterisk-es/4Pfy9SgATsE


Al parecer si uso el codec de audio g729 y el dtmfmode=rfc2833 al salir mediante proveedores de voip desde mi propia centralita(Asterisk 11.16), si pulso un '1' no sale reflejado por la consola de la centralita desde la que llamo. Sin embargo, si llamo hacia otra centralita que dispongo (Asterisk 11.7) y entro al menu IVR de esta otra, si pulso '1' no sale reflejado en la consola de la centralita llamante pero sí sale reflejado en la consola de la centralita llamada. 
Me parece extraño porque en teoría tengo la misma configuración en ambas centralitas y si realizo llamadas a través del mismo proveedor mediante la centralita 11.7 no tengo ningún problema, los dtmf aparecen reflejados siempre por consola usando la misma configuración que la que uso con la centralita 11.16.

Lo raro es que si llamo desde un teléfono de la centralita 11.16 a un teléfono de la centralita 11.16 sí que aparecen reflejados los DTMF por la consola de Asterisk. Y si ejecuto esta extensión también parece que funciona el DTMF:
exten => 997,1,Answer()
same => n,Read(clave,/var/lib/asterisk/sounds/es/ipc/IntroducePin,0,n,1,3)
same => n,SayDigits(${clave})
same => n,Hangup()


En otra prueba que he realizado he podido comprobar que si uso sip-info (mas el codec de audio g729) al llamar a través del proveedor voip sí que sale reflejado por la consola de Asterisk la captura del tono dtmf, sin embargo en la centralita 11.7 funciona tanto con rfc2833 como con sip-info.

La única diferencia que recuerdo es que en la centralita 11.7 tengo una licencia del codec g729 y en la centralita 11.16 no, pero en ambas hago passthrough, así que entiendo que esto no debería de influenciar en este caso.

¿Alguien entiende qué puede estar pasando?

Raúl Alexis Betancor Santana

unread,
Apr 7, 2015, 4:56:31 AM4/7/15
to aster...@googlegroups.com
Ummm .. vamos por partes:

- Asterisk no soporta la 'negociación' del DTMFMode ... lo tienes que 'imponer' tú ... vía el .conf o vía la función del dialplan, si lo quieres hacer llamada a llamada.
- A la mayoría de los proveedores les importa un carajo que uses inband, rfc o sip-info, sus equipos suelen aceptar todo. Lo recomendado es rfc
- No puedes usar inband con G729, el 99% de los SIP-endpoints que soportan G729, no soportan DTMF inband al mismo tiempo, y Asterisk entra dentro de ese 99%
- No debería de haber diferencia ninguna, entre transmitir los DTMF en modo inband, que en cualquier otro modo, cuando quieres conectar los modems, aunque sabes que el problema REAL, es intentar conectar un par de módems vía RTP, por algo se inventó el T.38, que sé que no te vale para tu caso ... pero que tus jefes se deberían de ir planteando quitarse de enmedio esos modems. Ya que el objetivo es transmitir una información 'digital' ... sobre un medio 'digital' (IP) ... podrían pensarse sustituir esos modems por un conversor RS232-IP o una conexión vía tarjeta de red.
- Con respecto a que se muestren o nó la detección de los DTMF en la consola ... eso también dependerá del verbose level y de si le tienes dicho al logger que te los muestre.


--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Miguel Alberto Sanz Pardo

unread,
Apr 7, 2015, 6:25:18 AM4/7/15
to aster...@googlegroups.com
Hola Raul, ¿Qué tal? Como de costumbre muchas gracias por tu ayuda


Actualmente el modem que recibe las llamadas del teléfono analógico va conectado mediante un cable RS232 al sistema de gestión.

Hace poco me comentaron mis jefes acerca de la alternativa de usar un port-server(PC) que justamente creo que hace esa conversión RS232-IP, no obstante en el esquema que me plantearon se debía de conectar el modem a un gateway FXS y a su vez al port server mediante RS232, el cuál enviaría la información a través de IP a un servidor donde está nuestro SETM(sistema de gestión)

El escenario que me planteas ¿Cómo sería? En principio los teléfonos deben de llamar a los modems y comunicarse mediante v22 y luego los modems mediante el puerto serie se comunican con el sistema de gestión, ya sea mediante conexion directa o a través de un port server el cuál se comunica con el sistema de gestión mediante VOIP
Si se eliminan los modems creo que no tenemos ninguna alternativa preparada para que los teléfonos puedan cargar parámetros desde el sistema de gestión ni para volcar estadísticas hacia el sistema de gestión.



En principio en ambas centralitas tengo en logger.conf
console => notice,warning,error,dtmf


La verbosidad he probado a ponerla desde 6 hasta 9 y cuando llamo a través de los proveedores no muestra nada por la consola de la centralita 11.16(usando rfc2833, pero si uso sip-info sí que muestra) 
Sin embargo si realizo llamadas entre teléfonos de la misma centralita sí aparecen los dtmf por la consola y llamando a la extensión que pide un PIN también aparece, me mosquea bastante que unos casos aparezca por pantalla y en otros no. Debe de haber algo que se me está escapando o hay un bug en la versión 11.16.
Message has been deleted
Message has been deleted

Miguel Alberto Sanz Pardo

unread,
Apr 7, 2015, 6:54:49 AM4/7/15
to aster...@googlegroups.com
Estoy alucinando:


Usando rf2833:

Si configuro el proveedor de voip y el teléfono ambos con el mismo codec de audio al llamar a través del proveedor los dtmf no aparecen por la consola

Si configuro el proveedor de voip y el teléfono ambos con distinto codec(sea uno alaw y otro g729 o viceversa) al llamar a través del proveedor los dtmf sí aparecen por consola. Y para mas inri he probado a hacer dos llamadas desde la centralita 11.16 de manera que haga transcoding y me deja hacer 2 comunicaciones sin licencias (de g729 a alaw y viceversa) :|. Ahora sí que no entiendo nada XD

Usando sip-info:

Los dtmf aparecen por consola sí o sí.

Raúl Alexis Betancor Santana

unread,
Apr 7, 2015, 3:51:40 PM4/7/15
to aster...@googlegroups.com
El problema con conectar un modem analógico a un FXS, es que no conozco ningún ATA o Gateway que soporte la V150.1, también conocida como MoIP (Modem over IP), que es el equivalente para modems de la T.38 para faxes sobre IP.

Partiendo de esa base ... intentar comunicar dos módems, aunque sea con v22 (1200baudios), a base de conectarlos a dos gateways, es una solución harto 'delicada', muy sencible a QoS, Jitters, delays, etc. En LAN ... puede ... en WAN ... complicado, no imposible pero complicado.

La opción que yo te digo es:

Se supone que los terminales que tienen el modem ... ¿es integrado? o ¿es una placa a parte, que se conectar por RS232 al terminal?, porque puedes sustituir el modem, por un conversor R232-IP, lo que te permitiría interconectar los equipos (terminal y SETM, o terminal y modem-pooler), y utilizar la conexión IP como si de un cable modem-nulo se tratara, quitandote de enmedio la fase de conversión Digital->Analógica->Digital-> IP <-Digital<-Analógica<-Digital, pasando directamente a Digital -> IP <- Digital

Si quieres, dame un toque y lo comentamos más detalladamente, que como ya te dije la otra vez, os estáis over-complicando, para un tema que es mucho más simple de resolver y no estáis teniendo en cuenta los problemas que la conexión sobre VoIP os mete en medio de todo el proceso.

Saludos


De: "miguelsanzpardo" <miguels...@gmail.com>
Para: aster...@googlegroups.com
Enviados: Martes, 7 de Abril 2015 11:25:18
Asunto: [Asterisk-ES] Re: Duda con negociación del método dtmf a usar en centralita Asterisk
Hola Raul, ¿Qué tal? Como de costumbre muchas gracias por tu ayuda

Angel Elena

unread,
Apr 7, 2015, 5:53:19 PM4/7/15
to aster...@googlegroups.com
Cierto....

tienes unos conversores muuy chulos rs232 a IP

<spam>
http://tibbo.com/soi/
</spam>

yo he trampeado con visores de caja, plc's, impresoras de talones serie, ... y con los conversores adecuados puedes hacer lo que quieras.



--------------------------------
Ángel Elena Medina _o)
cr...@craem.net / \\
http://blog.craem.net _(___V
@craem_
--------------------------------

-----Mensaje original-----
De: Raúl Alexis Betancor Santana <ra...@dimension-virtual.com>
Enviado: Mar 07-04-2015 21:51
Asunto: Re: [Asterisk-ES] Re: Duda con negociación del método dtmf a usar en centralita Asterisk
Para: aster...@googlegroups.com;
> El problema con conectar un modem analógico a un FXS, es que no conozco ningún
> ATA o Gateway que soporte la V150.1, también conocida como MoIP (Modem over
> IP), que es el equivalente para modems de la T.38 para faxes sobre IP.
>
> Partiendo de esa base ... intentar comunicar dos módems, aunque sea con v22
> (1200baudios), a base de conectarlos a dos gateways, es una solución harto
> 'delicada', muy sencible a QoS, Jitters, delays, etc. En LAN ... puede ... en
> WAN ... complicado, no imposible pero complicado.
>
> La opción que yo te digo es:
>
> Se supone que los terminales que tienen el modem ... ¿es integrado? o ¿es una
> placa a parte, que se conectar por RS232 al terminal?, porque puedes sustituir
> el modem, por un conversor R232-IP, lo que te permitiría interconectar los
> equipos (terminal y SETM, o terminal y modem-pooler), y utilizar la conexión IP
> como si de un cable modem-nulo se tratara, quitandote de enmedio la fase de
> conversión Digital->Analógica->Digital-> IP <-Digital<-Analógica<-Digital,
> pasando directamente a Digital -> IP <- Digital
>
> Si quieres, dame un toque y lo comentamos más detalladamente, que como ya te
> dije la otra vez, os estáis over-complicando, para un tema que es mucho más
> simple de resolver y no estáis teniendo en cuenta los problemas que la conexión
> sobre VoIP os mete en medio de todo el proceso.
>
> Saludos
>
> --------------------------------
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía
> un correo electrónico a asterisk-es...@googlegroups.com
> <mailto:asterisk-es...@googlegroups.com> .
> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> <http://groups.google.com/group/asterisk-es> .
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía
> un correo electrónico a asterisk-es...@googlegroups.com
> <mailto:asterisk-es...@googlegroups.com> .
> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> <http://groups.google.com/group/asterisk-es> .

Miguel Alberto Sanz Pardo

unread,
Apr 8, 2015, 10:01:02 AM4/8/15
to aster...@googlegroups.com
Hola de nuevo Raúl,

En cuanto pueda hablar con mi jefe(en cuanto él deje de estar ocupado) te aseguro que es exactamente lo que tenemos desarrollado en cuanto al terminal(teléfono). Ahora mismo no tengo del todo claro si es un circuito integrado o una placa a parte la que convierte la señal de voz de digital a analógico (Mirando el teléfono por dentro diría que hay dos placas separadas). En cuanto sepa algo con más certeza te aviso y cuando estés libre hablamos si te parece bien.

He estado hablando con un compañero y me ha dicho que le suena que otro compañero desarrolló un conversor rs232-voip o que adaptó la placa del teléfono para poder conectar dicho tipo de conversor.

Gracias por todo



Hola Angel

Muchas gracias por la info, cuando hable con mi jefe le mostraré los conversores que me recomiendas a ver que le parecen.



un saludo

MIguel Sanz


Reply all
Reply to author
Forward
0 new messages