Asterisk Auswertungstool

nukinov

Neuer User
Mitglied seit
27 Nov 2009
Beiträge
15
Punkte für Reaktionen
0
Punkte
0
Guten Morgen an alle,

ich bin immer noch dabei die Möglichkeiten der Asterisk Telefonanlage zu erforschen und bin natürlich bisher sehr überrascht, wie einfach es ist, dieses Stück Software in den Griff zu bekommen.

Jetzt bin ich dabei, mir das Thema "Logging" zu gemütige zu führen und habe auch schon in diesem Forum fleißig Beiträge gelesen. Daher weiß ich auch, dass es eine Masters.csv Datei gibt, in der viele Informationen über getätigte Anrufe enthalten sind.

Die Frage, die sich mir nun stellt ist folgende:
Gibt es ein Programm, was diese Logdatei auswertet und die Daten so aufbereitet, dass ein "Nicht-Admin" damit etwas anfangen kann? Zum Beispiel Charts erzeugen, wie viele Anrufe angenommen wurden, wie hoch das Gesprächsaufkommen zu einer bestimmten Tageszeit ist, usw.

Leider bin ich während meiner Recherche auf kein vernünftiges Tool gestoßen. Habt ihr eventuell hilfreiche Tipps aus der Praxis für mich?

Beste Grüße
nuki
 
Guten Morgen auch,

ein Tool dafür kenne ich nicht. Ich persönlich habe relativ schnell auf cdr_mysql umgestellt, dann kann man schön mit PHP & Co. drauf zugreifen, ohne aufwendig ein CSV einlesen zu müssen.

Rentier
 
Zuletzt bearbeitet von einem Moderator:
Ach man kann auch die Logdaten in eine MySQL-Datenbank pumpen? Das ist allerdings ein guter Hinweis. Kannst Du mir vielleicht kurz erläutern, wie ich das konfiguriere (oder einen Link zu einer Erläuterung)?

Ist die Umstellung mit Performanceverlust verbunden?
 
Das Ding heißt cdr_mysql und ist in den Asterisk Addons enthalten. Voraussetzung sind die Pakete mysql_client und mysql_client_devel. Such einfach mal nach cdr_mysql, außer dem Anlegen der MySQL Datenbank brauchst im Grunde nicht viel machen.

Hier mal auf die Schnelle meine CDR Tabelle für Asterisk 1.6.1.6, für die 1.4.er waren die Spaltenbezeichnungen ein wenig anders.
Code:
CREATE TABLE IF NOT EXISTS `cdr` (
  `calldate` datetime NOT NULL default '0000-00-00 00:00:00',
  `clid` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `src` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `dst` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `dcontext` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `channel` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `dstchannel` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `lastapp` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `lastdata` varchar(80) collate latin1_german1_ci NOT NULL default '',
  `duration` int(11) NOT NULL default '0',
  `billsec` int(11) NOT NULL default '0',
  `disposition` varchar(45) collate latin1_german1_ci NOT NULL default '',
  `amaflags` int(11) NOT NULL default '0',
  `accountcode` varchar(20) collate latin1_german1_ci NOT NULL default '',
  `userfield` varchar(255) collate latin1_german1_ci NOT NULL default '',
  KEY `calldate` (`calldate`),
  KEY `dst` (`dst`),
  KEY `accountcode` (`accountcode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

Bei mir läuft der MySQL-Server zusammen mit Asterisk und Apache auf einer Maschine, und ich hatte bisher kein Problem damit.

CSV hab ich aus, weil das File irgendwann ziemlich groß wird. Dazu
Code:
noload => cdr_csv.so
in die modules.conf.

Rentier
 
Super. Vielen Dank. Leider sitze grad nicht vor meiner Asterisk-Anlage. Ich werde das aber heute Abend mal ausprobieren.
 
Ich habe mir heute Abend das Plugin CDR Mysql angesehen. Habe es mit einigen Startschwierigkeiten funktionsfähig bekommen und war auf dem ersten Blick angetan.

Leider kamen auch die Schwächen des Loggings sofort zum Vorschein. Zum Beispiel lässt sich das Logging nicht um weitere Benutzerdefinierte Felder erweitern. Es ist lediglich ein Feld für die individuelle Nutzung zugelassen, was ich sehr mau finde.

Ich habe daraufhin erstmal das normale csv-logging aktiviert. Aber auch hier fehlen mir irgenwie einige Informationen.

Beispiel: Ich rufe jemanden an (über spool/outgoing callfile) und dieser jemand nimmt nicht ab. Ich bekomme dazu gar keinen Log-Eintrag, obwohl in der Console ganz klar gesagt wird:

Call failed to go through, reason (3) Remote end Ringing

Warum erscheint so etwas nicht in der Masters.csv. Hier sehe ich nur Anrufe, die wirklich durchgestellt werden konnten.

Gibt es hier vielleicht spezielle Einstellungen?
 
Was möchtest Du denn noch alles loggen, dass ein zusätzliches Feld nicht reicht? Im CDR steckt ja echt alles mögliche drin.

Zum Thema Call-Files. Ich hab mal gelesen, dass Anrufe über Call-Files nicht im CDR geloggt werden. Musst mal dazu googlen. Ein "normaler" Anruf, bei dem niemand abnimmt, wird auf jeden Fall aufgezeichnet.

Rentier
 
Naja er loggt die Callfiles schon. Aber nur die, wo der Anruf auch tatsächlich statt gefunden hat. Die Callfiles, die nicht durchgekommen sind (Abgewiesen oder Besetzt) tauchen im CDR nicht auf :-( Solche Infos fehlen mir zum Beispiel.
 
Hallo

..Die Callfiles, die nicht durchgekommen sind (Abgewiesen oder Besetzt) ...
die extension failed benutzen in deine context,wenn die call Abgewiesen oder Besetzt dann kommt hier:
exten => failed,1,NoOp(----------)
 
Danke für die Tipps. Ich werde mir das heute abend mal genauer anschauen.

Jetzt mal eine andere Frage. Gibt es eventuell die Möglichkeit, so etwas wie CDRs selber über die Extension zu erzeugen? Kann man vielleicht mit einer Operation eigene Datensätze in eine SQL Datenbank schreiben?

Ansonsten wäre noch die Frage bei mir offen, ob man Fehlercodes bei einem Anruf (Besetzt, Abgewiesen, Keine ISDN-Slots mehr frei, usw), die zwar in der Console im Debugmodus auftauchen, auch in der Extension abfangen kann? Dann kann man das evtl, in diesem Userfield ablegen.

EDIT: Okay den Fehlercode habe ich in der Reason-Variable gefunden ;-)

Eine Frage habe ich aber noch. Was ist eigentlich der Fehlercode für "Kein Anschluß unter dieser Nummer"?
 
Zuletzt bearbeitet:
.....Kann man vielleicht mit einer Operation eigene Datensätze in eine SQL Datenbank schreiben?
ja,kann man:
exten => 100,1,MYSQL(Connect connid xxx.xxx.xxx.xx user pwd DB1)
exten => 100,n,GotoIf($["${connid}" = ""]?error,1)
;exten => 100,n,MYSQL(Query r ${connid} INSERT\ INTO\ table1set\ Feld1=\'${CALLERID(num)}\'\, datum=curdate()\, uhrzeit=now()\);Asterisk 1.4
exten => 100,n,MYSQL(Query r ${connid} INSERT INTO table1set Feld1='${CALLERID(num)}', datum=curdate(), uhrzeit=now());Asterisk 1.6
exten => 100,n,MYSQL(Disconnect ${connid})

;if error
exten => error,1,NoOp(=====Fehler========)
exten => error,2,Busy()

.."Kein Anschluß unter dieser Nummer"??
wenn dass kommt dann die Call is answered.
 
Zuletzt bearbeitet:
Vielen Dank für den Hinweis auf den MySQL Befehl. Das ist wirklich super. So langsam finde ich die Asterisk Anlage echt abgerundet.
 
Zuletzt bearbeitet:
Schon mal Areski angesehn? Laueft prima und reicht (vielen) mir vollkommen.

Cheers
Chris
 

Statistik des Forums

Themen
246,300
Beiträge
2,249,714
Mitglieder
373,904
Neuestes Mitglied
Elemir
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.