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.
    • 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

                        1.1k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

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