<br><font size=2 face="sans-serif">I think you're on the right track with
respect to the events related to calls. &nbsp;Any change in a call's connection
state, what caused that state, and what time the state change occurred.
&nbsp;I haven't studied the core code enough to know if that information
is traced as a single object anywhere, but that would make the most sense.
</font>
<br>
<br><font size=2 face="sans-serif">The problem with logging in general,
is that you get a great sequence of events on a call, but reporting from
that is tricky. &nbsp;People wants reports on the duration of some events
from end point to the end point, but determining the start and end points
is harder than you'd think. &nbsp;Is it the time the connection happens,
or when the call is dialed? Is &quot;parked&quot; time excluded or included?
&nbsp;These are going to be subject to the economic needs of the report,
not any kind of programmer logic. &nbsp;That means nearly any reporting
software is going to have to do some kind of sequential scan and compile
statistics as a pre-report job. &nbsp; </font>
<br>
<br><font size=2 face="sans-serif">Given the above, the idea of each call
getting a unique id and having each event tagged with that id and a timestamp
is probably the most important first aspect. &nbsp;From there, an external
process which compiles the records in any number of ways becomes possible.
&nbsp; A sort of pseudocode way of looking at a call that makes sense to
me could best be represented in a kind of xml style tree structure, though
I don't believe this is a good way to STORE the data.</font>
<br>
<br><font size=2 face="sans-serif">&lt;call&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &lt;initiated&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &lt;menutree&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;outbound
dial&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &lt;remote answered&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &lt;remote disconnected&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/outbound
dial&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &lt;/menutree&gt;</font>
<br><font size=2 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; &lt;disconnected&gt;</font>
<br><font size=2 face="sans-serif">&lt;/call&gt;</font>
<br>
<br><font size=2 face="sans-serif">If you look at each of the nodes as
having a timestamp, context, local and remote numbers, etc., &nbsp;it would
be logically easy to get the whole call time, subject out time in the menu,
add back time on the outbound dial or remote answered segments, etc.</font>
<br>
<br><font size=2 face="sans-serif">Keep in mind that I am representing
the data this way, but I do NOT support storing the call data for each
call as an XML record. &nbsp;XML is good for transferring data from one
place to another but its a pretty wasteful and difficult to process storage
format.</font>
<br>
<br><font size=2 face="sans-serif">---<br>
Andrew Pollack<br>
Northern Collaborative Technologies<br>
207-221-2547<br>
</font>
<br>
<br><tt><font size=2>Miroslav Nachev &lt;miro@space-comm.com&gt; wrote
on 03/27/2006 07:52:33 AM:<br>
<br>
&gt; &nbsp; &nbsp;Dear Andrew,<br>
&gt; <br>
&gt; &nbsp; &nbsp;Thank you very much for the supported letter.<br>
&gt; &nbsp; &nbsp;Let's start the projects with one discussion about which
events we<br>
&gt; need. Then to sumarize and think out in advance the data structure<br>
&gt; where will be stored this information and from where this information<br>
&gt; will be taken. After that I will start design and develop the project.<br>
&gt; <br>
&gt; &nbsp; &nbsp;From which detailed records you need?<br>
&gt; <br>
&gt; <br>
&gt; &nbsp; &nbsp;Best Regards,<br>
&gt; &nbsp; &nbsp;Miroslav Nachev<br>
&gt; <br>
&gt; &nbsp;<br>
&gt; AP&gt; Miroslav, <br>
&gt; &nbsp;<br>
&gt; AP&gt; This sounds like an excellent addition to Asterisk. &nbsp;As<br>
&gt; AP&gt; someone who has made a living for twenty years producing<br>
&gt; AP&gt; applications for customers I can tell you without question
that<br>
&gt; AP&gt; the most important and at the same time most frequently overlooked<br>
&gt; AP&gt; part of the projects are their ability to produce highly detailed<br>
&gt; AP&gt; and customized reports. &nbsp;I once had a company CIO (Chief<br>
&gt; AP&gt; Information Officer) tell me that while it was true his users<br>
&gt; AP&gt; wanted lots of bells and whistles, he didn't care if I built
the<br>
&gt; AP&gt; thing out of crayons on waxpaper as long as he could get reports<br>
&gt; AP&gt; out of it that justified the expenditure. <br>
&gt; &nbsp;<br>
&gt; AP&gt; If Asterisk is to continue to grow into the mainstream<br>
&gt; AP&gt; marketplace -- and I have no doubt that it will -- highly detailed<br>
&gt; AP&gt; reporting is one of the most important additions to be made.
&nbsp;Good<br>
&gt; AP&gt; luck on your project. <br>
&gt; &nbsp;<br>
&gt; AP&gt; ---<br>
&gt; AP&gt; &nbsp;Andrew Pollack<br>
&gt; AP&gt; &nbsp;Northern Collaborative Technologies<br>
&gt; AP&gt; &nbsp;207-221-2547<br>
&gt; &nbsp; <br>
&gt; &nbsp;<br>
&gt; AP&gt; asterisk-dev-bounces@lists.digium.com wrote on 03/27/2006 07:32:23
AM:<br>
&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;Dear Clint,<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;This situation and many other will be
solved in case that the<br>
&gt; &nbsp;&gt;&gt; Asterisk CDR system is designed to record all events
(end to end<br>
&gt; &nbsp;&gt;&gt; record of the call), not only the 1st and last end
point of the call.<br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;I am able to do such CDR system and if
someone would like to help<br>
&gt; &nbsp;&gt;&gt; me will be very helpful. I intend to name the new project
FCDR which<br>
&gt; &nbsp;&gt;&gt; means Full Call Detail Records which will include all
possible events<br>
&gt; &nbsp;&gt;&gt; like dial, hold, all kind of transfers, conferences,
call-end-reasons,<br>
&gt; &nbsp;&gt;&gt; etc.<br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;Any help and ideas?<br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;Best Regards,<br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;Miroslav Nachev<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; &nbsp; <br>
&gt; &nbsp;&gt;&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; CT&gt; Hi Guys,<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; CT&gt; I posted this to the Users list but didn't get
a response. <br>
&gt; &nbsp;&gt;&gt; CT&gt; I'm hoping someone here can help me out.<br>
&gt; &nbsp;&gt;&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; CT&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; CT&gt; I'm writing an app that receives a call on an
incoming <br>
&gt; channel (A), the<br>
&gt; &nbsp;&gt;&gt; CT&gt; caller negotiates through a series of prompts
and is transferred<br>
&gt; &nbsp;&gt;&gt; to an &nbsp;outgoing<br>
&gt; &nbsp;&gt;&gt; CT&gt; channel (B) using the Dial cmd. That part works.<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; CT&gt; For billing &nbsp;I'd like to be able to charge
for the time that the<br>
&gt; &nbsp;&gt;&gt; first caller<br>
&gt; &nbsp;&gt;&gt; CT&gt; is connected &nbsp;to the callee on channel
(B) so I can pass on my<br>
&gt; &nbsp;&gt;&gt; own outgoing<br>
&gt; &nbsp;&gt;&gt; CT&gt; voip &nbsp;costs.<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; CT&gt; Can I do this? There doesn't seem to be a way
of capturing<br>
&gt; &nbsp;&gt;&gt; CT&gt; the &nbsp;ANSWERTIME of channel (B) from the<br>
&gt; &nbsp;&gt;&gt; CT&gt; channel (A) context of the dialplan. Or is &nbsp;there?<br>
&gt; &nbsp;&gt;&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; CT&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; &nbsp;<br>
&gt; &nbsp;&gt;&gt; CT&gt; Any suggestions would be greatly &nbsp;appreciated.<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; CT&gt; clint_in_sydney<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; &nbsp; <br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; _______________________________________________<br>
&gt; &nbsp;&gt;&gt; --Bandwidth and Colocation provided by Easynews.com
--<br>
&gt; &nbsp;&gt;&gt; <br>
&gt; &nbsp;&gt;&gt; asterisk-dev mailing list<br>
&gt; &nbsp;&gt;&gt; To UNSUBSCRIBE or update options visit:<br>
&gt; &nbsp;&gt;&gt; &nbsp; &nbsp;http://lists.digium.com/mailman/listinfo/asterisk-dev<br>
&gt; &nbsp; <br>
&gt; <br>
</font></tt>