- 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:
Hier die passenden Contexts:
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:
Und so in etwa sollen meine CDR-Einträge lauten:
Nur leider sieht der Eintrag in etwa so aus:
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 der Callfile stehen unter anderem diese Zeilen:
Code:
Channel: Local/0049xxxxxxxxxx@call_out
Context: call_out_success
Extension: s
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 "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!