最後更新: 2015-07-23
目錄
基本設定
cdr.conf
- Setting
- Disable CSV
- cvs log example
cdr_mysql.conf
cdr_adaptive_odbc.conf
設定檔
Default: /var/log/asterisk/cdr.conf
Default: /var/log/asterisk/cdr-csv
查看 load 了什麼 modules
module show like cdr_
cdr_sqlite.so # without a way to rotate it
cdr_csv.so # in comma-separated text files
cdr_syslog.so
自動載入要的 module
/etc/asterisk/modules.conf
[modules] autoload=yes preload => res_odbc.so noload => pbx_gtkconsole.so load => cdr_csv.so
查看設定
server*CLI> cdr show status
Call Detail Record (CDR) settings ---------------------------------- Logging: Enabled Mode: Simple Log unanswered calls: No * Registered Backends ------------------- radius csv cdr-custom Adaptive ODBC res_config_sqlite
cdr.conf
Setting
/etc/asterisk/cdr.conf
[general] enable=yes ; if you try to dial 3 extensions, you will get 3 CDR ; Calls which get offered to an outgoing line, but are unanswered, are still logged unanswered = yes ; report each call that fails to complete due to congestion conditions. congestion = yes ; Default is "no" usegmtime = yes
cvs log example
"","201","221","DLPN_all_user","""ivan"" <201>","SIP/201-00000011","SIP/221-00000012","Dial","SIP/221","2013-10-25 08:12:16","2013-10-25 08:12:36","2013-10-25 08:13:28",72,52,"ANSWERED","DOCUMENTATION","1382688736.154","" "","201","221","DLPN_all_user","""ivan"" <201>","SIP/201-00000013","SIP/221-00000014","Dial","SIP/221","2013-10-25 08:19:56","2013-10-25 08:20:11","2013-10-25 08:21:31",95,80,"ANSWERED","DOCUMENTATION","1382689196.198",""
意思:
accountcode: ""
src: "201"
dst: "221"
dst: "DLPN_all_user"
clid: """ivan"" <201>"
channel: "SIP/201-00000011"
dstchannel: "SIP/221-00000012"
lastapp: "Dial"
lastdata: "SIP/221"
start: "2013-10-25 08:12:16"
answer: "2013-10-25 08:12:36"
end: "2013-10-25 08:12:36"
duration(seconds): 72
billsec: 52
disposition(ANSWERED, NO ANSWER, BUSY, FAILED): ANSWERED
amaflags(DOCUMENTATION, BILL, IGNORE etc): DOCUMENTATION
* End Call 時才寫 log
Disable CSV
;[csv] ;usegmtime=yes ; log date/time in GMT. Default is "no" ;loguniqueid=yes ; log uniqueid. Default is "no" ;loguserfield=yes ; log user field. Default is "no" ;accountlogs=yes ; create separate log file for each account code. Default is "yes"
cdr_mysql.conf (已被廢棄的 )
/etc/asterisk/cdr_mysql.conf
[global]
hostname=localhost
dbname=asterisk
table=cdr
password=asterisk
user=asterisk
sock=/var/run/mysqld/mysqld.sock
timezone=UTC
charset=utf-8
[columns]
;static "<value>" => <column>
;alias <cdrvar> => <column>
alias start => calldate
;alias clid => <a_field_not_named_clid>
;alias src => <a_field_not_named_src>
;alias dst => <a_field_not_named_dst>
;alias dcontext => <a_field_not_named_dcontext>
;alias channel => <a_field_not_named_channel>
;alias dstchannel => <a_field_not_named_dstchannel>
;alias lastapp => <a_field_not_named_lastapp>
;alias lastdata => <a_field_not_named_lastdata>
;alias duration => <a_field_not_named_duration>
;alias billsec => <a_field_not_named_billsec>
;alias disposition => <a_field_not_named_disposition>
;alias amaflags => <a_field_not_named_amaflags>
;alias accountcode => <a_field_not_named_accountcode>
;alias userfield => <a_field_not_named_userfield>
;alias uniqueid => <a_field_not_named_uniqueid>
asterisk cdr mysql
Setting
;hostname=database.host.name ;dbname=asteriskcdrdb ;table=cdr ;password=password ;user=asteriskcdruser ;port=3306 ;sock=/tmp/mysql.sock ;timezone=UTC charset=koi8r [columns] ;alias src => <a_field_not_named_src> ;alias dst => <a_field_not_named_dst>
DB schema
CREATE TABLE cdr ( 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 '' );
cdr_adaptive_odbc.conf
* This module allows you to choose which columns of data built into Asterisk are stored in your table,
* permits you to add additional columns that you can populate with the CDR() dialplan function.
* You can even store different parts of CDR data to different tables and databases, if that is required.
CDR Contents
src
dst
channel
dstchannel
start
answer
end
duration
billsec # seconds between the answer and end
disposition # NO ANSWER, FAILED, BUSY, ANSWERED, or UNKNOWN.
uniqueid # The unique ID for the src channel.
update column "route_rate" on mysql
exten => _NXXNXXXXXX,1,Verbose(1,Example of adaptive ODBC usage)
same => n,Set(CDR(route_rate)=0.01)
same => n,Dial(SIP/my_itsp/${EXTEN})
same => n,Hangup()
+--------------+----------+---------+------------+ | src | duration | billsec | route_rate | +--------------+----------+---------+------------+ | 0000FFFF0008 | 37 | 30 | 0.01 | +--------------+----------+---------+------------+
ALTER TABLE
每次
sql> ALTER TABLE cdr ADD COLUMN route_rate varchar(10);
後都要
*CLI> module reload cdr_adaptive_odbc.so
Configure
; cdr_adaptive_odbc.conf [adaptive_connection] connection=asterisk table=cdr ;usegmtime=yes ; defaults to no alias start=calldate ;alias src => source ;alias channel => source_channel ;alias dst => dest ;alias dstchannel => dest_channel
Checking
cdr show active
# 在 call 中
Channels with Call Detail Record (CDR) Information -------------------------------------------------- Channel Dst. Channel LastApp Start Answer End Billsec Duration PJSIP/507-00000002 PJSIP/mytrunk_endpoint-00 Dial 13:04:05 13:04:16 00000000 00000011 PJSIP/mytrunk_endpoint-00 <none> AppDial 13:04:05 13:04:16 00000000 00000010
# 接聽了
Channels with Call Detail Record (CDR) Information -------------------------------------------------- Channel Dst. Channel LastApp Start Answer End Billsec Duration PJSIP/507-00000002 PJSIP/mytrunk_endpoint-00 Dial 13:04:05 13:04:29 13:04:31 00000001 00000026