einzelverbindungsnachweis per email an User

Florianfranke

Neuer User
Mitglied seit
6 Dez 2005
Beiträge
179
Punkte für Reaktionen
0
Punkte
16
Hallo,

wer von euch hat es schon mal eingerichtet einen Einzelnachweis automatisch vom Asterisk Server an denn einzelnen User zu versenden.
 
hallo!
Also ich habs bis jetzt noch nicht gemacht... aber interesse ist immer da ;)
(bin halt neugierig)
wäre der thread evt in den dialplan oder scripten besser angesiedelt?

hast du denn schon einen plan wie du es anstellen willst?
 
hm...

Eigentlich hat das Versenden des Einzelverbindungsnachweises nichts mit dem Asterisk ansich zutun.

Asterisk kann ueber das CDR Backend eine art "Einzelverbindungsnachweis" fuehren, welchen du mit jeder beliebigen Script/Programmiersprache auslesen kannst und per Mail verschicken.
Am besten eignet sich hierfuer ein Cronjob der das einmal am tag tut.

Gibs das Backend fuer den Einzelverbindungsnachweis schon, oder muss das auch erst implementiert werden?
 
Der Einzelverbindungsnachweis wird von Asterisk standardmäßig geführt. Aber wie schon richtig angemerkt wurde, ist die Auswertung selbst nicht Aufgabe der Asterisk-Software selbst.

Vor einiger Zeit habe ich mal ein kleines PHP Schnipsel gemacht, mit dem ich mür über einen Webserver auf der gleichen Maschine die Anruflisten generiert habe, um von unterwegs zu sehen, wer versucht hat, mich anzurufen. Das waren irgendwie nur 10 Zeilen PHP Code, es ist also nicht weiter dramatisch.

So etwas ähnliches sollte sich ja auch nutzen lassen, um die CDR Daten nach Usern zu gruppieren und per email zu verschicken.

Empfehlenswert ist dabei übrigens, die CDR Daten mit Hilfe der MySQL-addons von Asterisk direkt in eine Datenbanktabelle schreiben zu lassen, dann erspart man sich nämlich die relativ umständliche Auswertung der CSV Datei :wink:
 
Ok danke aber habe noch das Problemm das nach einem Reboot die File leer ist!
 
Ich schreibe die Einzelverbindungsnachweise monatsweise in bestimmte Ordner, die per http zur Verfügung stehen. Damit können die Verbindungen in Echtzeit abgefragt werden. Gleichzeitig summiere ich noch die Preise, Verbindungszeiten und -zahlen in der Datenbank auf.

Vor der Wahl setze ich die Variablen rate mit dem Verbindungspreis je Minute in 1/10 Cent sowie cycle mit dem Takt in Sekunden (0 = Festpreis).

Zu guter Letzt springe ich zu exten zurück, damit nicht "h" als Ziel in der CDR erscheint.

Eine Abrechnung mittels der Master.csv ist nicht zuverlässig genug, da dort teilweise falsche (zu lange) Verbindungszeiten erfasst werden. Die Variable ANSWEREDTIME ist da zuverlässiger.

Code:
exten => _X.,n,Set(accountcode=${CDR(accountcode)})
exten => _X.,n,Set(exten=${EXTEN})
exten => _X.,n,Set(calltime=${STRFTIME(||%d.%m.%y\;%H:%M)})
exten => _X.,n,Dial(SIP/${EXTEN}@${provider}||${Switches})
exten => _X.,n,Goto(DS-${DIALSTATUS}|1)
exten => _X.,n(hangup),hangup(${cause})

exten => h,1,GotoIf($[0${cycle}]?cycle)
exten => h,n,Set(charge=$[${rate}/10])
exten => h,n,Goto(charge)
exten => h,n(cycle),Set(billcycles=${MATH($[0${ANSWEREDTIME}+${cycle}-1]/${cycle}|int)})
exten => h,n,Set(charge=$[${rate}*${billcycles}*${cycle}/600])
exten => h,n(charge),GotoIf($[${charge}]?:end)
exten => h,n,Set(DB(Users/Billing/${accountcode})=$[0${charge} + 0${DB(Users/Billing/${accountcode})}])
exten => h,n,Set(DB(Users/Billing/${provider})=$[0${charge} + 0${DB(Users/Billing/${provider})}])
exten => h,n,TrySystem(echo "${calltime}\;${accountcode}\;${exten}\;${ANSWEREDTIME}\;${charge}" >> /var/log/asterisk/billing/${STRFTIME(||%y-%m)}/Billing.csv)
exten => h,n,TrySystem(echo "${calltime}\;${exten}\;${ANSWEREDTIME}\;$[${billcycles}*${cycle}]\;${rate}\;${charge}" >> /var/log/asterisk/billing/${STRFTIME(||%y-%m)}/${accountcode}${PIN}.csv)
exten => h,n,TrySystem(ln -s ${STRFTIME(||%y-%m)}/${accountcode}${PIN}.csv /var/log/asterisk/billing/${accountcode}${PIN}.txt)
exten => h,n(end),Set(CDR(userfield)=${exten}!${ANSWEREDTIME}!$[${billcycles}*${cycle}]!${charge}!${provider})
exten => h,n,Set(DB(Users/Billing/Calls/${accountcode})=$[$[0${ANSWEREDTIME} > 0] + 0${DB(Users/Billing/Calls/${accountcode})}])
exten => h,n,Set(DB(Users/Billing/Calls/${provider})=$[$[0${ANSWEREDTIME} > 0] + 0${DB(Users/Billing/Calls/${provider})}])
exten => h,n,Set(DB(Users/Billing/Time/${accountcode})=$[0${ANSWEREDTIME} + 0${DB(Users/Billing/Time/${accountcode})}])
exten => h,n,Set(DB(Users/Billing/Time/${provider})=$[0${ANSWEREDTIME} + 0${DB(Users/Billing/Time/${provider})}])
exten => h,n,Goto(${exten}|hangup)
 
Zuletzt bearbeitet:
Da ich gerade Ärger mit den tollen CDRs habe, habe ich hier Mathias-Lösung gefunden.. ist das noch aktuell bzw. gibt es dazu noch irgendwelche Korrekturen / Verbesserungen? Sonst würde ich nämlich mal versuchen, die bei mir einzubauen. :)

Viele Grüße,
Philipp
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.