Asterisk CDR SQLite

CDRをSQLite3で保存する方法

前提となるパッケージ

CentOSの場合、以下のパッケージが必要です。

sqlite
sqlite-devel

Asteriskの./configureを実行しなおしmake menuselectでCall Detailed Recordingのcdr_sqlite3_customが有効になっていることを確認し、モジュールのインストールを行ってください。

設定

ソースの./configsにcdr_sqlite3_costom.conf.sampleがあるので、それを参考に
cdr_sqlite3_custom.conf

[master] ; currently, only file "master.db" is supported, with only one table at a time.
table   => cdr
columns => calldate, clid, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield, test
values  => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration)}','${CDR(billsec)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(test)}'

現在のところDB名はmaster.dbです。テーブルは上のように設定しているのでcdrになります。

確認

sqlite3 /var/log/asterisk/master.db
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> select * from cdr;
1|2012-02-05 17:16:16|"201" <201>|default|SIP/201-00000000||MeetMe|300,M|1|1|ANSWERED|DOCUMENTATION||1328429776.0||
2|2012-02-05 17:19:47|"201" <201>|default|SIP/201-00000000||MeetMe|300,M|7|7|ANSWERED|DOCUMENTATION||1328429987.0||

こんな感じで記録されます。項目はmaster.csvなどと同じなので必要に応じて調整してください。