[asterisk-users] CDR Design

Anthony Francis anthonyf at rockynet.com
Tue Nov 25 11:29:46 CST 2008


We are suggesting the same thing, what you describe is multidimensional. 
If you think of the cdr's as being in a database, and say you wanted to 
have it show you all the calls today and all the calls that are 
associated with that call. Your select grabs the first dimension, a list 
of all calls. Then using the unique identifier of each call you build a 
second dimension of the related calls.

regs at kinetix.gr wrote:
> In order to avoid a multidimensional schema we could have 1 cdr per call 
> leg. So , for instance, one
> call that had 3 different dial() commands as outgoing attempts would be 
> described by 4
> CDRs (1 for the incoming leg that has all the originating channel data 
> and 3 for the outgoing
> legs that hold all the terminating channel's data). Those CDRs would be 
> bound by a unique
> identifier field (the same for all 4). The terminating CDRs could be 
> also identified by a increment field that indicates
> the order that the channels were called. Another issue is that failed 
> attempts should also be logged because
> this is valuable info for many (or at least have the option to choose 
> the desired behavior - which is available in asterisk as we speak).
>
> Anthony Francis wrote:
>   
>> It is my belief that before redesigning the CDR engine some time should 
>> be spent looking at current PSTN CDR formats and what information is 
>> kept in them.
>> The main problem that I feel we face is that calls can be complicated, 
>> but we want the record of it to not be.
>> In reality a CDR that incorporates all information about a call would 
>> have at least two dimensions.
>> In the first you would have the base call record as we do now, in the 
>> second we would have the event list.
>> The event list would be a time indexed list of event names and 
>> attributes, just as you would currently store event information.
>> The event list would be your glue (with a bit of front end logic of 
>> course.) that would relate a call that dialed X external numbers to the 
>> X different new CDR's that generated.
>> That would allow you all the call path info you could ever want. The 
>> most important thing would be a new config file that allows an 
>> administrator granular control over what information is "important to 
>> them. And of course a "keep it simple stupid" mode that just writes the 
>> top level cdr as it does now.
>>
>> regs at kinetix.gr wrote:
>>   
>>     
>>> I think that the custom cdr back-end can be successfully used to 
>>> maximize or minimize the CDRs detailing
>>> on a per-needs basis. Furthermore, the CDR() function gives plenty of 
>>> room for even more detailing.
>>> In my opinion the detail level (fields) is not the issue with the CDRs 
>>> generation nor is the lack of backends (asterisk gives a lot of different
>>> backends to store your CDRs). I find the issue with asterisk CDRs to be 
>>> in the lack of proper CDRs generation for the B-leg of every call.
>>> If we want to really track what happens during a call through the CDRs 
>>> one has to have all the details not only for the incoming channel
>>> but for the outgoing one as well. Furthermore, one needs to be able to 
>>> tweak the B-leg CDRs like he does with the incoming legs. So what
>>> needs to be done in my opinion is record every B-leg CDR when such an 
>>> event occurs and give the user access to the CDR info by
>>> extending the CDR() function (so that one can specify the channel of the 
>>> CDR that is being tweaked) or creating a seperate one for
>>> the outgoing channels.
>>>
>>> Grey Man wrote:
>>>   
>>>     
>>>       
>>>> I've taken the liberty of starting a new thread to discuss the design
>>>> of the Asterisk CDR mechanism. The discussion has been kindly
>>>> initiated by murf putting together a proposal (link ommitted to see if
>>>> email gets accepted).
>>>>
>>>> After reading the proposal I still don't think it's the right way to
>>>> go. To my mind adding more channel variables increases the complexity
>>>> in a situation that is already overly so. I think it's a mistake to
>>>> try and think about all the different call scenarios and come up with
>>>> little tricks for the more complicated ones. There will always be
>>>> something missed; app_shotgun initiates calls to 100 random numbers
>>>> and as soon as three or more calls are answered it will start randonly
>>>> transferring them amongst each other at 2 second intervals.
>>>>
>>>> I think it's important to clarify at the outset what a CDR should be.
>>>> The most fundamental requirement for CDRs is that they accurately
>>>> record the following pieces of information for EVERY call entering or
>>>> leaving the system (note every means every and not; "channel" calls
>>>> but not "peer" calls).
>>>>
>>>> 1. Destination (aka as A Number)
>>>> 2. AccountCode (aka as B Number)
>>>> 3. Call Start Time (answer time),
>>>> 4. Duration.
>>>>
>>>> Of course adding extra information can be very useful and I'm not
>>>> proposing any fields be removed from the current implementation
>>>> (although for pity's sake one change that should be made it to use a
>>>> GUID/UUID for the CDR's uniqueid and save endless confusion).
>>>>
>>>> People that really do need verbose or enhanced CDRs to do things like
>>>> tracking a call's flow as it travels in and out of queues, parking
>>>> lots etc. would be better off using AMI or the new CEL and not CDRs.
>>>> At the very least if problems arise with their call flow tracking they
>>>> will still be able to rely on the accuracy of the CDRs to piece it
>>>> altogether to work out what's going wrong.
>>>>
>>>> My proposal of creating a 1-to-1 relationship between CDRs and
>>>> Asterisk channels already exsits but somewhere along the line it's
>>>> going awry. As an experiment, and to actually do something instead of
>>>> continually moaning about it, I started commenting out the blocks of
>>>> code in res_featrures.c and sip_channel.c that muck around with the
>>>> channel CDRs when a transfer occurs. The results of that were that the
>>>> CDRs for blind and attended transfers actually got better! They're
>>>> still not quite right but are pretty close with only one CDR on each
>>>> having a wrong destination.
>>>>
>>>> Regards,
>>>>
>>>> Greyman.
>>>>
>>>> _______________________________________________
>>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>>
>>>> asterisk-users mailing list
>>>> To UNSUBSCRIBE or update options visit:
>>>>    http://lists.digium.com/mailman/listinfo/asterisk-users
>>>>   
>>>>     
>>>>       
>>>>         
>>> _______________________________________________
>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>
>>> asterisk-users mailing list
>>> To UNSUBSCRIBE or update options visit:
>>>    http://lists.digium.com/mailman/listinfo/asterisk-users
>>>   
>>>     
>>>       
>> _______________________________________________
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>
>> asterisk-users mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-users
>>   
>>     
>
>
> _______________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
>   

-- 
Thank you and have any kind of day you want,

Anthony Francis
Rockynet VOIP
(303) 444-7052 opt 2
voip at rockynet.com




More information about the asterisk-users mailing list