viernes, 27 de julio de 2012

CDR de Asterisk a MS SQL via ODBC

Este es un pequeño resumen para instalar y configurar el driver en Linux para poder registrar las llamadas de Asterisk en la base de datos de un MS SQL


Primero vamos a instalar el los drivers para la conexion al SQL de Windows

# yum install freetds unixODBC -y

Luego de instalar el driver freetds lo agregamos a unixODBC, para ello editamos el archivo odbcinst.ini de la siguiente manera

# vim /etc/odbcinst.ini
...
[FreeTDS]
Description    = FreeTDS ODBC driver for MSSQL
Driver         = /usr/lib/libtdsodbc.so.0
Setup          = /usr/lib/libtdsS.so.1
FileUsage      = 1
...

Luego de esto configuramos el ODBC para la conexion del Asterisk a la base datos del SQL

# vim /etc/odbc.ini
...
[ODBC Data Sources]
MSSQL = MSSQL Log-Server for Asterisk


[MSSQL-asterisk2]
description         = Asterisk ODBC for MSSQL
driver              = FreeTDS
server              = 172.16.0.42
port                = 1433
database            = Central
tds_version         = 8.0
language            = us_english
...


Donde:
driver -> Es el driver freetds que se configuro en odbcinst.ini
server -> Es la direccion IP del servidor SQL
database -> La base de datos donde se almacenara los registros de las llamadas

Hacemos una prueba de conexion, para ello ejecuatmos lo siguiente:

# isql -v MSSQL-asterisk2 sa 1234567
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+


Datos:
sa -> usuario administrador de la base de datos
1234567 -> clave de sa

Listo, ahora en el archivo cdr_odbc.conf     del Asterisk configuramos de la siguiente manera

# vim cdr_odbc.conf
...
[global]
dsn=MSSQL-asterisk2
username=sa
password=1234567
loguniqueid=yes
dispositionstring=yes
table=cdr              ;"cdr" is default table name
usegmtime=no
...


Ahora en el servidor SQL debemos crear la base de datos Central con la tabla cdr, la estructura de la tabla es la siguiente

CREATE TABLE cdr (
                        [calldate]      [datetime]              NOT NULL ,
                        [clid]          [varchar] (80)          NOT NULL ,
                        [src]           [varchar] (80)          NOT NULL ,
                        [dst]           [varchar] (80)          NOT NULL ,
                        [dcontext]      [varchar] (80)          NOT NULL ,
                        [channel]       [varchar] (80)          NOT NULL ,
                        [dstchannel]    [varchar] (80)          NOT NULL ,
                        [lastapp]       [varchar] (80)          NOT NULL ,
                        [lastdata]      [varchar] (80)          NOT NULL ,
                        [duration]      [int]                   NOT NULL ,
                        [billsec]       [int]                   NOT NULL ,
                        [disposition]   [varchar] (45)          NOT NULL ,
                        [amaflags]      [int]                   NOT NULL ,
                        [accountcode]   [varchar] (20)          NOT NULL ,
                        [uniqueid]      [varchar] (150)         NOT NULL ,
                        [userfield]     [varchar] (255)         NOT NULL
                )

Listo con esto ya tendremos registrados en el SQL las llamadas de nuestra central Asterisk

2 comentarios:

  1. Buenas noches estimado consulta segui a pie sus instruccion ya que la veo coherente . Pero aun asi no me conecta a mi ms sql 2005 consulta al efectuar nmap en mi centos veo que la ip del windowd tiene 1433 pero yo solo tengo 3306 del mysql consulta necesito cambiar mi puerto mysql al 1433 o por este correra el odbc .
    Otra consulta si mi centos es de 64 supongo solo debo usar el driver de lib64 ok ?

    ResponderEliminar
  2. Buenas noches estimado consulta segui a pie sus instruccion ya que la veo coherente . Pero aun asi no me conecta a mi ms sql 2005 consulta al efectuar nmap en mi centos veo que la ip del windowd tiene 1433 pero yo solo tengo 3306 del mysql consulta necesito cambiar mi puerto mysql al 1433 o por este correra el odbc .
    Otra consulta si mi centos es de 64 supongo solo debo usar el driver de lib64 ok ?

    ResponderEliminar