CDR Auswertung aus MySQL

Bartsi

Neuer User
Mitglied seit
24 Okt 2005
Beiträge
74
Punkte für Reaktionen
0
Punkte
0
Moin moin,

ich lasse mir meine Gespräche schön in MySQL ballern. Nun die frage gibt es schon brauchbare übersichtliche Auswertungen dafür? Ich habe leider nicht die Zeit mir was eigenes zu schreiben in PHP o.ä.
Mir würde ne einfache Tabelle ja schon reichen die bischen Differenziert zwischen Ankommend/Abgehend/Unbantwortet.

Gruß und danke Bartsi
 
Bartsi schrieb:
Mir würde ne einfache Tabelle ja schon reichen die bischen Differenziert zwischen Ankommend/Abgehend/Unbantwortet.

Anruferliste ? Da gibts doch was von ratiopharm betateilchen :mrgreen:

Kann ich Dir aber erst heute abend hier schicken, ich hab von hier aus keinen FTP Zugang. Ist ne simple php-generierte Liste aus der CDR Tabelle, welche Dir über 3 Buttons getätigte, angenommene und verpaßte Anrufe anzeigt.
 
@ betateilchen

das wäre schön, wobei das Asterisk-Stat auch ganz nett ist. Sorgt aber für ein upgrade meiner Linux dist. Bzw. wünscht es oder ist folge der nutzung. What ever ;-)

Ich glaub ich bau mir demnächst mal sowas wie die Anruferliste von AVM. Die find ich echt mal schick.


Gruß und danke Kai aka Bartsi


PS: @Betateilchen
in deiner Sig steht:
VoIP extern:2 * Asterisk 1.2.4 auf 3 vServern mit Anbindung an diverse Provider & Carrier
^-- soll das heissen du hast 2 asterisk laufen auf 3 vServern? den trick musst du mir mal verraten ;)
 
Ich habe leider nicht die Zeit mir was eigenes zu schreiben in PHP o.ä.

Ich glaub ich bau mir demnächst mal sowas wie die Anruferliste von AVM.

:wiejetzt:

x<völlig offtopic hier - aber ein eigener Thread lohnt dafür nicht>

Bartsi schrieb:
PS: @Betateilchen
in deiner Sig steht:
VoIP extern:2 * Asterisk 1.2.4 auf 3 vServern mit Anbindung an diverse Provider & Carrier
^-- soll das heissen du hast 2 asterisk laufen auf 3 vServern? den trick musst du mir mal verraten ;)

Das einzige, was an dieser Signatur nicht stimmt, ist die Tatsache, daß die 2 Asterisk-Systeme auf den 3 vServern inzwischen mit Version 1.2.5 laufen :wink:

Das ist einfach so zu verstehen, daß 2 aktive Asterisk Server laufen und der 3. vServer eine Backup Funktion hat. Fällt einer der beiden aktiven aus, wird über ein vorhandenes Monitoring automatisch die Konfiguration des ausgefallenen Servers auf dem 3. vServer aktiviert und das Routing geändert. Die angeschlossenen Endgeräte bekommen das in 99% der Fälle gar nicht mit, da die Ausfallzeit damit maximal ca. 1 Minute beträgt.

Ein Problem hätte ich mit dieser Lösung nur dann, wenn mal beide Hauptserver gleichzeitig ausfallen würden.

</völlig offtopic hier - aber ein eigener Thread lohnt dafür nicht>
 
So. Da ist das versprochene Skript. Bei mir heißt das calls.php - der Name ist eigentlich beliebig, er muß nur mit dem Eintrag in <form action=""> übereinstimmen.

PHP:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
<title>Anrufer-Liste</title>
</head>
<body>

<? if(!isset($l10)) $l10=0; ?>

<div align="center">
<form action="calls.php">
        <button name="l10" value="0" type="submit">verpasst</button>
        <button name="l10" value="1" type="submit">erfolglos</button>
        <button name="l10" value="2" type="submit">angenommen</button>
        <button name="l10" value="3" type="submit">angerufen</button>
</form>
</div>

<?

$host = "localhost";
$id = "<mysql_user_id>";
$pw = "mysql_user_password";
$db = "asteriskcdrdb";
$tabelle = "cdr";

$link      = mysql_connect($host,$id,$pw);
mysql_select_db($db,$link);
$anzahl = mysql_num_rows(mysql_query("select * from $tabelle"))-10;
$felder = "src,dst,dcontext,clid,calldate,billsec,disposition";

$listcall=array(        "select clid as Rufnummer,calldate as Anrufzeit from $tabelle where not billsec order by calldate desc limit 10",
                                                "select dst as Rufnummer,calldate as Anrufzeit from $tabelle where not billsec and order by calldate desc limit 10",
                                                "select clid as Rufnummer,calldate as Anrufzeit,sec_to_time(billsec) as Dauer from $tabelle where billsec and order by calldate desc limit 10",
                                                "select dst as Rufnummer,calldate as Anrufzeit,sec_to_time(billsec) as Dauer from $tabelle where billsec and order by calldate desc limit 10",
                                        );
$titelzeile=array( "Verpaßte Anrufe", "Erfolglose Anrufe", "Angenommene Anrufe", "Getätigte Anrufe");

show_table($listcall[$l10],$titelzeile[$l10]);

?>
</body>
</html>
<?php

function show_table($query_cmd,$titel)
{
$ergebnis = sql_status($query_cmd);
$anz_reihen = mysql_num_rows( $ergebnis );

$anz_felder = mysql_num_fields( $ergebnis );
    print "<div align=center><table border=1>\n";
        print "<tr><th colspan=$anz_felder bgcolor=LightGreen>$titel</th></tr>";

        print "<tr>";
    for ( $x=0; $x<$anz_felder; $x++ )
        {         print "<th bgcolor=LightGreen>";
          print mysql_field_name( $ergebnis,$x);
          print "</th>";}
    print "</tr>";

while ( $datensatz = mysql_fetch_row( $ergebnis ) )
    {     print "<tr>\n";
          foreach ( $datensatz as $feld )
             print "\t<td bgcolor=Aquamarine>$feld</td>\n";
          print "</tr>\n";}
    print "</table></div><hr>\n";
}

?>
 
Hallo,

ich hab das Skript gleich mal ausprobiert, nur leider hab ich folgende Fehlermeldung:
Code:
Fatal error: Call to undefined function: sql_status()
@betateilchen: Kannst du mir vielleicht sagen was ich falsch machen?

lg Dani
 
Sorry, das ist ein Fehler von mir. :oops:

Die fehlende Funktion werde ich heute abend nachreichen. Da ich den PHP Teil aus einer viel größeren Datei ausgeschnitten habe, habe ich das übersehen.
 
Kein Problem, dann warte ich mal bis heute Abend.

Danke im Voraus
 
Du kannst einfach mal versuchen, anstatt sql_status() die Funktion mysql_query() zu verwenden.

Also diese Zeile

Code:
$ergebnis = sql_status($query_cmd);

ändern in

Code:
$ergebnis = mysql_query($query_cmd);

Dann sollte das ganze schon funktionieren.
 
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.