[asterisk-users] Ignoring time spent waiting in queue in CDR

Anthony anthonyf at rockynet.com
Wed Jul 29 09:15:22 CDT 2009


Alex Balashov wrote:
> I wouldn't approach this by trying to rework the CDRs at all;  CDRs are 
> fundamentally low-level call records.  They correspond to calls.
>
> If you need logic to support a billing model for some specific 
> application (i.e. time after connect to agent), I would approach that 
> from a higher layer of abstraction that is more closely coupled to the 
> application's own.  For example, you could listen for Manager API events 
> that indicate a queue caller's connection to an agent and flag those. 
> There are numerous ways to skin this cat.
>
> What I would not do is try to mess with the CDRs to achieve this end; 
> there is a reason they are called CDRs -- call detail records.  Not 
> queue detail records, not MoH detail records, not IVR detail records, 
> but _call_ detail records.  If nothing else, you may find that someday 
> you will need the total call duration for other purposes, and have shot 
> yourself in the foot by hacking it out this way.
>
> Plus, it's just too hard.  Why jerry-rig CDRs when there are far easier 
> and more functionally modular / extended ways to accomplish the same goal?
>
> Wrong tool for the job.
>
> Just my $.02, of course...
>
> Scott Gifford wrote:
>
>   
>> Hello,
>>
>> I'm working on an Asterisk configuration for a call center, and they
>> bill based on the time spent talking to an agent, but not for any time
>> spent waiting in a queue.  The CDR information contains the entire
>> duration of the call as billable seconds, including time spent waiting
>> in the queue.  I would like the billable seconds to only include the
>> time spent actually talking to an agent.
>>
>> I am using Asterisk 1.4.18.
>>
>> The only way I have found so far is to correlate the CDRs with the
>> "CONNECT" queue records, figure out the end time of the call by adding
>> the CDR start time to the duration, then figure out the actual
>> duration by subtracting the time of the queue "CONNECT" record.  That
>> seems messy and error-prone, and I'm hoping there's a better way.
>>
>> I also looked at using the ResetCDR() or ForkCDR() dialplan functions,
>> but I don't see a way to cause code to run immediatly after the agent
>> answers a call from the queue.
>>
>> Any suggestions?  Am I missing some easy way of doing this?
>>
>> Thanks!
>>
>> ----Scott.
>>
>>
>> _______________________________________________
>> -- 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
>>     
>
>
>   
I agree, I personally do this using the queue events from the AMI. Make 
sure you turn on queue events in queues.conf!

Anthony



More information about the asterisk-users mailing list