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 _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- AstriCon 2009 - October 13 - 15 Phoenix, Arizona Register Now: http://www.astricon.net asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
