No pongas la t:
t - Allow the called party to transfer the calling party by sending the
DTMF sequence defined in the blindxfer setting in the featuremap
section of features.conf.
Si pones la t el audio pasará SIEMPRE por Asterisk (salvo que hayas
ocnfigurado los peers/friends con rtfmode=info).
Si tus terminales soportan transferencia SIP te recomiendo que quites la t ya
sólo sirve para permitir la transferencia por DTMF nativa de Asterisk.
--
Iñaki Baz Castillo
<ib...@xtratelecom.es>
Iñaki Baz Castillo escribió:
Si en lugar de "tr" pongo "r" me aparece el siguiente error en el
softphone:
La r genera un ringtone falso...
--
Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de disketes."
----------------------------------------------------------------
http://www.saghul.net/
Saúl Ibarra escribió:
> Porqué quieres la r?
>
> La r genera un ringtone falso...
>
>
>
--
-
-------------------------------------
Germán Aracil Boned
Director de Sistemas
Zoon Suite S.L.
www.zoonsuite.com
963146030 - General
963146031 - Asistencia de incidencias
963146032 - FAX
-------------------------------------
-
Asegúrate de que no haya problema de codecs. Puesto que Asterisk no debe
intervenir en el RTP por "allow=all" en ambos peers/friends.
> En mi escenario de trabajo cuento con distintas subredes. En cada
> subred existen distintos softphones (pjsua) que se registran en
> opensips. Opensips redirige el tráfico a asterisk que se encuentra en
> otra subred aislado. Y quiero que el tráfico RTP entre dos softphones
> de distintas subredes sea directo sin pasar por asterisk. Para ello en
> cada extension sip he puesto canreinvite=yes y en las opciones del
> Dial no he puesto nada. Es posible abordar esta solución.
Sí.
> Elproblema es que en cuanto quito la "t" del Dial option me aparece el
> error anteriormente mencionado.
Debe ser tema de codecs.
Asterisk es un B2BUA que se entromete en el SDP y la negociación de codecs.
NO basta con que los tfnos soporten los mismos codecs, también debes
configurar los respectivos friends/peers en Asterisk para que los soporten,
por eso te decía que pongas "allow=all" en los friends de los usuarios en
Asterisk.
puesto que Asterisk no va a intervenir en el audio, mejor que no meta la zarpa
y no limite innecesariamente. Por ello yo propongo:
allow=all
y a correr :)
Iñaki Baz Castillo escribió:
> El Monday 20 April 2009 12:50:19 Germán Aracil Boned escribió:
>> El problema de codecs te lo dará asterisk.
>> Prueba un disallow=all y un allow=elquequierasusar.
>
> puesto que Asterisk no va a intervenir en el audio, mejor que no meta la zarpa
> y no limite innecesariamente. Por ello yo propongo:
>
> allow=all
>
> y a correr :)
>
>
--
Vaya, me lo creo totalmente pero no alcanzo a entenderlo...
Si pones "allow=all", ¿no se supoen que Asterisk debería molestar mucho menos?
(sobre todo teniendo en cuenta que va a ser audio directo)
Te voy a contar un pequeño, pequeño secreto a cerca de la negociación de
codecs de Asterisk ... NO FUNCIONA.
Si la pata A dice ...
1 GSM
2 PCMU
3 G729
Y cuando Asterisk "crea" la pata B en el Dial, por el orden que tenga de carga
de los módulos de los codecs, etc, etc, manda :
1 G729
2 PCMU
3 GSM
¿Adivinas lo que pasa, aunque tengas canreinvite y ostias?
Saludos
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
Ilústrame... ¿¿qué pasa??
> aunque tengas canreinvite y ostias?
Que yaha canreinvite o no da igual, ya que durante el establecimiento de
*ambos* canales Asterisk interviene en el media path (aunque tras el
establecimiento envíe un re-INVITE a cada pata con el SPD del respectivo
remoto).
Pero "se supone" que con la opción "directrtp" (la única vez que me dio por
probarla cascaba Asterisk al instante) Asterisk no debería ni investigar los
codecs... mucho me temo que no es así...
Llegados a este punto te sugiero que hagas capturas SIP e inspecciones las
direcciones en los SDP, a ver "qué pasa".
Iñaki Baz Castillo escribió:
--
¡Premio para el caballero! ... puede usted elegir ente le perrito piloto o la
bailarina de la caja de música ...
Que Asterisk como "genera" un SDP "nuevo", se la suda el orden de los codecs
en el SDP A, y claro .. si luego la pata B contesta que "200 OK, G729" ...
Asterisk "inspecciona" el SDP A y manda GSM en la respuesta a la pata A,
porque Asterisk tiene "transcoding path" entre GSM y G729
Y da igual que luego mande el "re-INVITE", si el dispositivo no acepta el re-
INVITE (y los hay que no lo aceptan), Asterisk ya se ha quedado en el media-
path .. te guste o nó, y encima haciendo transcoding.
Esto lo he visto en varias instalaciones .. y se montan unos pifostios de
cuidado.
El problema que tengo ahora mismo es que si en dial options no pongo
ninguna opción el tráfico RTP no aparece, sólo aparece el RTPD. Y no
sé que opción poner para que me funcione todo bien.
Entonces cual es el problema? No se oye nada entre los pjsuas?
Captura el tráfico SIP en el asterisk para ver los SDP...
Hola, era dtmfmode=info, y no rtfmode.
Por otra parte, eso sólo sirve para que si llamas con la "t" en el Dial,
entonces Asterisk NO obligue al audio a pasar por él. Si usases
dtmfmode=rfc2833 o inband, entonces al poner la "t" Asterisk se come el audio
sí o sí. Nada más.
Como te comentaba, NO pongas la "t", que sólo sirve para la transferencia ñapa
de Asterisk usando DTMF. En su lugar haz transferencia SIP de los tfnos.
Dices que los endpoints son PJsua, por lo que corren (entiendo) en un Linux
(con mala suerte en un Windows). Si es Linux instala en cada equipo el
paquete iftop que sirve para ver el tráfico de red en "bonito".
La cuestión que has de hacer las capturas en los "lugares extratégicos",
dicese en los UAC's ó en routers intermedios por lo que pase ese tráfico.
Es normal que si le quitas las dial options no veas el RTP, al fin y al cabo
es el objetivo que perseguías, que el RTP no pasase por el Asterisk.
Ahora te falta verificar que el RTP vá directo del UAC1 al UAC2
Saludos
por cierto, ¿no estarán los UA detrás de NAT's diferentes?
No me la compliques antes de tiempo ... según uno de sus primeros mails .. las
sedes estaban interconectadas "sin problemas" ...
Ok
> - ¿Hay alguan opción para hacer transferencia SIP de los tfnos?
Si es un dispositivo SIP y tiene "botón" de transfer ... pues ya
> - La captura no la estoy realizando en asterisk, sino en puntos por
> los que pasaría el tráfico RTP aunque este no pasase por asterisk.
Ok, ¿estas segura de que son los sitios adecuados?
> - Únicamente en cada teléfono aparece una regla iptables para que todo
> el tráfico SIP lo redirija a su opensip correspondiente.
Esto ma matao ... ¿para que necesitas reglas de iptables para redigir
tráfico? ... eso tiene pinta de que tu escenario SIP global no está bien
diseñado.
Ergo tu escenario SIP está tremendamente mal montado, por lo menos para el
routing SIP que quieres montar
Tendrás que comprobar los SDP y ver por donde se está yendo el RTP
Deberías comprobar la configuración de los OpenSIPS... haces
record-routing de los INVITE/SUBSCRIBE? De esta manera el OpenSIPS que
hace de registrar para el pjsua A se quedará en medio del path de
señalización cuando llames al openSIPS del pjsua B...
Esta no es una lista sobre opensips/kamailio ... pero respondiendo a tu
pregunta, NO, REGISTER y MESSAGE no son equivalentes a INVITE y SUBSCRIBE,
cada tipo de mensaje tiene su significado y su utilidad.
En respuesta a lo otro que preguntas, SI, tienes mal el archivo de
configuración de opensips, puesto que los mensajes INVITE SI debes de
pasarlos por record-route y loose_route, por eso tienes que hacer la "ñapa"
del iptables.
Si quieres aprender a configurar correctamente un proxy SIP como opensips, te
recomiendo encarecidamente que primero aprendas los fundamentos de SIP, tipos
de mensajes, call-flow's de cada uno, etc. sino lo vas a sufrir de lo lindo.
Saludos
Ale que no tiene "cosas raras" ... XDD
PJsip lo implementa a nivel de librería, desde luego.
> - La captura no la estoy realizando en asterisk, sino en puntos por
> los que pasaría el tráfico RTP aunque este no pasase por asterisk.
¿¿Pero el audio no era directo entre los terminales??
> - Únicamente en cada teléfono aparece una regla iptables para que todo
> el tráfico SIP lo redirija a su opensip correspondiente.
Esto no tiene sentido y sólo puede fallar.
> > Esto ma matao ... ¿para que necesitas reglas de iptables para redigir
> > tráfico? ... eso tiene pinta de que tu escenario SIP global no está bien
> > diseñado.
>
> Si no hago eso el teléfono busca el opensips del llamante sin pasar
> por el opensip que está registrado y yo quiero que primero pase por el
> opensip que está registrado y después al asterisk para después ir al
> opensips del llamado.
Para cosas como éstas, cualquier tfno SIP que se precie tiene la
opción "outboundproxy". Pon ahí la dirección del proxy al que quieres que el
terminal envíe *siempre* el tráfico SIP y allí lo mandará sea el dominio que
sea.
No no, 100% seguro de que lo que necesita es configurar la
opción "outboundproxy" en los tfnos.
Un consejo: NUNCA trates de hacer ñapas con Iptables para "solucionar" temas
de routing SIP.
El problema esta en la configuración del dial options, porque si pongo
como opción "t", si que hay tráfico RTP pero, como ya dijimos
anteriormente, este tráfico pasa a través de asterisk. Esto me esta
volviendo de cabeza, porque no sé como resolverlo.
Laura, esto ya le he explicado 3 veces en este hilo: Si pones "t" al Dial y
los peers no están configurados con "dtmfmode=info" el audio pasa por
Asterisk sí o sí.
Insisto, olvida la opción "t", hace lo que no quieres, no le des más vueltas y
céntrate en solucionar el problema del RTP directo que por alguna razón no
funciona.
Pero en los Linux de los *clientes*, ¿verdad?
Veamos: Si tienes los peers con "dtmfmode=rfc2833" (o inband) entonces
significa que los DTMF se envían por el RTP.
Así mismo, si tienes pues "t" en el Dial significa que permites al llamado
transferir la llamada enviando un *DTMF*. Puesto que el DTMF se envía por
RTP, Asterisk *DEBE* estar en el path, y da igual que pongas canreinite=yes.
En cambio si pones dtmfmode=info, los DTMF se envían por SIP y no por el RTP,
así que aunque pongas "t" en el Dial, Asterisk no require comerse el RTP para
interceptar los DTMF, ya que los recibirá vía SIP INFO request.
PD: Pero insisto, olvida la transferencia por DTMF de Asterisk (quita la
opción "t") y usa la transferencia nativa de SIP (REFER request) que
implementa cualquier cosa SIP que se precie (y PJsip se precia mucho).
Saludos.
Ya te lo ha explicado Iñaki como una 4 veces.
> > Pero en los Linux de los *clientes*, ¿verdad?
>
> Efectivamente, capturo en los PCs donde se encuentran los teléfonos
Pues deberías de ver RTP salir, otra cosa es que vaya o nó a donde debe, pero
deberías de verlo salir.
> Analizando las capturas no logro entender que está pasando.
Que tienes un potaje montado de cuidado.
> Adjunto una captura en un pjsua con ngrep, para ver si alguien
> encuentra la respuesta.
Lo siento, los servicios de consultoría no son gratis. Te vuelvo a recomendar
que primero pintes en un folio lo que quieres conseguir, veas los elementos
que intervienen y aprendas como funciona cada uno, hacer ñapas a ciegas solo
te va a producir más dolores de cabeza y perdida de tiempo.
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
En las trazas que mandaste en el otro email aparecían más IP's que esas que
tienes ahí, así que creo que tu escenario no está correctamente descrito.
Aparecían IP's del rango 192.168.0.X
Creo que tienes demasiados puntos de fallo...