Zwei CDR-Einträge mit Callfile

BigBadaBoom

Neuer User
Mitglied seit
26 Jun 2008
Beiträge
84
Punkte für Reaktionen
0
Punkte
0
Hi, ich habe ein kleines Problem mit Callfiles und CDR einträgen.

In der Callfile stehen unter anderem diese Zeilen:
Code:
Channel: Local/0049xxxxxxxxxx@call_out
Context: call_out_success
Extension: s
Hier die passenden Contexts:
Code:
[call_out]
exten => _X.,1,Set(CDR(accountcode)=${accountcode})
exten => _X.,n,Wait(10)
exten => _X.,n,Gosub(make_cheapest_call,${EXTEN},1)
exten => _X.,n,Hangup()

[call_out_success]
exten => s,1,Gosub(login_and_auth,s,1)
exten => s,n,Gosub(call_number,s,1)
exten => s,n,Hangup()
Im Context "make_cheapest_call" wird ganz normal über einen Sip-Provider mit "Dial" die Nummer angerufen.
Im Context "call_number" kann die Person ein Nummer eingeben und wird dann mittels Dial mit dieser verbunden.

Das funktioniert alles ohne Probleme. Das große Problem sind die CDR-Einträge.

Hier mal ein Beispiel-Verlauf:
Code:
Zeit (sec) | Aktion
===========|=========================
         0 | Asterisk erhält callfile
        10 | Asterisk hat 10 sekunden gewartet und ruft jetzt Person 1 an
        15 | Person 1 hebt ab, logged sich ein, gibt die Nummer von Person 2 ein
        25 | Asterisk fängt an Person 2 anzurufen
        40 | Person 2 hebt ab und redet mit Person 1
        70 | Eine Person legt auf - das Gespräch wird beendet

Und so in etwa sollen meine CDR-Einträge lauten:
Code:
Destination | Duration | Bill-Seconds
============|==========|=============
   Person 1 |       60 |          55
   Person 2 |       45 |          30

Nur leider sieht der Eintrag in etwa so aus:
Code:
Destination | Duration | Bill-Seconds
============|==========|=============
   Person 1 |       15 |           0
   Person 2 |       60 |          55

Das Gespräch mit Person 1 wird also nur von callfile-erhalten bis zu dem Zeitpunkt an dem die Person 1 abhebt geloggt. Daraus ergeben sich dann natürlich auch 0 billed-seconds. Hier soll es aber als billed-time weiter laufen, bis eine Person auflegt.
Mit einem ResetCDR() direkt nach Wait(10) könnte man hier natürlich die Anfangszeit korregieren, allerdings ist das Problem der Endzeit immernoch da...

Das Gespräch mit Person 2 wird ab dem Anruf an Person 1 geloggt (also direkt nach Wait(10) in "call_out") und die billed-time startet, wenn Person 1 abhebt. Es endet wenn eine Person auflegt. Hier ist das Ende zwar richtig (haha) aber der Anfag doppelt-falsch. Es soll erst anfangen wenn Person 2 angerufen wird und die billed-time erst wenn Person 2 abhebt.

Ich habe es mit "ForkCDR" versucht, aber damit wird irgendwie nur dir zweite Eintrag in zwei Teile geteilt, ich habe keine zwei CDR-Einträge die "parallel" laufen. Ich bin hier für jeden Tipp dankbar!
 
In Asterisk 1.4 hat sich, im Vergleich zu 1.2, einiges zum Thema CDR verschlimmbessert. Vor kurzem hat murf hier jedoch Hand angelegt, ich bin nicht sicher ob die Änderungen schon in 1.4.21 vorhanden sind oder erst in 1.4.22 kommen werden.
 
Kostenlos!

Statistik des Forums

Themen
248,886
Beiträge
2,304,065
Mitglieder
378,569
Neuestes Mitglied
Yannick100