+ Antworten
Ergebnis 1 bis 3 von 3
  1. #1
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    314

    Question Automatisch Liste aus JSON erstellen (Sipgate-Modul, Anruf-History)

    Hallo Zusammen,

    ich habe - dank IPS5.1 das SIPGATE-Modul.
    Nun möchte ich gerne die Anrufliste, ausgegeben im JSON-Format irgendwie lesbar machen.
    Die Liste wird als JSON ausgegeben, dabei sind die meisten Informationen unnütz, es geht mir nur um die Ein- bzw. Ausgehenden Nummern.

    Diese hätte ich aber gerne in einer Liste, also ggf. ein String mit Zeilenumbruch oder wie auch immer.
    So ungefähr:

    Code:
    +49 23456/12345
    +49 25689/13456
    +49...etc
    Ich kann zwar Daten aus JSON rausnehmen und verwenden, aber die Daten "automatisch" abzuarbeiten (also nicht für Pos. 1 eine Funktion schreiben, für Pos. 2 etc.) dafür bin ich nicht gut genug.
    Kann jemand helfen?

    Hier die JSON
    Code:
     string(5268) "{"items":[{"id":"5005857723","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-05-01T08:31:07Z","lastModified":"2019-05-01T08:32:17Z","direction":"INCOMING","incoming":true,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005856697","source":"anonymous","target":"+4956FremdeNr789","sourceAlias":"VoIP-Telefon von Matthias Ginster","targetAlias":"","type":"CALL","created":"2019-04-30T16:50:20Z","lastModified":"2019-04-30T16:50:32Z","direction":"OUTGOING","incoming":false,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"e0","type":"REGISTER"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005856663","source":"anonymous","target":"+4956FremdeNr789","sourceAlias":"VoIP-Telefon von Matthias Ginster","targetAlias":"","type":"CALL","created":"2019-04-30T16:39:31Z","lastModified":"2019-04-30T16:40:46Z","direction":"OUTGOING","incoming":false,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"e0","type":"REGISTER"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005856657","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-04-30T16:33:11Z","lastModified":"2019-04-30T16:38:16Z","direction":"INCOMING","incoming":true,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005850991","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-04-29T17:24:46Z","lastModified":"2019-04-29T17:25:42Z","direction":"INCOMING","incoming":true,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005848089","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-04-29T10:46:25Z","lastModified":"2019-04-29T10:53:17Z","direction":"INCOMING","incoming":true,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005848022","source":"anonymous","target":"+4956FremdeNr789","sourceAlias":"VoIP-Telefon von Matthias Ginster","targetAlias":"","type":"CALL","created":"2019-04-29T10:46:02Z","lastModified":"2019-04-29T10:47:47Z","direction":"OUTGOING","incoming":false,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"e0","type":"REGISTER"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005847334","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-04-29T09:41:02Z","lastModified":"2019-04-29T09:43:13Z","direction":"MISSED_INCOMING","incoming":true,"status":"NOPICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005844615","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-04-27T17:55:26Z","lastModified":"2019-04-27T17:55:42Z","direction":"INCOMING","incoming":true,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""},{"id":"5005844585","source":"+4956FremdeNr789","target":"+49123meineNR4568","sourceAlias":"","targetAlias":"","type":"CALL","created":"2019-04-27T17:33:49Z","lastModified":"2019-04-27T17:34:36Z","direction":"INCOMING","incoming":true,"status":"PICKUP","connectionIds":["p0"],"read":false,"archived":false,"note":null,"endpoints":[{"type":"ROUTED","endpoint":{"extension":"p0","type":"PHONELINE"}}],"starred":false,"labels":[],"callId":"","recordingUrl":"","recordings":[],"duration":0,"responder":"","responderAlias":""}],"totalCount":43}"
    Ich habe die eigene Rufnummer mit "+49123meineNR4568" und alle anderen Nummern mit "+4956FremdeNr789" geändert.
    Dazu wäre es toll die "direction" (INCOMING / INCOMING_MISSED / OUTGOING) dahinter zu schreiben.
    Ziel ist es übrigens, dass das Ganze in IPS_View in einer Seite "Telefon" auftaucht und ich irgendwie die MISSED raussuche oder markiere.

    Gruß,
    Matthias
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten.
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / Intel-Server mit Adaptec 5805 SAS 5x3TB RAID6, Windows 2k12R2, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

  2. #2
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    647

    Hallo,

    Zitat Zitat von Maeffjus Beitrag anzeigen
    ich habe - dank IPS5.1 das SIPGATE-Modul.

    Nun möchte ich gerne die Anrufliste, ausgegeben im JSON-Format irgendwie lesbar machen.
    welches Modul genau? Das IPSymconSipgate aus dem Modul-Store?

    Wenn ja:

    Es gibt dort ja eine Test-Funktion um sich die Anruf-Historie anzusehen.

    Wenn Du den Link zur Dokumentation aufrufst, Landes Du dort GitHub - demel42/IPSymconSipgate: Interface zu sipgate Basic

    Und da gibt es hier mit der Funktion ShowHistory()

    Da ich aber aus deinem Post lesen, das Deine PHP-Kenntnisse eingeschränkt sind, habe ich das mal in ein Script umgeschrieben. gepackt. Du benötigst auf jeden Fall noch eine String-Variable vom Typ ~HTMLBox.

    PHP-Code:
    <?

    $html 
    '';
    $html .= '<style>' PHP_EOL;
    $html .= 'body { margin: 1; padding: 0; font-family: "Open Sans", sans-serif; font-size: 20px; }' PHP_EOL;
    $html .= 'table { border-collapse: collapse; border: 0px solid; margin: 0.5em;}' PHP_EOL;
    $html .= 'th, td { padding: 1; }' PHP_EOL;
    $html .= 'thead, tdata { text-align: left; }' PHP_EOL;
    $html .= '#spalte_zeitpunkt { width: 125px; }' PHP_EOL;
    $html .= '#spalte_quelle { width: 400px; }' PHP_EOL;
    $html .= '#spalte_ziel { width: 400px; }' PHP_EOL;
    $html .= '#spalte_dauer { width: 20px; }' PHP_EOL;
    $html .= '</style>' PHP_EOL;

    $cdata Sipgate_GetHistory(15900 /*Sipgate-Instanz-ID*/);
    $jdata json_decode($cdatatrue);
    $b false;
    if (
    $jdata != '' && sizeof($jdata)) {

        
    $items $jdata['items'];
        foreach (
    $items as $item) {
            
    $created strtotime($item['created']);
            
    $direction $item['direction'];
            
    $source $item['source'];
            
    $target $item['target'];

            
    $timestamp $cdr['timestamp'];
            
    $duration $cdr['duration'];
            
    $source $cdr['source'];
            
    $target $cdr['target'];

            
    $duration = isset($item['duration']) ? $item['duration'] : '';
            if (
    $duration == '') {
                
    $duration '-';
            }

            
    $dt date('d.m. H:i'$created);

            if (!
    $b) {
                
    $html .= '<table>' PHP_EOL;
                
    $html .= '<colgroup><col id="spalte_zeitpunkt"></colgroup>' PHP_EOL;
                
    $html .= '<colgroup><col id="spalte_quelle"></colgroup>' PHP_EOL;
                
    $html .= '<colgroup><col id="spalte_ziel"></colgroup>' PHP_EOL;
                
    $html .= '<colgroup><col id="spalte_dauer"></colgroup>' PHP_EOL;
                
    $html .= '<colgroup></colgroup>' PHP_EOL;
                
    $html .= '<thead>' PHP_EOL;
                
    $html .= '<tr>' PHP_EOL;
                
    $html .= '<th>Zeitpunkt</th>' PHP_EOL;
                
    $html .= '<th>Anrufer</th>' PHP_EOL;
                
    $html .= '<th>Ziel</th>' PHP_EOL;
                            
    $html .= '<th>Dauer</th>' PHP_EOL;
                
    $html .= '<th>&nbsp</th>' PHP_EOL;
                
    $html .= '</tr>' PHP_EOL;
                
    $html .= '</thead>' PHP_EOL;
                
    $html .= '<tdata>' PHP_EOL;
                
    $b true;
            }

            
    $html .= '<tr>' PHP_EOL;
            
    $html .= '<td>' $dt '</td>' PHP_EOL;
            
    $html .= '<td>' $source '</td>' PHP_EOL;
            
    $html .= '<td>' $target '</td>' PHP_EOL;
            
    $html .= '<td>' $duration '</td>' PHP_EOL;
            
    $html .= '</tr>' PHP_EOL;
        }
        if (
    $b) {
            
    $html .= '</tdata>' PHP_EOL;
            
    $html .= '</table>' PHP_EOL;
        } else {
            
    $html .= '<center>keine Anrufe</center><br>' PHP_EOL;
        }
    }

    SetValueString(13859 /* ID der HTML-Box/Variable */$html);
    Das ist aber ziemlich ungerüstet und muss von Dir angepasst und getestet werden.

    Gruß
    demel

  3. #3
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    314

    Vielen Dank!

    Ja die Funktion kenne ich, habe das auch mal ausgeführt und mit var_dump ausgegeben. Daher kam der JSON-String.
    Ich kann prinzipiell PHP - auch nicht total kacke, aber halt nicht gut genug ;-)
    Mit deinem Beispile komme ich aber zurande und kann dann auch was damit anstellen...
    Ich versuche das noch was zu flicken, (z.t. sind die Ziel-Nummern die angerufenen) - aber das wird schon!
    Vielen, Vielen Dank!

    Wenn ich dann mal irgendwann fertig bin, dann werfe ich das fertige Skript hier rein...
    Gruß,
    Matthias

    Name:  Sipgate.jpg
Hits: 56
Größe:  181.9 KB
    Geändert von Maeffjus (04.05.19 um 18:39 Uhr)
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten.
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / Intel-Server mit Adaptec 5805 SAS 5x3TB RAID6, Windows 2k12R2, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

Ähnliche Themen

  1. Liste aller Geräte mit Meta Vorlage erstellen.
    Von Acer90 im Forum IPSStudio & IPSView
    Antworten: 2
    Letzter Beitrag: 04.12.17, 18:34
  2. Profil aus Modul heraus erstellen
    Von DerStandart im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 2
    Letzter Beitrag: 22.05.17, 13:42
  3. WebHook aus Modul dynamisch erstellen
    Von KaiS im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 74
    Letzter Beitrag: 27.01.17, 22:24
  4. Sipgate History
    Von Flobo im Forum Skripte, PHP, SQL
    Antworten: 0
    Letzter Beitrag: 28.12.13, 22:02
  5. Antworten: 8
    Letzter Beitrag: 30.06.11, 18:34