[OpenSER-Users-ES] [OT] Desesperado con OpenSer + Asterisk Realtime + MWI [SOLUCIONADO]

Iñaki Baz Castillo ibc at aliax.net
Wed Jan 2 00:10:38 CET 2008


El Lunes, 31 de Diciembre de 2007, Iñaki Baz Castillo escribió:

> Ala, en mi último minuto laboral del 2007 lo he conseguido:
>
> - OpenSer multidominio
> - Asterisk como servidor de voicemail en BD y RealTime para usuarios SIP.
> - Voicemail con MWI multidominio.
>
> Para esto último he tenido que pelearme con el módulo UAC para modificar el
> Fromusername cuando el INVITE llega al Asterisk:
>
>   ibc at dominio.com  -->   ibc_dominio.com at dominio.com
>
> La vista de la tabla de usuarios SIP la he hecho con este detalle:
>
>   CREATE VIEW asterisk_sip_users AS
>   SELECT CONCAT(username,'_',domain) as name,
>       CONCAT(username,'_',domain) as username,
>       CONCAT(username,'@',domain) as mailbox,
>       ...
>
> De tal forma que el username que Asterisk ve en la vista es:
>   ibc_dominio.com at dominio.com
>
> Cuando llega una consulta o se deja un mensaje en un buzón de voz en
> OpenSer cambio el From para que Asterisk lo identifique y genere el NOTIFY
> tal que así:
>
>    NOTIFY sip:ibc_dominio.com at dominio.com SIP/2.0
>
> y cuando ese NOTIFY llega a OpenSer cambio el RURI antes de hacer
> el "lookup(location)" y lo dejo normal:
>
>   ibc at dominio.org
>
>
> Así se elimina el problema de dos usuarios con mismo username en Asterisk
> ya que si hago "sip show peers" veré:
>
>   ibc_dominio.com
>   ibc_otro_dominio.com
>
>


Bueno, hay una pequeña pega derivada del sistema Realtime de Asterisk:

Resulta que Asterisk sólo envía el NOTIFY MWI si el usuario está registrado 
**según su lista interna**, o sea, si sale listado al hacer "sip show peers".

Si un usuario llama a Asterisk encontes Asterisk hace la consulta SQL a la 
tabla (vista) de usuarios RealTime y en ese momento dicha entrada se añade a 
la lista interna de usuarios (a partir de ese momento ya podría recibir MWI).

Tengo puesto las opciones "rtcachefriends=yes" y "ignoreregexpire=yes", con lo 
que el problema desaparece para un determinado usuario en cuanto éste llama a 
Asterisk para lo que sea. Es decir, sólo es necesario que **cada** usuario 
llame al menos una vez al Asterisk para recibir MWI.

El problema ocurre si se reinicia Asterisk (se vacía la lista interna de 
usuarios).

Traté de probar un parche que se supone carga todos los usuarios del Realtime 
en el aranque pero no lo logré. Tal vez me haga algún script que lance un 
INVITE o un OPTIONS a Asterisk por cada usuario de OpenSer (con su From 
correspondiente).

Lo malo es: si efectivamente logro que "sip show peers" muestre TODOS los 
usuarios, esa información está cacheada en Asterisk, en memoria. Si son mucho 
usuarios... ¿no podría ser un problema?


Saludos.







-- 
Iñaki Baz Castillo




More information about the Users-es mailing list