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

Iñaki Baz Castillo ibc at aliax.net
Thu Jan 3 00:29:21 CET 2008


El Miércoles, 2 de Enero de 2008, Julian J. M. escribió:
> On Jan 2, 2008 10:20 PM, Iñaki Baz Castillo <ibc at aliax.net> wrote:
> > Lo malo es que, como decía en otro correo de este hilo, usando RealTime
> > la lista en memoria de peers está vacía al arrancar Asterisk, y éste sólo
> > va añadiendo peers a dicha lista cuando recibe un INVITE o REGISTER de
> > alguno de esos peers y debe hacer una consulta SQL a la tabla del
> > Realtime. En ese momento añade el peer a la lista interna.
> >
> > En mi caso, no tengo usuarios registrados en Asterisk, no se registran en
> > él sino en OpenSer, así que no llega ningún REGISTER y cada peer sólo se
> > añade a la lista cuando envía un INVITE a Asterisk (para consultar su
> > buzón por ejemplo).
> >
> > Es decir, que me tendré que currar algún script con sipsak o similares
> > que recorra la tabla de usuarios y envíe un OPTIONS o INVITE a Asterisk
> > al arrancar, para que todos los usuarios se añadan a la lista interna.
>
> Hombre, en mi opinión veo más fiable modificar el código para que
> consulte la tabla de la BD y genere del tirón todos los peers en la
> lista interna que guarda en memoria. De hecho, comentabas que había un
> parche pero que no funcionaba... Sería cuestión de echarle un ojo.

Cierto, lo haré.


> Lo que no sabría es como gestionar los cambios que se produzcan en la
> base de datos, ya que asterisk cachearía la información hasta el
> siguiente reload... Aunque bueno, aquí un cron que cada hora recargue
> la tabla no sería tan traumático ;)

No no, en realidad no  hay nada que hacer, la tabla de usuarios RealTime que 
ve Asterisk es una vista que no cambia nunca, es **completamente** estática y 
de hecho ni siquiera ataca a la tabla "location" donde OpenSer guarda los 
registros de los usuarios, sino que ataca a la tabla "subscriber" donde 
simplemente figuran los usuarios existentes.

En realidad es un engaño en toda regla a Asterisk, porque le dices que TODOS 
los usuarios están registrados en la IP de OpenSer, de tal forma que Asterisk 
no tiene ni idea de dónde están realmente registrados los usuarios y envía 
los mensajes a OpenSer. De hecho pego la creación de la vistadonde se ve 
claro lo que digo (fíjate en los campos "ipaddr" o "defaultip"):


CREATE VIEW asterisk_sip_users AS 
SELECT CONCAT(username,'_',domain) as name, 
  CONCAT(username,'_',domain) as username, 
  'friend' as type, 
  NULL as secret, 
  domain as host, 
  CONCAT(rpid, ' ','<',username,'>') as callerid, 
  'from_openser' as context, 
  CONCAT(username,'@',domain) as mailbox,
  'yes' as nat, 
  'no' as qualify, 
  username as fromuser, 
  NULL as authuser, 
  domain as fromdomain, 
  NULL as insecure, 
  'no' as canreinvite, 
  NULL as disallow, 
  NULL as allow, 
  NULL as restrictcid, 
  '__IP_OPENSER__' as defaultip, 
  '__IP_OPENSER__' as ipaddr, 
  '5060' as port, 
  NULL as regseconds 
FROM subscriber; 


Nota: en Voip-Info e incluso en los apuntes del Von de Roma del año pasado 
figuraba "domain as defaultip" y "domain as ipaddr".
Eso es un error ya que si se trata de un registro SRV Asterisk morirá al 
localizarlo (esos campos indican la IP donde un usuario está registrado, no 
su dominio).




> PD: Y perdón a todos por el offtopic ;) A ver si este 2008 me meto con
> Openser de una vez.

A ver si es verdad, que no participa mucha gente últimamente y aquí hay mucho 
que compartir ;)

Saludos.



-- 
Iñaki Baz Castillo




More information about the Users-es mailing list