NEWS

[Vorlage] Simple Anrufer-Ansage via Alexa/tr-064



  • Anbei ein kleines Javascript für eine Ansage des Anrufers bzw. der Nummer über den Alexa2-Adapter.
    Benötigt wird auch der tr-064-Adapter (aktuelle 3.x Version) für das Empfangen der Fritz!Box-Daten.

    //* Insert own numbers with description
    const numbers = {
        '01234512345': 'privat',
        '01234522222': 'Büro'
    };
    
    function tellMeWhoCalls(sayattention) {
        let curtime = new Date();
        //* not between 21pm and 7am UTC
        if(curtime.getHours() < 7 || curtime.getHours() > 21) {
            return;
        }
        let targ = getState('tr-064.0.callmonitor.inbound.callee').val;
        let src = getState('tr-064.0.callmonitor.inbound.caller').val;
        let srcName = getState('tr-064.0.callmonitor.inbound.callerName').val;
    
        let targName = numbers[targ];
        if(!targName) {
            targName = 'unbekannt';
        }
    
        let text = (sayattention ? 'Achtung! ' : '') + 'Anruf für ' + targName + ' von ';
        if(srcName) {
            text += srcName;
        } else if(src) {
            text += '<say-as interpret-as="digits">' + src + '</say-as>';
        } else {
            text += 'unbekannter Nummer';
        }
        text += '.';
    
        text = '<speak>' + text + '</speak>';
    
        //* replace XXXXX by your echo device id and add further lines for more devices
        setState('alexa2.0.Echo-Devices.XXXXXXX.Commands.ssml', text);
    
        if(targName === 'privat') {
            //* replace YYYYYY by your echo device id or delete this part if you don't need it
            setState('alexa2.0.Echo-Devices.YYYYYYYY.Commands.ssml', text);
        }
    }
    
    let ringInterval = null;
    
    on({id: 'tr-064.0.callmonitor.ringing', change: 'ne'}, function(obj) {
        if(obj.state.val !== true) {
            //* no longer ringing
            if(ringInterval) {
                clearInterval(ringInterval);
                ringInterval = null;
            }
            return;
        }
    
        if(ringInterval) {
            clearInterval(ringInterval);
        }
        //* repeat caller anouncement each 10 secs
        ringInterval = setInterval(function() {
            tellMeWhoCalls();
        }, 10000);
    
        //* first time add "Achtung!" in front of the text
        setTimeout(function() {
            tellMeWhoCalls(true);
        }, 1000);
    });
    

  • Starter

    Ich habe dein Script importiert, doch leider sagt Alexa nichts.
    tr-064 und Alexa2 sind natürlich installiert.
    Angepasst im Script habe ich die XXXXX für Alexa und die Nummer für privat.
    Den zweiten für ein zweites Alexa Gerät habe ich gelöscht.
    Was könnte ich denn verkehrt gemacht haben?


  • Starter

    @jensus11 sagte in [Vorlage] Simple Anrufer-Ansage via Alexa/tr-064:

    Ich habe dein Script importiert, doch leider sagt Alexa nichts.
    tr-064 und Alexa2 sind natürlich installiert.
    Angepasst im Script habe ich die XXXXX für Alexa und die Nummer für privat.
    Den zweiten für ein zweites Alexa Gerät habe ich gelöscht.
    Was könnte ich denn verkehrt gemacht haben?

    Habe es selber hinbekommen. Lag am alten tr-064. Mit der 3.1.4 läuft das.



Suggested Topics

1.9k
Online

32.2k
Users

38.9k
Topics

526.7k
Posts