El Monday 18 February 2008 15:28:48 David Vicente escribió:
Iñaki Baz Castillo escribió:
El Monday 18 February 2008 13:18:53 David Vicente
escribió:
Buenos días:
Tengo el siguiente escenario. Registro dos sip-phones con la misma
sipUri. Les hago una llamada desde otro sip-phone y los INVITE llegan
bien a ambos. El problema llega, cuando quiero cancelar la llamada desde
uno de ellos, ya que hasta que no cuelga el segundo el Openser no lo
envía al llamante. Necesito poder mandarle el mensaje 480 al llamante
cuando llega del primero de los llamados, y no esperar al segundo, y no
sé si se podría hacer.
Si alguien tiene alguna idea se lo agradezco. Un saludo.
Creo que este post que escribí en su día te viene que ni pintado ;)
http://blog.aliax.net/2007/09/cdigos-sip-de-respuesta-en-parallel.html
Muchas gracias por el enlace, muy claro. Ante esto sólo me queda
preguntar si habría alguna posibilidad de manejar una señal 4XX a ese
mensaje y forzar la cancelación de las otras patas, aunque no se deba,
aunque por lo que he leído me temo que no. Sino habrá que hacerse un
poquito de ajo y agua.
No creo que haya forma. Al menos yo lo pregunté en mis inicios en la lista
openser en inglés y la respuesta fue que no se puede. Aunque todo es
probarlo. Así en plan idea feliz se me ocurre:
- Asignar un "t_reply" para investigar las respuestas.
- En su "on_brachroute" correspondiente mirar si se recibe un 4XX y en ese
caso poner el AVP del timer del TM a 0.
Para esto sería necesario poner:
modparam("tm", "fr_inv_timer_avp", "$avp(AVP_INV_TIMER)")
# Para que OpenSer cancele la llamada pasado el "fr_inv_timer":
modparam("tm", "noisy_ctimer", 1)
Y en el "on_replyroute" hacer en plan:
$avp(AVP_INV_TIMER) = 0;
(aunque no creo que funcione).
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es