Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Anrufer Ansage wiederholen, bis Gespäch angenommen wurde

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Anrufer Ansage wiederholen, bis Gespäch angenommen wurde

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

      Hallo liebe Gemeinde,

      nun habe auch ich mich versucht etwas in ioBroker einzuarbeiten und ein kleines Script zusammen gebastelt,

      welches mir per SayIt mitteilt, das ein Anruf über die Fritzbox eingeht. Das funktioniert, soweit ganz gut 🙂 .

      Doch nun hätte ich diese Ansage, nicht nur einmal, sondern solange bis das Gespräch angenommen wurde,

      sprich bis "fritzbox.0.calls.ring" auf false wechselt.

      Das habe ich bisher:

      var Anrufer = "fritzbox.0.calls.ringActualNumber"; // actual last ringing number
      
      on ({id: Anrufer, valGe: 1}, AusgabeAnrufer);
      
      function AusgabeAnrufer(){
         setState ('sayit.0.tts.text', 'Hinweis! Anruf von ' + getState(Anrufer).val); 
      }
      
      

      Ich hoffe, das mir bei diesem Vorhaben jemand helfen kann.

      Vielen Dank schonmal.

      1 Reply Last reply Reply Quote 0
      • derAuge
        derAuge last edited by

        Hallo Netprog,

        willkommen im Forum

        du könntest doch in deiner Funktion eine Schleife einbauen….

        if ring == true...

        dann ansagen

        else

        ende

        Gruß

        Jürgen

        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          Probier mal:

          var idAnrufer   = "fritzbox.0.calls.ringActualNumber";  // actual last ringing number
          var idRing      = "fritzbox.0.calls.ring";
          var idSayIt     = 'sayit.0.tts.text';
          var ansageDelay = 8000;                                 // Zeit in ms zwischen den Ansagen
          var timer       = null;
          
          function ausgabeAnrufer(){
             setState (idSayIt, 'Hinweis! Anruf von ' + getState(idAnrufer).val); 
          }
          
          function wiederholungAnsage(delay) {
              delay = delay || 8000;           // wenn kein Delay übergeben wurde, nimm 8000ms
              if (!getState(idRing).val) return;   // ring noch aktiv? wenn ja weiter, wenn nein Abbruch
              ausgabeAnrufer();                       // Ansage
              log("Ansage Wiederholung");
              timer = setTimeout(function() {
                  timer = null;
                  wiederholungAnsage(delay); // ruft den Timer nach Ablauf wieder auf
              },delay);
          }
          
          // bei Anruf (aktuelle anrufende Nummer ist nicht leer)
          //on ({id: idAnrufer, valGe: 1}, wiederholungAnsage);
          
          on({id:idAnrufer ,change:'ne'}, function (obj) {
              if (obj.state.val !== "") wiederholungAnsage(ansageDelay);
          });
          
          

          Du kannst das Skript auch erweitern, dass der Name angesagt wird, wenn bekannt (nicht aus dem Fritzbox Telefonbuch)

          1 Reply Last reply Reply Quote 0
          • Netprog
            Netprog last edited by

            Hallo,

            vielen Dank für deine Hilfe @ruhr70

            …das hätte ich mit meinen jetzigen Anfänger-Kenntnissen niemals hinbekommen.

            Jetzt funktioniert das genau so, wie ich mir das vorgestellt hatte.

            Nun merke ich immer mehr, wieviel Arbeit da noch vor mir steckt 😉

            1 Reply Last reply Reply Quote 0
            • derAuge
              derAuge last edited by

              Hale es auch direkt getestet

              Super Sache !!

              Mir ist folgendes Aufgefallen:

              Die erste Ansage kommt "laut"

              Die Wiederholungen sind "leiser"

              Gruß

              Jürgen

              1 Reply Last reply Reply Quote 0
              • ruhr70
                ruhr70 last edited by

                Ggf. Ist die Zeit zwischen den Ansagen zu kurz?

                Manchmal verschluckt sich SayIt und das Zwischenspeichern und Wiederherstellen der Lautstärke klappt nicht.

                Gesendet von iPad mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • Netprog
                  Netprog last edited by

                  Hallo

                  das mit den unterschiedlichen Lautstärken, kann ich so nicht feststellen.

                  Was mir jetzt, nach mehrfachen Testanrufen jedoch aufgefallen ist, ist

                  die Tatsache, das der Zeitraum vom ersten Klingeln bis zur ersten Ansage,

                  etwas länger ist, als die Zeiträume zwischen den Ansagen.

                  Delay auf 10000ms verlängert und nun passt alles - Perfekt !!!

                  1 Reply Last reply Reply Quote 0
                  • N
                    Nordlicht last edited by

                    @ruhr70:

                    Probier mal:

                    ! var idAnrufer = "fritzbox.0.calls.ringActualNumber"; // actual last ringing number var idRing = "fritzbox.0.calls.ring"; var idSayIt = 'sayit.0.tts.text'; var ansageDelay = 8000; // Zeit in ms zwischen den Ansagen var timer = null; ! function ausgabeAnrufer(){ setState (idSayIt, 'Hinweis! Anruf von ' + getState(idAnrufer).val); } ! function wiederholungAnsage(delay) { delay = delay || 8000; // wenn kein Delay übergeben wurde, nimm 8000ms if (!getState(idRing).val) return; // ring noch aktiv? wenn ja weiter, wenn nein Abbruch ausgabeAnrufer(); // Ansage log("Ansage Wiederholung"); timer = setTimeout(function() { timer = null; wiederholungAnsage(delay); // ruft den Timer nach Ablauf wieder auf },delay); } ! // bei Anruf (aktuelle anrufende Nummer ist nicht leer) //on ({id: idAnrufer, valGe: 1}, wiederholungAnsage); ! on({id:idAnrufer ,change:'ne'}, function (obj) { if (obj.state.val !== "") wiederholungAnsage(ansageDelay); }); !

                    Du kannst das Skript auch erweitern, dass der Name angesagt wird, wenn bekannt (nicht aus dem Fritzbox Telefonbuch) `

                    Hi Ruhr70,

                    ist es auch möglich, dass der Callmonitor nur auf 1 Anschlussnummer reagiert? Es gibt hier im Haushalt 4 Anschlussnummer, von denen aber nur 1 für diese Funktion vorgesehen wäre. So wie das Skript jetzt ist, wird es wohl auf alle Anschlussnummern reagieren vermute ich mal.

                    Danke.

                    Gruß

                    Thomas

                    1 Reply Last reply Reply Quote 0
                    • ruhr70
                      ruhr70 last edited by

                      Das ist in der Theorie möglich…

                      Ich habe eigentlich gedacht, dass ich viel zu viel Datenpunkte im Adapter fülle. Nun gibt es doch immer wieder mal Wünsche 😉

                      Wenn Du mehrere Anrufe parallel hast, ist es aufwendiger zu programmieren.

                      Man kann den Datensatz unter fritzbox.0.message auswerten.

                      Dort steht die anrufende Rufnummer drin und die angerufene Rufnummer.

                      13.01.17 16:15:47;RING;0;08150815;47114711;SIP1;
                      
                       *    Format der Fritzbox-Meldungen:
                       *
                       *    Ausgehende Anrufe:            datum;CALL;      CallID;Nebenstelle;callingNumber;calledNumber;lineType;
                       *    Eingehende Anrufe:            datum;RING;      CallID;callingNumber;calledNumber;lineTpe;
                       *    Zustandegekommene Verbindung: datum;CONNECT;   CallID;Nebenstelle;connectedNumber;
                       *    Ende der Verbindung:          datum;DISCONNECT;CallID;dauerInSekunden;
                      

                      Du müsstest auf die Meldung mit dem Ring reagieren:

                      • RING -> für die gewünschte calledNumber:

                      nein: nicht reagieren

                      ja: callID merken und Ansage bis zum CONNECT oder DISCONNECT mit dieser CallID wiederholen.

                      Ich komme leider erst frühestens in einer Woche dazu 😞

                      1 Reply Last reply Reply Quote 0
                      • N
                        Nordlicht last edited by

                        @ruhr70:

                        Das ist in der Theorie möglich…

                        Ich habe eigentlich gedacht, dass ich viel zu viel Datenpunkte im Adapter fülle. Nun gibt es doch immer wieder mal Wünsche 😉 `

                        Hi,

                        zuviel geht gar nicht :mrgreen: .

                        Für mich als Laien ist das etwas zu heftig. Ich warte da gerne die Woche ab bis Du Zeit dafür hast…..

                        Mehrere Anrufe gleichzeitig kommt eigentlich nicht vor. So wild geht es hier nicht ab.

                        Danke fürs Aufnehmen des Wunsches.

                        Danke und Gruß

                        Thomas

                        1 Reply Last reply Reply Quote 0
                        • A
                          andyb last edited by

                          Hi,

                          Für Android gibt es was ähnliches, läuft allerdings nicht über iobroker. Vielleicht kann man das ja irgendwie einbinden.

                          http://www.sonofy.co

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          439
                          Online

                          31.6k
                          Users

                          79.5k
                          Topics

                          1.3m
                          Posts

                          5
                          11
                          2115
                          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