[asterisk-users] CDR Rewrite -- Questions to the users

Benny Amorsen benny+usenet at amorsen.dk
Wed Jan 14 03:12:03 CST 2009


Ok, now for my long mail...

tir, 13 01 2009 kl. 09:05 -0700, skrev Steve Murphy:

>      CDR1:  A -> B  start: e1a  ans: e2  end: e4   Party: B  disp:
> ANSW       linkedID: abc9
>      CDR2:  A       start: e1   ans: e1  end: e6   Party: A  disp:
> ANSW       linkedID: abc9


Are start time and answer time the same in CDR2?


>      CDR3:  B -> C  start: e4   ans: e5  end: e6   Party: C  disp:
> ANSW       linkedid: abc9
> 
> CDR2 covers A (see the Party field),  CDR1 covers B, CDR3 covers C.
> 
> A's CDR could be used to bill A for his call in. It covers both the
> time A spent
> talking to B, and C. If you charge a different rate for A talking to B
> vs C, then
> you have some interesting SQL queries to make, I'll guess...


As far as I'm concerned, A called B and that's what they pay for. The
fact that B transferred them to a cell phone in Antarctica isn't A's
problem, it's B's problem, so I'm happy with that.

I need to somehow generate these CDR's to pass to our billing system:

A->B start: e1  ans: e2  end: e6 disp: ANSW
B->C start: e4 ans: e5 end: e6 disp: ANSW

I can get that by looking at all foo->bar CDR's (CDR1) and look for a
CDR's with the same linkedID and only foo (CDR2). Then I replace start
and end times in CDR1 with the start and end times from CDR2, and I'm
done. Nothing happens for CDR3 with this process, so I'm done.

> C's CDR records that B called C. It doesn't mention that A is doing
> all the talking.


Perfect.


> B's CDR records the call from A to B; this is the only one that seems
> a little useless...


It isn't useless, CDR2 is the one I need to get B as well as e2.


> Is this enough? If this is all you had, could you make it work? If you
> can't, 
> would adding a field or two help?


I am fairly certain it would be fine.

Then the A does the transfer version...


> In the SImple CDR world, here's what would be produced:
> 
>      CDR1:  A       start: e1   ans: e1  end: e4   Party: A  disp:
> ANSW       linkedID: abc9
>      CDR2:  A -> B  start: e1a  ans: e2  end: e6   Party: B  disp:
> ANSW       linkedID: abc9
>      CDR3:  A -> C  start: e4   ans: e5  end: e6   Party: C  disp:
> ANSW       linkedid: abc9
> 
> Here, A's total connection time is in CDR1; B with CDR2;  C with CDR3.


This is tricky... I need to create these CDR's for the billing system:

src: A  start: e1  ans: e2  end: e6   dst: B  disp: ANSW
src: A  start: e4  ans: e5  end: e6   dst: B  disp: ANSW

If I do the same substitution again, I get this:

A->B start: e1 ans: e2 end: e4. Whoops, end time is wrong.
A->C start: e1 ans: e5 end: e4. Whoops, both start and end times are
wrong.

CDR2 needs to find e1 so it can replace start, while CDR3 shouldn't have
anything replaced. I can't think of a query which will do this
correctly.


> Again, is there enough info here for you to do what you need to do? If
> not
> what addition could be added to make it work?


As far as I can tell, I won't be able to bill correctly for transfers
with these CDR's. That isn't a regression by the way, so it shouldn't
necessarily stop the switch to Simple CDR's.


> In the CDRfix2 doc, I outlined both the above blindxfer cases, and
> also permutations
> of attended xfers. Look them over, and see if what you need is
> possible with this format.


The CDRfix2 doc is concerned with Leg-based CDR's. I haven't looked at
those in-depth yet, because your proposal is to implement the Simple
system first.


/Benny


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20090114/f4ee0794/attachment.htm 


More information about the asterisk-users mailing list