Configurando extensiones SIP en real time
Octubre 14, 2008 Asterisk 1 CommentUna de las ventajas de Asterisk es la arquitectura realtime. Este sistema permite almacenar la configuración de nuestro Asterisk en una base de datos, en lugar de hacerlo en los archivos de configuración que tenemos en etc/asterisk. De esta forma Asterisk puede leer los archivos de configuración en tiempo real, en lugar de tener que hacerlo al cargar los módulos.
Lo bueno de esto es que podemos hacer modificaciones en la configuración sin tener que reiniciar Asterisk o recargar módulos. Hoy vamos a mostrar aquí como podemos introducir los clientes SIP en la base de datos de forma que podamos crearlos y modificarlos sobre la marcha.
Lo primero que tenemos que hacer es configurar el acceso a la base de datos, para ello editaremos el archivo res_mysql.conf y introduciremos los datos de conexión:
[general]
dbhost = 127.0.0.1 ;en caso de que Asterisk y mySQL compartan el mismo servidor.
dbname = nombre_bd
dbuser = usuario_bd
dbpass = pass_bd
dbport = 3306 ;puerto por defecto en mySQL
A continuación crearemos una tabla en la base de datos donde alojaremos la información de las cuentas SIP, os pego aquí el choricete SQL para ahorraros el trabajo:
CREATE TABLE `sip_buddies` (
`id` int(20) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default ”,
`host` varchar(31) NOT NULL default ‘dynamic’,
`callerid` varchar(80) default NULL,
`mailbox` varchar(50) default NULL,
`secret` varchar(80) default NULL,
`ipaddr` varchar(15) NOT NULL default ”,
`port` smallint(5) unsigned NOT NULL default ‘5060′,
`regseconds` int(11) NOT NULL default ‘0′,
`username` varchar(80) NOT NULL default ”,
`context` varchar(80) NOT NULL default ‘contexto_saliente’,
`fullcontact` varchar(80) NOT NULL,
`disallow` varchar(45) NOT NULL default ‘all’,
`allow` varchar(45) NOT NULL default ‘g729,gsm,ulaw,alaw,ilbc’,
`type` varchar(45) NOT NULL default ‘friend’,
`qualify` varchar(45) NOT NULL default ‘yes’,
`canreinvite` varchar(45) NOT NULL default ‘yes’,
`nat` varchar(45) NOT NULL default ‘yes’,
`dtmfmode` varchar(45) NOT NULL default ‘rfc2833′,
`record_out` varchar(45) NOT NULL default ‘Adhoc’,
`record_in` varchar(45) NOT NULL default ‘Adhoc’,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM;
Según las especificaciones del manual, podríamos declarar muchos mas campos en la tabla, pero con estos que hemos puesto es suficiente para nosotros.
NOTA: en “contexto” debemos poner el contexto que tengamos definido para llamadas salientes en nuestro dialplan.
Por último solo nos queda indicarle a Asterisk que la información SIP debe buscarla en la base de datos, en lugar de hacerlo en el archivo de configuración, sip.conf. Para esto editamos el archivo extconfig.conf e introduciremos las siguientes lineas:
sipusers => mysql,nombre_bd,sip_buddies
sippeers => mysql,nombre_bd,sip_buddies
Esto le indica que la información acerca de los sip users y los sip peers debe buscarla en el servidor mysql, en la base de datos nombre_bd, y en la tabla sip_buddies. Guardamos el archivo, reiniciamos Asterisk… y estamos preparados para empezar a registrar usuarios.
Desde ahora ya podemos meter nuestros usuarios SIP en tiempo real. Eso sí, hay que tener en cuenta que nuestro archivo sip.conf ya no sera cargado, por lo que si tenemos alguna configuración de usuarios aquí, debemos pasarla a la base de datos.
Ahora un caso práctico:
Llega a nuestra empresa el nuevo becario, al cual vamos a enmarronar con un monton de encuestas telefónicas. Necesita, claro está, que le creemos una cuenta SIP en asterisk. Los únicos campos requeridos serán name (su extension), callerid (su nombre genérico) y secret (password), así que directamente podemos introducir en MySQL:
INSERT INTO sip_buddies (name, callerid, secret) VALUES (105, ‘Becario Pringao’, 44322);
Ahora abrimos la configuración del softfone/telefono SIP, introducimos el usuario y la contraseña… ¡Y listo!
