Hola, trato de habilitar el MWI en Asterisk para usuarios multidominio de
OpenSer. He probado prácticamente todo lo que he leído sobre el tema.
Ahora mismo tengo los usuarios SIP de Asterisk en RealTime con ODBC buscando
en una vista de la tabla "subscriber".
La conexión BD funciona perfectamente desde Asterisk. Tengo
el "rtcachefriends=yes" por lo que si Asterisk recibe un REGISTER, lo
comprueba en la tabla y luego lo añade a su lista "interna" (vamos, que
aparece en "sip show peers").
Pero claro, la cosa es que Asterisk **no** va a recibir ningún REGISTER,
aunque como me estoy volviendo loco de probar cosas se me estaba ocurriendo
usar "t_replicate" cuando llega un REGISTER a OpenSer, pero... no es
necesario **en absoluto**, ¿verdad?
- Entonces resulta que **nunca** voy a ver los usuarios de OpenSer al hacer
un "sip show peers" ya que nunca llegará un REGISTER. He probado un patch que
se supone consulta la BD al arrancar Asterisk pero no funciona (lo he probado
en la versión trunk modificando alguna cosilla pero nada):
http://www.google.es/search?q=i+cannot+take+any+responsability+if+your+comp…
* Entonces mi primera pregunta es: ¿Necesito que un "sip show peers" muestre
los usuarios de la BD de OpenSer para poder recibir el MWI?
Yo creo que sí, pues según entiendo Asterisk sólo envía el NOTIFY de MWI
cuando un usuario **registrado** efectúa una llamada, o bien cuando su buzón
de voz recibe un mensaje, y Asterisk sabe que un usuario está registrado de
acuerdo a su "database" (astdb), y "CLI> database show" no muestra ningún
usuario RealTime".
Otro punto es: yo tengo un OpenSer en multidominio y Asterisk este concepto se
lo pasa por el ***** ** *** *******. Para Asterisk 200@dominioA es lo mismo
que 200@dominioB y seguro tendré problemas con las notificaciones. En ese
caso ya me pelearé haciendo alguna ñapa con la URI en OpenSer para "engañar"
a Asterisk. Pero de momento necesito saber cómo hacer que se genere el NOTIFY
de MWI.
En fin, ¿alguna pista?
Lo de currarme un script externo que sea llamado con "externotify" para
generar el MWI me parece demasiado artesanal. ¿Hay algún otro método en
http://www.voip-info.org/wiki/view/Asterisk+at+large
que deba ser empleado para mi propósito?
PD: Estoy probando con Asterisk trunk y Asterisk 1.2.16.
Gracias por cualquier ayuda, estoy dándole vueltas al tema varios días y me va
a dar algo.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es
Hola, se me estaba ocurriendo que de cara a un sistema multi-lenguaje,
cada subscriptor de OpenSer podría tener un campo extra "idioma" con
los valores "es, eu, ca, en...".
Entonces, en llamadas para comprobar el buzón u otros servicios,
OpenSer podría añadir (si no existe) la cabecera:
Accept-Language: XX
con el valor asignado a dicho subscriptor de tal forma que ese INVITE
llega posteriormente a un Asterisk (u otro servidor) que analiza la
cabecera y selecciona el idioma en base a ella.
Así mismo, esto también tendría utilidad para no subscriptores (por
ejemplo si les rediriges a un buzón), pero claro, esto sólo tendría
cabida si quien llama ya incluye dicha cabecera.
Por ello me preguntaba si realmente los dispositivos SIP comunes hacen
uso de esta cabecera. ¿Experiencias en este tema? Yo por mi parte he
hecho un "grep" y sólo he hallado dicha cabecera en llamadas desde el
softphone OpenWengo :(
Saludos y feliz navidad.
--
Iñaki Baz Castillo
<ibc(a)aliax.net>
Hola chicos.
Estoy empezando con las pruebas de OpenSer y me he encontrado el primer
problema de instalación. Pese a que he cambiado el usuario y password tanto
en el archivo openserctlrc como al crear la base de datos, al usar el
módulo auth sigue intentando acceder con el usuario y password por defecto.
Sabeis donde se guarda esto:
db_init: Connection 'mysql://openserro:openserro@localhost/openser' not
found in pool
A ver si avanzo que estoy un poco paradita...
--
:P
Sílvia
El Monday 17 December 2007 13:40:27 escribió:
> Pregunté sobre porqué no veo todos los INVITES/BYE en el accounting de
> openser y me dijiste que era por el "loose routing". Pero en mi config
> tengo el loose desactivado, te refieres a ésto? ya está en el openser.cfg
>
>
> if (!method=="REGISTER")
> record_route();
>
> if (loose_route()) {
> append_hf("P-hint: rr-enforced\r\n");
> route(1);
> };
Lo primero tendrías que comprobar que efectivamente los BYE pasan por OpenSer.
Para ello sencillamente monitoriza con ngrep o similar.
En caso de que sí que pasen pero no se reflejen en el acc entonces se debe a
algún fallo en el script (lo siento, no he tocado aún muy a fondo el
módulo "acc").
No obstante supongo que eres consciente de la "debilidad" del accounting en
OpenSer en cuanto a que es un proxy SIP. O sea, si un cliente muere durante
un diálogo no enviará un BYE así que tendrás un registro "raro" en la
tabla "acc".
Y si me dices que al otro lado tienes Asterisk pues más de lo mismo. Que yo
haya constatado Asterisk no se esfuerza mucho en enviar un BYE si termina
bruscamente un canal, luego en ese punto confianza poca.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es
Hola, estoy empezando a leer la doc de SipServlets [1] y me he atascado en un
ejemplo muy chulo, el de "Call Schedule on Busy or No Answer".
El punto 11 no lo entiendo:
11. The service sends a SIP SUBSCRIBE request to Bob’s SIP UA. This will
allow the service to know when Bob becomes available again.
12. Bob’s UA accepts the subscription.
El asunto es que el servidor de aplicaciones previamente, haciendo de B2BUA
(aunque entiendo que no es necesario en este caso), había recibido un 486 del
destino y lo había transformado en 302 para ofrecer al llamante la historia
del formulario web y tal.
Entonces dice que el servidor de aplicaciones envía un SUBSCRIBE para recibir
un NOTIFY del llamado cuando éste vuelva a estar disponible.
Me gustaría entender la naturaleza de este SUBSCRIBE ya que el tema de la
presencia SIMPLE no está, que yo sepa, nada ligado a la disponibilidad de
atender una llamada (depende de la implementación de cada UAS).
Es decir, que un teléfono no tenga líneas disponibles (o
tenga "CallWaiting=no") no implica que cuando vuelva a estar disponible
publique un nuevo estado de presencia.
De hecho, lo único que he visto que se le medio-parece es el XLite/Eyebeam que
envía un PUBLISH ("online/offline" - "On the phone") cuando está en una
llamada y al acaba dicha llamada envía un nuevo PUBLISH sin el "On the
phone". Pero esto ni siquiera implica que no pueda aceptar llamadas en ese
estado (CallWaiting=yes). En cualquier caso el servidor de aplicaciones sólo
genera el SUBSCRIBE si había recibido 486 así que en este punto no hay
problema.
Mi gran duda es: ¿se puede enviar un SUBSCRIBE a **cualquier** tfno SIP (los
clásicos Linksys, Thomson, Snom, softphones...) y que dicho tfno envíe un
NOTIFY cuando acepte llamadas? ¿Cómo es el "Event" de ese SUBSCRIBE?
He comprobado que muchos tfnos tienen un "Allow: [...] SUBSCRIBE", pero
pensaba que era para el tema del REFER (notificación del resultado de la
transferencia) no para el caso que comento.
Gracias por cualquier aclaración sobre esto y un saludo.
PD: No viene al caso, pero ahora que me fijo el "Allow" de un Linksys PAP2 no
tiene SUBSCRIBE:
User-Agent: Linksys/PAP2-2.0.12(LS).
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Sin embargo el REFER funciona perfectamente y esas cosas ¿?¿? (me tendré que
leer de nuevo la teoría por si se me ha escapado algo).
[1] http://www.wesip.com/mediawiki/API/sipservlet-1.0-fcs.pdf
--
Iñaki Baz Castillo
Hola, suponiendo este ejemplo:
[PSTN_SIP gateway] <--> [OpenSer] <--> [softphones]
- Imaginemos que vía el gateway recibo una llamada desde la PSTN que OpenSer
mapea al softphone_1(a)domain.org.
- Ahora resulta que softphone_1 quiere transferir la llamada a softphone_2.
Entonces envía un REFER al gateway.
- Y ya tengo entendido que es posible que el gateway acepte ese REFER y genere
un INVITE a softphone_2.
Pero ahora imagino otro caso:
- softphone_1 quiere transferir la llamada a un móvil luego envía un REFER al
gateway indicando:
Refer-to: sip:666555444@domain.org
- Entonces igualmente el gateway generará un INVITE que por resolución de
dominio llegará a mi OpenSer el cual permite llamadas desde la IP del gateway
a cualquier destino.
- El INVITE llegará de nuevo al gateway (espiral SIP) pero con distinto RURI.
Vamos, que ahora que lo veo ambos son el mismo caso y si uno funciona el otro
también debería (salvo que el gateway no detecte las espirales SIP y las
rechace como "Loop Back" como hace Asterisk).
En cualquier caso, no veo esto nada fiable. Algo me dice que debe haber un
B2BUA en medio y que sea el el que se coma el REFER en vez del gateway, ¿es
así?
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es
Hola como están, este es mi primer post en la lista espero que me puedan
orientar por favor, al grano. He implementado TLS entre 2 proxys openser
además de usar softphone con soporte TLS como es el eyebeam, el esquema es
el sgte:
softphone <-> opensert tls:5061 <-> opensert tls:5061 <-> softphone
al realizar capturas en cada proxy me he dado cuenta que al realizar el
Handshake TLS entre los proxys el puerto utilizado por el proxy que "inicia"
esta negociación no utiliza el puerto 5061, se ve algo como esto:
(4565) proxy ---------Client Hello---------------> (5061) proxy
además sigue utilizando este puerto 4565 durante toda la negociación, la
pregunta es: Esto se debe a una característica de funcionamiento de los
openser ?, ya que cuando la llamada la hago desde el otro softphone el
puerto que utiliza el otro proxy es el 42623.
Cabe señalar que existe conectividad-TLS entre los softphone al realizar la
llamada entre los proxys.
Sin mas que decir y esperando su ayuda me despido, desde ya gracias.
Hola, antes si se hacía un CPL así:
<cpl>
<incoming>
<lookup source="registration">
<success>
<proxy />
</success>
</lookup>
</incoming>
</cpl>
La pega que había era que durante la búsqueda del contacto registrado no se
leían los bflags y que además se perdía el control del paquete ya que se
lo "comía" enterito el módulo CPL.
Pero ahora se puede poner:
# route de salida desde el CPL (pasa cada posible branch por separado).
modparam("cpl-c","proxy_route", 10)
y en route[10] especificar el onreply_route y branch_route y tal por lo que ya
no se pierde nada.
Además, se acaba de corregir en el trunk un problemilla ya que no se leían las
bflags durante el <lookup source="registration">:
https://sourceforge.net/tracker/index.php?func=detail&aid=1838564&group_id=…
Así que ya no veo necesidad de hacer un loop ni nada por el estilo. Pero por
si acaso: ¿alguna otra pega que se me escape originada por usar <lookup
source="registration">?
Mil gracias.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es
Hola como estan, hace algun tiempo escribi que no me puedo conectar a mi servidor OpenSER desde un cliente.
he instalado Openser en suse linux 10.2 estos son los pasos que he seguido:
1. Instalar MySQL(ademas de los paquetes mysql-client, mysql_share ya que segun lei este ultimo en Suse 10.2 contiene el libmysqlclient que piden como requisito para que funcione Openser con mysql)
2. Requisitos
· gcc>= 2.9.x
· bison
· flex
·
3. #tar xfvz openser-1.2.0-notls-src.tar.gz
#cd openser-1.2.0-notls-src
Para habilitar el soporte de MySQL editar el fichero Makefile
y eliminar “mysql” , dejándolo asi:
Exclude_modules?= jabber cpl-c pa postgres osp unixodbc \
avp_radius auth_radius group_radius uri_radius xmpp \
pua pua_mi pua_usrloc \
mi_xmlrpc perl snmpstats
luego compilar Compilar
#make prefix=/
#make prefix=/ include_modules=”mysql presence” modules
#make prefix=/ install
4. Crear la base de datos “openser”
#openser_mysql.sh create
sin el SERWEB
5. Agregar cuentas de usuario
#openserctl add 200 1234 mv.arturo(a)hotmail.com
posteriormente me he conectado a mi servidor openser desde el mismo servidor con x-lite y twinkle y puedo conectarme normal, incluso realizar llamadas entre estos dos usuarios. pero cuando empiezo a conectarme desde una PC diferente de mi servidor en mi red local, no puedo conectarme. he monitoreado el trafico de los mensajes SIP con la herramienta ngrep alli puedo ver que los mensaje SIP llegan a mi servidor, pero el archivo openser.cfg no se ejecuta para nada, en cambio cuando realizo pruebas desde el mismo servidor con ambos clientes x-lite y twinkle el archivo openser.cfg si se ejecuta y puedo ver los mensajes de autenticacion y otros mensajes que pongo dentro de openser.cfg.
la pregunta es si me falta alguna libreria ademas de las que he instalado , si alguien haya tenido experiencia con openser en suse linux.
Gracias
l
_________________________________________________________________
Connect to the next generation of MSN Messenger
http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=…
como estan. solo para consultar si alguien tiene experiencia de OpenSER en SUSE 10.2 , tengo algunos errores si me puedan ayudar. Gracias
Saludos
Arturo
_________________________________________________________________
News, entertainment and everything you care about at Live.com. Get it now!
http://www.live.com/getstarted.aspx