Uniendo SQLite con Asterisk

11:00 am Asterisk, Linux, Sistemas, Software Libre

En un artículo anterior, aprendimos a utilizar un poco por encima SQLite y a acceder a una BD de este tipo mediante unixODBC. En este artículo veremos como utilizar esto para acceder a una BD SQLite desde Asterisk.

Para poder acceder a una BD externa desde Asterisk mediante ODBC, necesitamos tener cargado el módulo res_odbc.so que se configura mediante el fichero /etc/asterisk/res_odbc.conf

Si hemos creado una entrada en /etc/odbc.ini con el nombre asteriskdb-sqlite, podemos usar esto poniendo otra entrada en el fichero res_odbc.conf tal que así:

[asteriskdb]
enabled => yes
dsn => asteriskdb-sqlite

A partir de aquí ya podemos empezar a usar desde Asterisk nuestra BD SQLite.

Como ejemplo, vamos a ver como enlazarla para ser usada desde el CDR y desde Realtime, para ello tenemos un fichero sql con las tablas necesarias preparadas para SQLite aquí.

Una vez creada la estructura de la base de datos, vamos a enlazar en primer lugar el CDR, para ello únicamente tenemos que editar el fichero /etc/asterisk/cdr_odbc.conf y añadir lo siguiente:

[global]
dsn=asteriskdb-sqlite
table=cdr

A partir de esto, los detalles de las llamadas de nuestra centralita se irán almacenando en la tabla cdr de nuestra base de datos SQLite.

Ahora, vamos a hacer que la configuración de usuarios SIP, conferencias, buzones de voz y colas de llamadas, estén en el resto de tablas que hemos creado en nuestra base de datos. Para ello, editaremos el fichero /etc/asterisk/extconfig.conf y lo dejaremos tal que así:

[settings]
sipusers => odbc,asteriskdb,sip_buddies
sippeers => odbc,asteriskdb,sip_buddies
voicemail => odbc,asteriskdb,voicemail_users
meetme => odbc,asteriskdb,meetme
queues => odbc,asteriskdb,queue_table
queue_members => odbc,asteriskdb,queue_member_table

Para probar que esto funciona, podemos añadir un usuario SIP a nuestra tabla:

sqlite> insert into sip_buddies(name,secret) values(’prueba’,'prueba’);

Y comprobamos que existe desde el CLI:

CLI> sip show peer prueba load

* Name : prueba
Realtime peer: No
Secret : <Set>
MD5Secret : <Not set>
Context : default
Subscr.Cont. : internal
Language : es
AMA flags : Unknown
Transfer mode: open
CallingPres : Presentation Allowed, Not Screened
Callgroup :
Pickupgroup :
Mailbox :
VM Extension : asterisk
LastMsgsSent : 32767/65535
Call limit : 0
Dynamic : No
Callerid : “” <>
MaxCallBR : 384 kbps
Expire : -1
Insecure : no
Nat : RFC3581
ACL : No
T38 pt UDPTL : No
CanReinvite : Yes
PromiscRedir : No
User=Phone : No
Video Support: No
Trust RPID : No
Send RPID : No
Subscriptions: Yes
Overlap dial : Yes
DTMFmode : rfc2833
LastMsg : 0
ToHost :
Addr->IP : (Unspecified) Port 0
Defaddr->IP : 0.0.0.0 Port 0
Def. Username:
SIP Options : (none)
Codecs : 0×3f1fff (g723|gsm|ulaw|alaw|g726|adpcm|slin|lpc10|g729|speex|ilbc|g726aal2|g722|jpeg|png|h261|h263|h263p|h264)
Codec Order : (none)
Auto-Framing: No
Status : UNKNOWN
Useragent :
Reg. Contact :

Y de momento esto es todo.

Deja tu comentario

Tu comentario

Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Advertencia: Está habilitada la moderación de comentarios y puede verse retrasada la publicación. No es necesario que reenvies tu comentario.