Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Korrekte Liste entgangener Anrufe mittels dem tr-064 Adapter

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Korrekte Liste entgangener Anrufe mittels dem tr-064 Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Semenchkare last edited by Semenchkare

      Hallo,

      ich beziehe mich auf folgenden Thread, damals hatte ich die korrekte Liste entgangener Anrufe mit dem Fritzbox-Adapter verwirklicht. Das alte Script lief (Anscheinend wegen der Änderung des J-Script-Adapters) aber nicht mehr, hat mir aber viele Jahre gedient. Seinerzeit hatte mir der User ruhr70 mit dem script sehr geholfen.

      (Siehe: Korrekte Liste der Entgangenen Anrufe Mittels Fritzbox-Adapter und einer Skripte-Erweiterung ermitteln)

      Kurz ich möchte das nun mit dem tr-064-Adapter verwirklichen.:

      entgangene Anrufe, die erst aufgelegt werden, wenn der Anrufbeantworter drangeht mit Name (Telefonbuch)
      anzeigen lassen.
      Das findet sich in keiner der missed-Listen, auch bei tr064 Adapter.

      Ich verwende folgendes script (ähnlich wie damals bei Fritzbox-Adapter) und lese den Datenpunkt tr-064.0.calllists.all.json aus und filtere die nicht benötigten Datensätze (eingehende erfolgreiche Anrufe und ausgehende Anrufe ) aus.

          createState('ErfolgloseAnrufe3', '');
      
          function kuerzeDatum(str) {
              var datumStr = str.substr(0,6); // Datum kürzen
              var zeitStr = str.substr(9,5);  // Zeit kürzen
              return datumStr + ": " + zeitStr;
          }
      
          function listeBereinigen(jsonAll){
              for (var i = 0; i < jsonAll.length; i++) {
                  jsonAll[i].date = kuerzeDatum(jsonAll[i].date); // Datum und Zeit kürzen
                  if(jsonAll[i].sym.indexOf(">X") == -1) {
                      if(jsonAll[i].type >2 ) {
                          delete jsonAll[i];
                          log("del: " + i);
                      }
                  }
              }
              return JSON.stringify(jsonAll);
          }
      
          on({id: 'tr-064.0.calllists.all.json'/*calllists all json*/}, function (obj) {  
             var ergebnis = listeBereinigen(JSON.parse(obj.state.val));
             setState('javascript.' + instance + '.ErfolgloseAnrufe3',ergebnis);
          });
      
      

      Eigentlich funktioniert das Script ganz gut, ich lasse dann den Datenpunkt Entgangene Anrufe im Vis anzeigen.
      Angezeigt wird als beispiel in VIS:

      13.07.: 13:07 Karl Müller > 0:01
      13.07.: 13:02 Unbekannt > 0:01 (hier hat der Anrufer eine unterdrückte Rufnr.)
      13.07.: 13:01 > 0:01 (hier ist die angezeigte Nummer nicht im Telefonbuch der Fritz)

      Bei unterdrückten Rufnummern zeigt er im Feld "name" dann auch Unbekannt an.

      Leider ist es bei angezeigten Rufnummern, die nicht im Telefonbuch stehen, so, dass im Namensfeld einfach nichts steht.
      Ich habe leider kein Platz, dass ich beide Felder also Telefonnr und Name nebeneinander anzeigen kann...

      Nun meine Frage:
      Wer kennt sich mit Script-Schreiben aus?
      Funktioniert es, das wenn im Feld "Name" beim tr064 json nichts drin steht, dass dann in der neu gebildeten Datei "EntgangeneAnrufe3" die Rufnummer (Feld "external") statt des Namens bzw. in die Variable "name" geschrieben wird? Dann wäre meine Anrufliste wieder perfekt!

      13.07.: 13:01 017600000000 > 0:01

      Danke Euch Experten!

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Semenchkare last edited by paul53

        @semenchkare sagte: die Rufnummer (Feld "external") statt des Namens bzw. in die Variable "name" geschrieben wird?

        Enthält jsonAll[i] die Eigenschaften "name" und "external"? Dann einfügen (Zeile 13):

                        if(!jsonAll[i].name) jsonAll[i].name = jsonAll[i].external;
        
        S 1 Reply Last reply Reply Quote 0
        • S
          Semenchkare @paul53 last edited by

          @paul53 sagte in Korrekte Liste entgangener Anrufe mittels dem tr-064 Adapter:

          if(!jsonAll[i].name) jsonAll[i].name = jsonAll[i].external;

          für mich sieht es so aus, das dann generell alle Namen überschrieben werden? dann könnte ich gleich ein anderes feld wählen. Ich probiere es aus! Und melde mich zurück!.

          lg seme

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Semenchkare last edited by paul53

            @semenchkare sagte: generell alle Namen überschrieben werden?

            if(!jsonAll[i].name) prüft, ob der Name leer ist.

            S 1 Reply Last reply Reply Quote 0
            • S
              Semenchkare @paul53 last edited by

              @paul53
              Suuper! Es funktioniert! Vielen Dank!

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              709
              Online

              31.9k
              Users

              80.1k
              Topics

              1.3m
              Posts

              2
              5
              506
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo