En primer lugar hola a todos, es la primera vez que me dirijo a escribir en esta lista, aunque ya llevo un tiempo leyendola, asi que soy un novatillo :)
He seguido los post de la lista sobre el tema de integración de Openser y Asterisk, quiero preguntar sobre el hilo "Desesperado con OpenSer + Asterisk Realtime + MWI". Pues bien, tras ir leyendo todos, he llegado a la conclusión de que a pesar de tener Asterisk en Real Time... este aun no coge los usuarios registrados en Openser ya que Asterisk necesita añadirlos a su lista interna. ¿Estoy en lo cierto?
Para añadirlos en la lista interna, Iñaki comentaba de hacer un script sipsak, o hacer uso de t_replicate. El ojetivo es simplemente llamar a Asterisk.
Mi problema es el siguiente: los usuarios se registran en Openser. Entonces el usuario 200 llama al 201 por ejemplo, le llega el INVITE a Openser, este hace un rewritehostport a Asterisk...y entonces este falla, ya que a pesar de estar declarados los teléfonos 200 y 201 en el archivo de texto sip.conf (ojo yo no lo tengo en RealTime por el momento), como Asterisk no lo tiene en su lista interna. Si registro el telefono 200 en Openser y el 201 en Asterisk, y llamo desde el 200 al 201 funciona perfecto.
Entonces la solución del t_replicate me pareció muy util. Lo que hago es una vez que el teléfono se ha autenticado con Openser, le hago un t_replicate a Asterisk para que también lo registre. Pero me surge el problema de que Asterisk en vez de responder al teléfono SIP con un Unauthorized, contesta a Openser, ya que este se incluye en la cabecera VIA. Y otro cosa que he visto es que en la cabecera WWW- que envía Asterisk, se indica "real,=asterisk", cuando en el mensaje que replicado de Openser, en la cabecera WWW- el dominio es "localhost" que es el que tengo en Openser SERDOMAIN=localhost.
Espero haberme explicado. Muchas gracias. Un saludo.
¡Ya está aquí Windows Live Spaces! Ahora podrás crear fácilmente tu propio sitio Web. Pruébalo
_________________________________________________________________ Busca desde cualquier página Web con una protección excepcional. Consigue la Barra de herramientas de Windows Live hoy mismo y GRATUITAMENTE. http://www.toolbar.live.com
El Wednesday 02 July 2008 13:17:22 ZiLioN ZilLioN escribió:
Mi problema es el siguiente: los usuarios se registran en Openser. Entonces el usuario 200 llama al 201 por ejemplo, le llega el INVITE a Openser, este hace un rewritehostport a Asterisk...y entonces este falla, ya que a pesar de estar declarados los teléfonos 200 y 201 en el archivo de texto sip.conf (ojo yo no lo tengo en RealTime por el momento), como Asterisk no lo tiene en su lista interna. Si registro el telefono 200 en Openser y el 201 en Asterisk, y llamo desde el 200 al 201 funciona perfecto.
No es necesario RealTime (pero es cómodo pues no tienes que replicar usuarios en Asterisk). Pero para probar lo puedes hacer en el sip.conf muy fácil:
[usuario-openser] type=peer host=IP_OPENSER port=POR_OPENSER fromdomain=DOMINIO insecure=invite context=entrantes-openser
[200](usuario-openser) [201(usuario-openser)
Y ya está, con esto cuando hagas un: Dial(SIP/201) Asterisk enviará el INVITE a IP_OPENSER que lo rutará al 201 o devolverá 480 (que no 404, por favor) a Asterisk si no está registrado.
Entonces la solución del t_replicate me pareció muy util. Lo que hago es una vez que el teléfono se ha autenticado con Openser, le hago un t_replicate a Asterisk para que también lo registre. Pero me surge el problema de que Asterisk en vez de responder al teléfono SIP con un Unauthorized, contesta a Openser, ya que este se incluye en la cabecera VIA.
No lo hagas así, no uses t_replicate, es complejo para lo que quieres.
Usando lo de antes te funcionará correctamente salvo el detalle de que si haces un "reload" en Asterisk (y tienes los usuarios en RealTime) se vaciará el listado de usuarios y cosas como el MWI no funcionará hasta que el usuario (200 por ejemplo) contacte con Asterisk para lo que sea.
El Wednesday 02 July 2008 13:30:14 Iñaki Baz Castillo escribió:
Y ya está, con esto cuando hagas un: Dial(SIP/201) Asterisk enviará el INVITE a IP_OPENSER que lo rutará al 201 o devolverá 480 (que no 404, por favor) a Asterisk si no está registrado.
Ojo, en OpenSer no pidas autenticación si la llamada viene desde la IP de Asterisk.
Pero si cuando el usuario 200 llama 201, a Openser le llega el INVITE y hace rewritehostport para enviarlo a Asterisk, si Asterisk se lo reenvia de nuevo a Openser, caigo en un bucle. ¿Por que Asterisk no se lo envía directamente al teléfono? Eso es lo que pretendo conseguir al menos.
From: ibc@in.ilimit.es To: users-es@lists.openser.org Date: Wed, 2 Jul 2008 13:30:14 +0200 Subject: Re: [OpenSER-Users-ES] [OT] Desesperado con OpenSer + Asterisk Realtime + MWI
El Wednesday 02 July 2008 13:17:22 ZiLioN ZilLioN escribió:
Mi problema es el siguiente: los usuarios se registran en Openser. Entonces el usuario 200 llama al 201 por ejemplo, le llega el INVITE a Openser, este hace un rewritehostport a Asterisk...y entonces este falla, ya que a pesar de estar declarados los teléfonos 200 y 201 en el archivo de texto sip.conf (ojo yo no lo tengo en RealTime por el momento), como Asterisk no lo tiene en su lista interna. Si registro el telefono 200 en Openser y el 201 en Asterisk, y llamo desde el 200 al 201 funciona perfecto.
No es necesario RealTime (pero es cómodo pues no tienes que replicar usuarios en Asterisk). Pero para probar lo puedes hacer en el sip.conf muy fácil:
[usuario-openser] type=peer host=IP_OPENSER port=POR_OPENSER fromdomain=DOMINIO insecure=invite context=entrantes-openser
[200](usuario-openser) [201(usuario-openser)
Y ya está, con esto cuando hagas un: Dial(SIP/201) Asterisk enviará el INVITE a IP_OPENSER que lo rutará al 201 o devolverá 480 (que no 404, por favor) a Asterisk si no está registrado.
Entonces la solución del t_replicate me pareció muy util. Lo que hago es una vez que el teléfono se ha autenticado con Openser, le hago un t_replicate a Asterisk para que también lo registre. Pero me surge el problema de que Asterisk en vez de responder al teléfono SIP con un Unauthorized, contesta a Openser, ya que este se incluye en la cabecera VIA.
No lo hagas así, no uses t_replicate, es complejo para lo que quieres.
Usando lo de antes te funcionará correctamente salvo el detalle de que si haces un "reload" en Asterisk (y tienes los usuarios en RealTime) se vaciará el listado de usuarios y cosas como el MWI no funcionará hasta que el usuario (200 por ejemplo) contacte con Asterisk para lo que sea.
-- Iñaki Baz Castillo ibc@in.ilimit.es
Users-es mailing list Users-es@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
_________________________________________________________________ Consigue el nuevo Windows Live Messenger http://get.live.com/messenger/overview
El Wednesday 02 July 2008 13:49:41 ZiLioN ZilLioN escribió:
Pero si cuando el usuario 200 llama 201, a Openser le llega el INVITE y hace rewritehostport para enviarlo a Asterisk, si Asterisk se lo reenvia de nuevo a Openser, caigo en un bucle. ¿Por que Asterisk no se lo envía directamente al teléfono? Eso es lo que pretendo conseguir al menos.
No, no hagas eso, para conseguir ese comportamiento necesitas que Asterisk vea como registrados a los usuarios y eso es muy muy complejo.
Simplemente haz esta lógica en OpenSer:
if is_method("INVITE") && $rU =~ "2[0-9][0-9]" { # Si no viene de Asterisk se lo pasamos a Asterisk: if $si != IP_ASTERISK { rewritehost("IP_ASTERISK"); t_relay(); # En caso de que venga de Asterisk buscamos al usuario: else { if ! lookup("location") { sl_reply("480", "User Not Available now"); } t_relay(); }
}
Iñaki lo que he hecho es lo siguiente:
En sip.confg de Asterisk tengo solamente esto:
[usuario-openser]
type=peer host=IP_OPENSER port=POR_OPENSER fromdomain=DOMINIO insecure=invite context=entrantes-openser
Solamente tengo eso, ni siquiera tengo los teléfonos SIP 200 y 201
Tu me pusiste esto:
[200](usuario-openser) [201(usuario-openser)
pero no entiendo a que te referias con ello. Ya te digo lo que he hecho, ni 200 ni 201 en sip.conf. Ambos se registran en Openser
En extensions.conf he creado la contexto [entrantes-openser], donde tengo la extensión: exten => 201,1,Dial(SIP/201@IP_OPENSER) exten => 200,1,Dial(SIP/200@IP_OPENSER)
Entonces los teléfonos solo se registran en OpenSER, y cuando llega un INVITE lo envío a Asterisk con rewritehostport. Y los teléfonos funcionan bien, pueden llamar incluso a Asterisk (exten => 1234,1,Playback(demo-congrats) ).
Las dudas que tengo son:
Porqué Asterisk no reenvía despues el INVITE a Openser (al menos no lo veo con ngrep) para que este lo trate. ¿Porqué Asterisk no lo devuelve a Openser si se lo he indicado en el Dial? Tu en el Dial me dijiste que pusiera "Dial(SIP/201)", yo no se si es que estoy enrevesando esto.
Y otra cosa, al poner [usuario-openser] como type=peer...porque Asterisk se lo lleva al contexto [entrantes-openser]?? Si es un peer se supone que la llamada no debe entrar en el dialplan de Asterisk....y además, como sabe que es de Openser el INVITE que le llega para aceptarlo, por que en el host se le indica la IP? Por más que leo no veo la diferencia entre peer, friend, y user muy clara
Un saludo y muchas gracias a todos.
From: ibc@in.ilimit.es To: users-es@lists.openser.org Date: Wed, 2 Jul 2008 13:30:14 +0200 Subject: Re: [OpenSER-Users-ES] [OT] Desesperado con OpenSer + Asterisk Realtime + MWI
El Wednesday 02 July 2008 13:17:22 ZiLioN ZilLioN escribió:
Mi problema es el siguiente: los usuarios se registran en Openser. Entonces el usuario 200 llama al 201 por ejemplo, le llega el INVITE a Openser, este hace un rewritehostport a Asterisk...y entonces este falla, ya que a pesar de estar declarados los teléfonos 200 y 201 en el archivo de texto sip.conf (ojo yo no lo tengo en RealTime por el momento), como Asterisk no lo tiene en su lista interna. Si registro el telefono 200 en Openser y el 201 en Asterisk, y llamo desde el 200 al 201 funciona perfecto.
No es necesario RealTime (pero es cómodo pues no tienes que replicar usuarios en Asterisk). Pero para probar lo puedes hacer en el sip.conf muy fácil:
[usuario-openser] type=peer host=IP_OPENSER port=POR_OPENSER fromdomain=DOMINIO insecure=invite context=entrantes-openser
[200](usuario-openser) [201(usuario-openser)
Y ya está, con esto cuando hagas un: Dial(SIP/201) Asterisk enviará el INVITE a IP_OPENSER que lo rutará al 201 o devolverá 480 (que no 404, por favor) a Asterisk si no está registrado.
Entonces la solución del t_replicate me pareció muy util. Lo que hago es una vez que el teléfono se ha autenticado con Openser, le hago un t_replicate a Asterisk para que también lo registre. Pero me surge el problema de que Asterisk en vez de responder al teléfono SIP con un Unauthorized, contesta a Openser, ya que este se incluye en la cabecera VIA.
No lo hagas así, no uses t_replicate, es complejo para lo que quieres.
Usando lo de antes te funcionará correctamente salvo el detalle de que si haces un "reload" en Asterisk (y tienes los usuarios en RealTime) se vaciará el listado de usuarios y cosas como el MWI no funcionará hasta que el usuario (200 por ejemplo) contacte con Asterisk para lo que sea.
-- Iñaki Baz Castillo ibc@in.ilimit.es
Users-es mailing list Users-es@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
_________________________________________________________________ Llama a tus amigos de PC a PC: ¡Es GRATIS! http://get.live.com/messenger/overview
El Thursday 03 July 2008 16:02:02 ZiLioN ZilLioN escribió:
Iñaki lo que he hecho es lo siguiente:
En sip.confg de Asterisk tengo solamente esto:
[usuario-openser]
type=peer
Disculpas, esto debe ser: type=friend
host=IP_OPENSER port=POR_OPENSER fromdomain=DOMINIO insecure=invite context=entrantes-openser
Solamente tengo eso, ni siquiera tengo los teléfonos SIP 200 y 201
Tu me pusiste esto:
[200](usuario-openser) [201(usuario-openser)
pero no entiendo a que te referias con ello.
Eso son plantillas del sip.conf. Al poner: [200](usuario-openser) estás creando un friend con username = 200 y el resto de parámetros los de la plantilla -> usuario-openser. Es para no tener que duplicar todo en cada usuario. Con esto, cuando el usuario 200 llame a Asterisk el INVITE vendrá de la IP de OpenSer y el From es 200 por lo que Asterisk lo asocia con su friend [200], así de fácil.
Ya te digo lo que he hecho, ni 200 ni 201 en sip.conf. Ambos se registran en Openser
No se tienen que registrar en Asterisk.
En extensions.conf he creado la contexto [entrantes-openser], donde tengo la extensión: exten => 201,1,Dial(SIP/201@IP_OPENSER)
No, quita lo de @OPENSER, no hace falta, con lo de arriba Asterisk piensan que son usuarios suyos y que están en la IP de OpenSer:
exten => 201,1,Dial(SIP/201)
Y otra cosa, al poner [usuario-openser] como type=peer...porque Asterisk se lo lleva al contexto [entrantes-openser]?? Si es un peer se supone que la llamada no debe entrar en el dialplan de Asterisk....y además, como sabe que es de Openser el INVITE que le llega para aceptarlo, por que en el host se le indica la IP? Por más que leo no veo la diferencia entre peer, friend, y user muy clara
Lo corrijo arriba, es "friend" y los friends se identifican en Asterisk por el From (o sea, 200, 201...) y si pones la IP además deben venir de dicha IP (la de OpenSer de donde llegarán todos los INVITE) para identificarlos con el friend de sip.conf.
Openser le reenvia Asterisk el INVITE... pero cuando Asterisk se lo reenvia a Openser (ya que Asterisk piensa que es un usuario suyo) va y se carga el INVITE, dejando la linea de petición: "sip:IPOPENSER", es decir, quita la extensión!!! Entonces al llegarle a Openser este dice "484 Address Incomplete"
Yo creo que aparte de que estoy aprendiendo... Asterisk me esta liando más.
From: ibc@in.ilimit.es To: users-es@lists.openser.org Date: Thu, 3 Jul 2008 16:40:35 +0200 Subject: Re: [OpenSER-Users-ES] FW: [OT] Desesperado con OpenSer + Asterisk Realtime + MWI
El Thursday 03 July 2008 16:02:02 ZiLioN ZilLioN escribió:
Iñaki lo que he hecho es lo siguiente:
En sip.confg de Asterisk tengo solamente esto:
[usuario-openser]
type=peer
Disculpas, esto debe ser: type=friend
host=IP_OPENSER port=POR_OPENSER fromdomain=DOMINIO insecure=invite context=entrantes-openser
Solamente tengo eso, ni siquiera tengo los teléfonos SIP 200 y 201
Tu me pusiste esto:
[200](usuario-openser) [201(usuario-openser)
pero no entiendo a que te referias con ello.
Eso son plantillas del sip.conf. Al poner: [200](usuario-openser) estás creando un friend con username = 200 y el resto de parámetros los de la plantilla -> usuario-openser. Es para no tener que duplicar todo en cada usuario. Con esto, cuando el usuario 200 llame a Asterisk el INVITE vendrá de la IP de OpenSer y el From es 200 por lo que Asterisk lo asocia con su friend [200], así de fácil.
Ya te digo lo que he hecho, ni 200 ni 201 en sip.conf. Ambos se registran en Openser
No se tienen que registrar en Asterisk.
En extensions.conf he creado la contexto [entrantes-openser], donde tengo la extensión: exten => 201,1,Dial(SIP/201@IP_OPENSER)
No, quita lo de @OPENSER, no hace falta, con lo de arriba Asterisk piensan que son usuarios suyos y que están en la IP de OpenSer:
exten => 201,1,Dial(SIP/201)
Y otra cosa, al poner [usuario-openser] como type=peer...porque Asterisk se lo lleva al contexto [entrantes-openser]?? Si es un peer se supone que la llamada no debe entrar en el dialplan de Asterisk....y además, como sabe que es de Openser el INVITE que le llega para aceptarlo, por que en el host se le indica la IP? Por más que leo no veo la diferencia entre peer, friend, y user muy clara
Lo corrijo arriba, es "friend" y los friends se identifican en Asterisk por el From (o sea, 200, 201...) y si pones la IP además deben venir de dicha IP (la de OpenSer de donde llegarán todos los INVITE) para identificarlos con el friend de sip.conf.
-- Iñaki Baz Castillo ibc@in.ilimit.es
Users-es mailing list Users-es@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
_________________________________________________________________ Llama a tus amigos de PC a PC: ¡Es GRATIS! http://get.live.com/messenger/overview
Como haces el dial hacia el openser? SIP/201 con la configuración que te ha comentado Iñaki? Prueba a añadir fomsuer=201 en la 201 a ver si así tira..
Funciona con "username". Este lo utiliza para hacer la SIP URI en la cabecera INVITE
[200](usuario-openser) username=200
[201](usuario-openser) username=201
Ahora si pone la extensión en el INVITE.
Muchas gracias a todos!!! Espero que le sea útil a alguien :)
_________________________________________________________________ MSN Video. http://video.msn.com/?mkt=es-es
On Mon, Jul 7, 2008 at 12:03 PM, ZiLioN ZilLioN zili0n@hotmail.com wrote:
Funciona con "username". Este lo utiliza para hacer la SIP URI en la cabecera INVITE
[200](usuario-openser) username=200
[201](usuario-openser) username=201
Ahora si pone la extensión en el INVITE.
Muchas gracias a todos!!! Espero que le sea útil a alguien :)
Joder, no había caido, a mi me pasó lo mismo ;)
sr-users-es@lists.kamailio.org