mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42735 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			121 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Asterisk billing support - Call Detail Records
 | |
| ----------------------------------------------
 | |
| Asterisk generates Call Detail Records in a database or in a comma
 | |
| separated text file. 
 | |
| 
 | |
|    * cdr_csv supports comma separated text file storage, this is the
 | |
|      default driver
 | |
|    * cdr_manager supports CDR information via the AMI, The Asterisk Manager
 | |
|      interface
 | |
|    * cdr_odbc supports UnixODBC databases, see http://www.unixodbc.org
 | |
|      for an updated list of supported databases, from MySQL to MsSQL
 | |
|      and text files.
 | |
|    * cdr_tds supports FreeTDS databases (Among them MS SQL)
 | |
| 	NOTE: Please read doc/freetds.txt for information on possible
 | |
| 	problems with the FreeTDS driver
 | |
|    * cdr_sqlite supports SQlite
 | |
|    * cdr_pgsql supports PostgreSQL
 | |
| 
 | |
| In the asterisk-addons subversion repository, there's a cdr_mysql driver for
 | |
| MySQL.
 | |
| 
 | |
| Applications
 | |
| ------------
 | |
| 
 | |
|     * SetAccount  		Set account code for billing
 | |
|     * SetAMAFlags 		Sets AMA flags
 | |
|     * NoCDR  			Make sure no CDR is saved for a specific call
 | |
|     * ResetCDR  		Reset CDR
 | |
|     * ForkCDR 			Save current CDR and start a new CDR for this call
 | |
|     * Authenticate 		Authenticates and sets the account code
 | |
|     * SetCDRUserField   	Set CDR user field
 | |
|     * AppendCDRUserField   	Append data to CDR User field 
 | |
| 
 | |
| For more information, use the "show application" command.
 | |
| You can set default account codes and AMA flags for devices in 
 | |
| channel configuration files, like sip.conf, iax.conf etc.
 | |
| 
 | |
| 
 | |
| Fields of the CDR in Asterisk
 | |
| -----------------------------
 | |
| 
 | |
|    1. accountcode:	What account number to use, (string, 20 characters)
 | |
|    2. src:		Caller*ID number (string, 80 characters)
 | |
|    3. dst:		Destination extension (string, 80 characters)
 | |
|    4. dcontext:		Destination context (string, 80 characters)
 | |
|    5. clid:		Caller*ID with text (80 characters)
 | |
|    6. channel:		Channel used (80 characters)
 | |
|    7. dstchannel:	Destination channel if appropriate (80 characters)
 | |
|    8. lastapp:		Last application if appropriate (80 characters)
 | |
|    9. lastdata:		Last application data (arguments) (80 characters)
 | |
|   10. start:		Start of call (date/time)
 | |
|   11. answer:		Answer of call (date/time)
 | |
|   12. end:		End of call (date/time)
 | |
|   13. duration:		Total time in system, in seconds (integer), from dial to hangup
 | |
|   14. billsec:		Total time call is up, in seconds (integer), from answer to hangup
 | |
|   15. disposition:	What happened to the call: ANSWERED, NO ANSWER, BUSY
 | |
|   16. amaflags:		What flags to use: DOCUMENTATION, BILL, IGNORE etc, 
 | |
|       			specified on a per channel basis like accountcode.
 | |
|   17. user field:	A user-defined field, maximum 255 characters 
 | |
| 
 | |
| In some cases, uniqueid is appended:
 | |
| 
 | |
|     * uniqueid:		Unique Channel Identifier (32 characters) 
 | |
|       This needs to be enabled in the source code at compile time
 | |
| 
 | |
| 
 | |
| ONE IMPORTANT NOTE: If you are trying to collect records on IAX to IAX calls
 | |
| you need to be aware that by default, IAX will attempt to transfer calls
 | |
| in this situation (if DTMF is not required).  When the transfer is completed
 | |
| the call is dumped from the middle machine and thus the call detail records
 | |
| will report a short call time.  If you want detailed records you must
 | |
| turn off IAX transfer, but unless your servers are very close together, you
 | |
| will definitely get a latency hit from doing so.
 | |
| 
 | |
| ____________________________________
 | |
| CDR Variables
 | |
| ------------------------------------
 | |
| 
 | |
| If the channel has a cdr, that cdr record has its own set of variables which 
 | |
| can be accessed just like channel variables. The following builtin variables
 | |
| are available.
 | |
| 
 | |
| ${CDR(clid)}			Caller ID
 | |
| ${CDR(src)}			Source 
 | |
| ${CDR(dst)}			Destination
 | |
| ${CDR(dcontext)}		Destination context
 | |
| ${CDR(channel)}			Channel name
 | |
| ${CDR(dstchannel)}		Destination channel
 | |
| ${CDR(lastapp)}			Last app executed
 | |
| ${CDR(lastdata)}		Last app's arguments
 | |
| ${CDR(start)}			Time the call started.
 | |
| ${CDR(answer)}			Time the call was answered.
 | |
| ${CDR(end)}			Time the call ended.
 | |
| ${CDR(duration)}		Duration of the call.
 | |
| ${CDR(billsec)}			Duration of the call once it was answered.
 | |
| ${CDR(disposition)}		ANSWERED, NO ANSWER, BUSY
 | |
| ${CDR(amaflags)}		DOCUMENTATION, BILL, IGNORE etc
 | |
| ${CDR(accountcode)}		The channel's account code.
 | |
| ${CDR(uniqueid)}		The channel's unique id.
 | |
| ${CDR(userfield)}		The channels uses specified field.
 | |
| 
 | |
| In addition, you can set your own extra variables by using Set(CDR(name)=value).
 | |
| 
 | |
| ______________________________
 | |
| cdr_csv2
 | |
| ------------------------------
 | |
| 
 | |
| This module is an experimental new cdr module to demonstrate the cdr vars.
 | |
| usage(
 | |
| 
 | |
| *) Create a file called cdr.conf and place it in your /etc/asterisk (or wherever your config files are) in the [cdr_csv2] section.
 | |
| *) Add an entry called format to indicate any format you want for the output.
 | |
| 
 | |
| The following format string will emulate the regular cdr file format:
 | |
| [cdr_csv2]
 | |
| 
 | |
| format => "${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}","${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}","${CDR(lastdata)}","${CDR(start)}","${CDR(answer)}","${CDR(end)}","${CDR(duration)}","${CDR(billsec)}","${CDR(disposition)}","${CDR(amaflags)}","${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}"
 | |
| 
 | |
| You can put anything you want as the value of format including new cdr vars you make up or any global variables.
 | |
| 
 |