Vamos a ver como configurar el odbc para que Asterisk lo utilice como conector a la tabla cdr de la base de datos MySQL. En este caso, el Asterisk está instalado en un BeagleBone Black comprado antes de que empezaran a escasear. La distro instalada es la de Asterisk for BeagleBone Black (un Ubuntu).
apt-get install -y unixodbc unixodbc-dev libmyodbc
# cat /etc/odbc.ini
[MySQL-asteriskcdrdb]
Description = MySQL connection to 'asterisk' database
Driver = MySQL
Database = asteriskcdrdb
Server = localhost
UserName = asteriskuser
Password = rasp_amp
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
Donde está el Driver MySQL?
# find / -name 'libmyodbc.so'
# find / -name 'libodbcmyS.so'
# cat /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/arm-linux-gnueabihf/odbc/libmyodbc.so
Setup = /usr/lib/arm-linux-gnueabihf/odbc/libodbcmyS.so
FileUsage = 1
# cat /etc/asterisk/cdr_odbc.conf
;
; cdr_odbc.conf
;
[global]
dsn=asteriskcdrdb
loguniqueid=yes
dispositionstring=yes
table=cdr
usegmtime=no
hrtime=yes
# cat /etc/asterisk/res_odbc_additional.conf
;--------------------------------------------------------------------------------;
; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;
; this file must be done via the web gui. There are alternative files to make ;
; custom modifications, details at: http://freepbx.org/configuration_files ;
;--------------------------------------------------------------------------------;
;
[asteriskcdrdb]
enabled => yes
dsn => MySQL-asteriskcdrdb
pre-connect => yes
username => asteriskuser
password => rasp_amp
# isql -v MySQL-asteriskcdrdb asteriskuser rasp_amp
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
SQL> select * from cdr limit 1
---------
SQLRowCount returns 1
1 rows fetched
Agregar estas líneas al final del archivo /etc/asterisk/modules.conf
noload => cdr_mysql.so
noload => cdr_csv.so
noload => cdr_custom.so