Enviado por admin el
La configuración de Asterisk en Realtime para las extensiones SIP, apoyándose a una base de datos MySQL, es muy parecida a la que ya vimos con ODBC. Primero creamos una base de datos y la tabla:
mysql –u root –psesamo
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 42504
Server version: 5.0.77-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database siprealtime;
Query OK, 1 row affected (0.01 sec)
mysql> use siprealtime
Database changed
mysql> CREATE TABLE `sipfriends` (
`name` varchar(40) NOT NULL default ' ',
`type` varchar(10) NOT NULL default ' ',
`defaultuser` varchar(40) default NULL,
`fromuser` varchar(40) default NULL,
`fromdomain` varchar(40) default NULL,
`secret` varchar(40) default NULL,
`md5secret` varchar(40) default NULL,
`auth` varchar(10) default NULL,
`mailbox` varchar(20) default NULL,
`subscribemwi` varchar(10) default NULL,
`vmexten` varchar(20) default NULL,
`callerid` varchar(40) default NULL,
`cid_number` varchar(40) default NULL,
`callingpres` varchar(20) default NULL,
`usereqphone` varchar(10) default NULL,
`language` varchar(10) default NULL,
`incominglimit` varchar(10) default NULL,
`context` varchar(40) NOT NULL default ' ',
`subscribecontext` varchar(40) default NULL,
`amaflags` varchar(20) default NULL,
`accountcode` varchar(20) default NULL,
`musicclass` varchar(20) default NULL,
`mohsuggest` varchar(20) default NULL,
`allowtransfer` varchar(20) default NULL,
`callgroup` varchar(20) default NULL,
`pickupgroup` varchar(20) default NULL,
`autoframing` varchar(10) default NULL,
`disallow` varchar(20) default 'all',
`allow` varchar(20) default NULL,
`maxcallbitrate` varchar(15) default NULL,
`host` varchar(40) default 'dynamic',
`outboundproxy` varchar(40) default NULL,
`ipaddr` varchar(20) NOT NULL default ' ',
`defaultip` varchar(20) NOT NULL default '0.0.0.0',
`port` int(6) NOT NULL default '0',
`fullcontact` varchar(60) default NULL,
`insecure` varchar(20) default NULL,
`qualify` varchar(15) default NULL,
`regseconds` int(11) NOT NULL default '0',
`regexten` varchar(20) default NULL,
`regserver` varchar(20) default NULL,
`rtptimeout` varchar(15) default NULL,
`rtpholdtimeout` varchar(15) default NULL,
`rtpkeepalive` varchar(15) default NULL,
`lastms` int(11) NOT NULL default '-1',
`setvar` varchar(200) default NULL,
`Nat` varchar(3) NOT NULL,
`useragent` varchar(40) default NULL,
`Directmedia` varchar(3) default 'no',
`Deny` varchar(31) default '',
`Permit` varchar(31) default NULL,
PRIMARY KEY (`name`),
KEY `host` (`host`,`port`),
KEY `ipaddr` (`ipaddr`,`port`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.01 sec)
Damos al usuario asterisk los permisos para la base de datos creada (desde local y desde remoto)
mysql> GRANT ALL PRIVILEGES ON siprealtime.* TO 'asterisk'@'localhost' IDENTIFIED BY 'sesamo';
Query OK, 0 rows affected (0.07 sec)
mysql> GRANT ALL PRIVILEGES ON siprealtime.* TO 'asterisk'@'%' IDENTIFIED BY 'sesamo';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
Modificamos el archivo res_mysql.conf
nano /etc/asterisk/res_mysql.conf
Modificamos estas líneas:
[general]
;dbhost = 127.0.0.1
;dbname = asterisk
;dbuser = myuser
;dbpass = mypass
;dbport = 3306
;dbsock = /tmp/mysql.sock
Para que queden:
[general]
dbhost = 127.0.0.1
dbname = siprealtime
dbuser = asterisk
dbpass = sesamo
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
Por ultimo modificamos el archivo de configuración de Asterisk para el Realtime:
nano /etc/asterisk/extconfig.conf
Cambiamos estas dos líneas:
;sipusers => odbc,asterisk
;sippeers => odbc,asterisk
Para que queden:
sipusers => mysql,general,sipfriends
sippeers => mysql,general,sipfriends
Recargamos la configuración de Asterisk y averiguamos que todo esté bien:
/etc/init.d/asterisk reload
asterisk –rvvvvvvvvvvvv
CLI> realtime mysql status
general connected to siprealtime@127.0.0.1, port 3306 with username asterisk for 58 seconds.
Ahora podemos configurar nuestra primera extensión (1850) en la tabla sipfriends (utilizando el mismo procedimiento visto en el articulo anterior) y averiguar que la extensión esté disponible:
CLI> sip show peer 1850 load
El resultado será:
* Name : 1850
Realtime peer: Yes, cached
Secret : <Set>
MD5Secret : <Not set>
Remote Secret: <Not set>
Context : phones
Subscr.Cont. : subscribe
Language : es
AMA flags : Unknown
Transfer mode: open
CallingPres : Presentation Allowed, Not Screened
FromUser : 1850
Callgroup : 1
Pickupgroup : 1
Mailbox : 1850@default
VM Extension : asterisk
LastMsgsSent : 32767/65535
Call limit : 2147483647
Dynamic : No
Callerid : "Prueba Realtime" <1850>
MaxCallBR : 384 kbps
Expire : -1
Insecure : no
Nat : Always
ACL : No
T.38 support : Yes
T.38 EC mode : FEC
T.38 MaxDtgrm: 400
DirectMedia : No
PromiscRedir : No
User=Phone : No
Video Support: Yes
Text Support : Yes
Ign SDP ver : No
Trust RPID : No
Send RPID : No
Subscriptions: Yes
Overlap dial : No
Forward Loop : Yes
DTMFmode : rfc2833
Timer T1 : 500
Timer B : 32000
ToHost :
Addr->IP : (Unspecified) Port 5060
Defaddr->IP : 0.0.0.0 Port 5060
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username: 1850
SIP Options : (none)
Codecs : 0xc (ulaw|alaw)
Codec Order : (alaw:20,ulaw:20)
Auto-Framing : No
100 on REG : Yes
Status : Unmonitored
Useragent :
Reg. Contact :
Qualify Freq : 60000 ms
Sess-Timers : Accept
Sess-Refresh : uas
Sess-Expires : 1800 secs
Min-Sess : 90 secs
Parkinglot :
Nos conectamos con X-lite:
Ya tenemos SIP en realtime con MySQL
8 comentarios
no encuentro el archivo mysql.sock
Enviado por Chelo (no verificado) el
Hola esta excelente el articulo, solo quería plantearte un problema que tuve, antes que nada quería comentarte que tengo instalado asterisk en Ubuntu 10.10, la versión 1.6.2.18, el motor de base de datos mysql lo instale con el paquete completo de LAMP a traves de la heramienta tasksel, bueno el problema en si es que el archivo mysql.sock no existe en ninguna parte, intente buscandolo con el buscador de archivos de gnome y con poniendo en la consola find / | grep sock o intente con find / | grep mysql.sock y nada el archivo no existe! no se si hay alguna manera de generarlo, y no se si desintalando mysql y volver a instalarlo va a solucionar el problema, que me recomiendas hacer en este caso? , desde ya muchas gracias
Re: no encuentro el archivo mysql.sock
Enviado por admin el
Hola Chelo,
intenta comentar directamente la linea:
dbsock = /var/lib/mysql/mysql.sock
de esta forma:
;dbsock = /var/lib/mysql/mysql.sock
y mira si te funciona.
Saludos
a pesar de encontrar el archivo aun no me funciona
Enviado por Chelo (no verificado) el
Hola ! a pesar de encontrar el archivo aun no me funciona, asi que voy a probar como me dices, muchas gracias, luego te comento
no encuentro el archivo mysql.sock
Enviado por Chelo (no verificado) el
Solucione el problema!, si quieren encontrar el archivo mysql.sock deben buscar la ruta correcta en el archivo my.cnf que por lo general esta en etc/asterisk/ cuando se nstala asterisk en ubuntu, de todas maneras muchas gracias si se preocuparon por mi consulta :)
mysql me sigue dando error
Enviado por Chelo (no verificado) el
Hola que tal amigo, sigo teniendo problemas con mysql y no puedo encontrar la solución, ya intente de la manera que dijiste de que la linea
;dbsock = /var/run/mysqld/mysqld.sock
La coloque como comentada pero en la consola de asterisk me sigue mostrando el siguiente mensaje una y otra vez:
[May 2 17:23:07] WARNING[2597]: config.c:2018 find_engine: Realtime mapping for 'sippeers' found to engine 'mysql', but the engine is not available
te paso antes esto ? sabes cual podria ser una solucion ?
desde ya muchas gracias!
No encuentra la extension 1850
Enviado por kaozz el
Buenas tardes:
Desde hace unas semanas, he seguido este blog, la verdad que es uno de los mejores para los que nos inicamos en Asterisk y Linux, bien pasemos al punto.
Realice cuidadosa mente las instrucciones que mencionas, me conecto sin problema desde asterisk a mysql, cree la base de datos, el usuario, modifique los archivos correspondientes
Ejecutar la sentencia realtime mysql status desde el CLI>
general connected to pbx@127.0.0.1, port 3306 with username asterisk for 17 minutes.
tambien realice el registro de la extension 1850 desde webmin, pero al ejecutar la sentencia sip show peer 1850 load
la salida que me muestra es la siguiente
Peer 1850 not found.
y cuando trato de registrarme desde el softphon (3CX) esto es lo que me muestra la consolo
[Nov 8 14:39:58] NOTICE[3129]: chan_sip.c:24331 handle_request_register: Registration from '"1850"<sip:1850@192.168.10.4:5060>' failed for '192.168.10.3:61937' - No matching peer found
Tengo instalado en CentOS 6 la version 1.8.7.1 de Asterisk y la version 5.5 de mysql
Cual podra ser la razon por la que no logro conectarme al mi PBX??
Saludos y gracias por tu tiempo
Re: No encuentra la extension 1850
Enviado por admin el
Hola,
revisa la tabla de la base de datos. A veces en el campo Name antes de 1850 se crea un espacio y es por eso que Asterisk no encuentra la extensión.
Te agradezco que cuando encuentres la solución escribas un comentario para que sirva a los demás.
Saludos
Solucionado
Enviado por kaozz el
Buenas tardes:
Gracias por tu pronta respuesta, en efecto verifique lo del espacio en el campo nombre y lo elimine, con eso ya puedo trabajar con la extension 1850
saludos