1.必要なパッケージをインストールします(たとえば、Debian / Ubuntuに)
aptitude install unixodbc-dev libmyodbc
2.アスタリスクは、次のオプションでコンパイルする必要があります


3.次に、いくつかの設定ファイルを編集します
odbcコネクタが固まらない場合の小さなヒント何らかの理由でコネクタが固執しなくなり、アスターが地殻に落ちたシステムの1つでバグを見つけました。
コアは「アスタリスク-cvvvvvvvvgd」によって生成されました。
プログラムはシグナル8、算術例外で終了しました。
#0 0x00007ff4cc77a61b in sqlchar_as_sqlwchar()from /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
MySQLサイト
-dev.mysql.com/downloads/file/?id=461779から最新バージョンをダウンロードすることにしました
/ usr / lib / x86_64-linux-gnu / odbc /に解凍されたライブラリ
構成を少し調整しました
/etc/odbcinst.ini
[MySQL] Descripti driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmy5S.so CPTimeout = CPReuse =
/etc/asterisk/res_odbc.conf
[asterisk] enabled => yes dsn => MySQL-asterisk username => asterisk_user password => 232d2edxse3e
cdr_adaptive_odbc.conf
[cdr_adaptive_connection] connection=asterisk table=cdr alias start => calldate
/etc/odbc.ini
[MySQL-asterisk] Description = MySQL Asterisk database ;Trace = Off ;TraceFile = stderr Driver = MySQL Server = localhost User = asterisk_user Password = 232d2edxse3e ;Port = 3306 Socket = /var/run/mysqld/mysqld.sock Database = asterisk Charset = utf8
/etc/odbcinst.ini
[MySQL] Description = MySQL driver Driver = /usr/lib/odbc/libmyodbc.so Setup = /usr/lib/odbc/libodbcmyS.so CPTimeout = CPReuse =
* x64の場合
[MySQL] Description = MySQL driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so CPTimeout = CPReuse =
最後に
cdr_mysql.conf
加える
alias filename => filename
4. MYSQLでデータベースとcdrテーブルを作成する
mysql> create database asterisk; mysql> use asterisk; mysql> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL AUTO_INCREMENT, `calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `clid` varchar(80) NOT NULL DEFAULT '', `src` varchar(80) NOT NULL DEFAULT '', `dst` varchar(80) NOT NULL DEFAULT '', `dcontext` varchar(80) NOT NULL DEFAULT '', `channel` varchar(80) NOT NULL DEFAULT '', `dstchannel` varchar(80) NOT NULL DEFAULT '', `lastapp` varchar(80) NOT NULL DEFAULT '', `lastdata` varchar(80) NOT NULL DEFAULT '', `duration` int(11) NOT NULL DEFAULT '0', `billsec` int(11) NOT NULL DEFAULT '0', `disposition` varchar(45) NOT NULL DEFAULT '', `amaflags` int(11) NOT NULL DEFAULT '0', `accountcode` varchar(20) NOT NULL DEFAULT '', `uniqueid` varchar(32) NOT NULL DEFAULT '', `userfield` varchar(255) NOT NULL DEFAULT '', `filename` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; mysql> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '232d2edxse3e';
5.テーブルセル
mysql>CREATE TABLE `cel` ( `id` int(11) NOT NULL AUTO_INCREMENT, `eventtype` varchar(30) NOT NULL, `eventtime` datetime NOT NULL, `cid_name` varchar(80) NOT NULL, `cid_num` varchar(80) NOT NULL, `cid_ani` varchar(80) NOT NULL, `cid_rdnis` varchar(80) NOT NULL, `cid_dnid` varchar(80) NOT NULL, `exten` varchar(80) NOT NULL, `context` varchar(80) NOT NULL, `channame` varchar(80) NOT NULL, `src` varchar(80) DEFAULT NULL, `dst` varchar(80) DEFAULT NULL, `channel` varchar(80) DEFAULT NULL, `dstchannel` varchar(80) DEFAULT NULL, `appname` varchar(80) NOT NULL, `appdata` varchar(80) NOT NULL, `amaflags` int(11) NOT NULL, `accountcode` varchar(20) NOT NULL, `uniqueid` varchar(32) NOT NULL, `linkedid` varchar(32) NOT NULL, `peer` varchar(80) NOT NULL, `userdeftype` varchar(255) NOT NULL, `eventextra` varchar(255) DEFAULT NULL, `userfield` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uniqueid_index` (`uniqueid`), KEY `linkedid_index` (`linkedid`), KEY `eventtime` (`eventtime`), KEY `exten` (`exten`), KEY `eventtype` (`eventtype`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
6.ここで、queue_logラベルを作成します
mysql> CREATE TABLE IF NOT EXISTS `queue_log` ( id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, time timestamp NULL DEFAULT '0000-00-00 00:00:00', callid varchar(32) NOT NULL default '', queuename varchar(32) NOT NULL default '', agent varchar(32) NOT NULL default '', event varchar(32) NOT NULL default '', data1 varchar(100) NOT NULL default '', data2 varchar(100) NOT NULL default '', data3 varchar(100) NOT NULL default '', data4 varchar(100) NOT NULL default '', data5 varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> \q Bye
6.
/etc/asterisk/extconfig.conf
し
/etc/asterisk/extconfig.conf
/etc/asterisk/extconfig.conf
行
queue_log => odbc,asterisk
7.アスタリスクを再起動し、接続を確認します
*CLI> odbc show asterisk ODBC DSN Settings ----------------- Name: asterisk DSN: MySQL-asterisk Last connection attempt: 1970-01-01 07:00:00 Pooled: No Connected: Yes
8.データがデータベースにあるかどうかを呼び出して確認する価値もあります