Without even being told, Asterisk assumes that you want to store CDR information. Quite a smart machine, yes?
By default, Asterisk will create a CSV [*] file and place it in the folder /var/log/asterisk/cdr-csv/ . To the naked eye, this file looks like a bit of a mess. If, however, you separate each line according to the commas, you will find that each line contains information about a particular call, and that the commas separate the following values:
[*] A Comma Separated Values (CSV) file is a common method of formatting database-type information in a text file. You can open CSV files with a text editor, but most spreadsheet and database programs will also read them and properly parse them into rows and columns .
Assigned if the application SetAccount( ) is used, or if configured for the channel in the channel configuration file (i.e., sip.conf ). The account code is assigned on a per-channel basis.
Received Caller*ID (string, 80 characters ).
Caller*ID with text (80 characters).
Channel used (80 characters).
Destination channel, if appropriate (80 characters).
Last application, if appropriate (80 characters).
Last application data (arguments, 80 characters).
Start of call (date/time).
Answer of call (date/time).
End of call (date/time).
Total time in system, in seconds (integer), from dial to hangup.
Total time call is up, in seconds (integer), from answer to hangup.
What happened to the call ( ANSWERED , NO ANSWER , BUSY ).
What flags to use ( DOCUMENTATION , BILL , IGNORE , etc.), specified on a per-channel basis, like accountcode . AMA flags stand for Automated Message Accounting flags, which are somewhat standard (supposedly) in the industry.
A user -defined field, maximum 255 characters.
Storing CDRs in a Database
CDRs can also be stored in a database. Asterisk currently supports SQLite, PostGreSQL, MySQL, and unixODBC. The configuration details for these databases will not be covered in this book, but they are outlined in the Asterisk source code, under the doc/ subdirectory. (For licensing reasons, cdr_mysql is in asterisk-addons .) Many people prefer to store their CDRs in a database because this makes it easier to query them for specific information, such as billing or toll fraud. We can use the CDR applications to manipulate the current CDR from the dialplan (adding information to the custom field, for example).
While Asterisk will happily store information about any calls that pass through it, it cannot store information it is not given. For example, if you have SIP devices that are allowed to reinvite, once Asterisk has finished setting up the calls, the devices will no longer need its assistance. Whether or not those devices subsequently report call detail information back to it is something Asterisk is unable to control. If CDRs are important, make sure your IP devices are not allowed to reinvite. [*]
[*] Reinvites can be turned off in sip.conf with canreinvite=no . Similar functionality is controlled in iax.conf with notransfer=yes .