[Asterisk-Users] CDR of calls transferred via IAX[2]

Lele Forzani lele at windmill.it
Thu Sep 18 08:20:44 MST 2003


Let's say i have a network of * boxes connected via IAX, one of them is a 
"switch", one or more are the "gateways".

- An IAX[2] "customer" register himself on the "switch" (and gets an 
accountcode for te purpose of cdr)

- The customer places a call to the "switch", the switch does some magic and 
decides which "gateway" the call should be forwarded

- The switch authenticates the call with the "gateway" and then performs a 
transfer effectively connecting the "customer" directly with the "gateway" 
(which is something I specifically want, this rules out a notransfer=yes 
solution)

- The "gateway" does something expensive (= calls the PSTN) I want to be 
billed

From a CDR standpoint, i have a cdr record from the "switch" containing the 
accountcode for the user, but useless billing informations since the call has 
been transferred,
The "gateway" has, of course, useful billing information, but doesn't have the 
original "accountcode" for the user, since the call was coming from the 
"switch"

Given that I can't trust the callerid, and I can't set it to something else (i 
must accept from "customer" any callerid and pass it to the PSTN), I would 
like to bill the calls based on the "accountcode" for the user.
Here comes the trouble: since neither the accountcode nor the uniqueid are 
preserved during the transfer,  i do not see anything to safely correlate the 
accountcode with the billing records on the gateway. I can "guess" at it 
based on the call specific callerid, the time of day and such. But it would 
be guessing.


A few thoughts on it:

* one could pass via IAX a uniqueid when i transfer the call, and have this 
unique id logged in the CDR records. This way any call segment pertaining to 
the same phone call can be correlated for cdr purpose.


* one could have the gateway allow trusted sources (the "switch") to set via 
IAX the "accountcode" when transferring the call, and log it as an 
"originalaccountcode" or even the "accountcode" itself in the cdr.
This way every cdr record in the network will have a reference to the actual 
customer that made that event happen.

* one could devise some way to give back from the "gateway" to the transferrer 
(the "switch") an indication that the call has ended, with that many 
billable_seconds. (can this be done? i do not see it that simple...)
This way the switch would have all the cdr info in one cdr row.


Anybody has suggestions on this?

thanks
lele






More information about the asterisk-users mailing list