AVM-Fritzbox meldet Anrufe über Alexa

Alexa macht’s möglich: Sprachunterstützung bei der Telefonie mit der Fritzbox

„Anruf von Mutti!“ Alexa teilt bei einem Festnetzanruf sofort mit, wer sich dort meldet. Ist doch praktisch! Vielleicht kann man sich den Gang zum Telefon sparen oder sich schon mal freuen über den Anruf, oder man weiß gleich, wer zum Telefon gehen sollte.

Einen ersten Vorgeschmack auf Sprachunterstützung bei der Telefonie mit der AVM-Fritz.box bietet ein kleines Projekt, das sich mit ioBroker leicht umsetzen lässt.

Die Ansage des Anrufernamens ist übrigens eine Funktion, die sich auch mit dem Zusatzgerät Echo Connect von Amazon realisieren lässt. Das Gerät kann natürlich noch viel mehr, aber es kostet extra. Dabei hat es den Nachteil, dass man seine Kontaktdaten offenlegen muss. Bei der hier vorgestellten Lösung braucht man Amazon nicht mehr den Zugriff auf das eigene Telefonbuch zu überlassen. Die Kontaktdaten bleiben im eigenen Netzwerk.

Voraussetzungen

Es geht nur mit Festnetztelefonie über die AVM-Fritzbox und natürlich Amazon Alexa im heimischen Netz. Als Bindeglied wird ioBroker eingesetzt. ioBroker kann auf vielen Geräten installiert werden. Empfehlenswert ist ein Raspberry Pi (vor allem wegen des Stromverbrauchs, wenn das Gerät in Vollzeit eingesetzt wird). Zum Testen geht’s aber auch mit dem eigenen Desktop (mit Windows, macOS, diversen Linux-Systeme).

Mehr zu ioBroker

Neben den standardmäßig eingerichteten ioBroker-Adaptern müssen auch Instanzen des ioBroker-Adapters TR 064 für die Unterstützung der Fritzbox und des Adapters Alexa2 für das Echo-Gerät eingerichtet werden. Für unsere kleinen Javascript-Programme muss natürlich auch eine Instanz des Adapters der Script-Engine angelegt sein. Alle genannten Adapter werden bei der Standard-Installation von ioBroker mitgeliefert.

Der Adapter TR 064 ist strait forward einzurichten. Im Konfigurations-Fenster sind zunächst die Logindaten für den Zugriff auf die Fritzbox anzugegeben. Außerdem müssen die Checkboxen für „Anrufmonitor aktivieren“ und „Verwende Telefonbuch (Namensauflösung)“ ausgewählt sein.

Auf der AVM-Fritzbox muss noch der Callmonitor eingeschaltet und der Port 1012 freigeschaltet werden. Das geschieht durch Wählen von #96*5* auf einem angeschlossenen Telefon.

Mehr zu dem ioBroker Adapter TR 064 für die Fritzbox

Die Einrichtung des Adapters Alexa2 ist wegen des Session-Cookies etwas tricky, aber bei mir hat es mit der YouTube-Anleitung von SchimmerMediaHD geklappt.

Mehr zu dem ioBroker-Adapter Alexa2 für Amazon-Echo-Geräte

Los geht’s

Nachdem die Voraussetzungen vorhanden sind, erstellen wir im ioBroker unter dem Tab „Skripte“ ein neues Javascript-Programm „jsFritzboxTelefonie“.

Ein Unterverzeichnis von „common“ oder „common“ selbst auswählen und „+“ anklicken. Als Typ „Javascript“ auswählen.

Schauen wir uns den TR-0654-Adapter an:

Alle relevanten Daten für einen eingehenden Anruf finden sich in
„tr-064.0.callmonitor.inbound.json“ (blauer Balken).

In der Objekteigenschaft „tr-064.0.callmonitor.inbound.json“ ist die String-Darstellung des Inbound-Objektes enthalten:

{"caller":"0123456789", "callee":"9876543", "_type":"inbound", "callerName":"Falko", "calleeName":""}

Der Adapter liefert also – durch einen internen Zugriff auf das Fritzbox-Telefonbuch – direkt den Namen des Anrufers, und zwar im Feld „callerName“. Nun brauchen wir nur noch Alexa zur Sprachausgabe zu bewegen.

Mit unserem Javascript erstellen wir eine Subskription, die auf einen Anruf, d.h. eine Änderung der o.g. Objekteigenschaft wartet.

on({id: 'tr-064.0.callmonitor.inbound.json'/*json*/, change : "any"}, function(json) { 

Um auf den Inhalt des Inbound-Objekts einfach zuzugreifen, wandeln wir den übergebenen JSON-String in ein Objekt um:

        var jsonObj = JSON.parse(json.state.val); 

Wir erhalten den Anrufernamen aus unserem Telefonbuch:

        var callerName = jsonObj.callerName;

Wenn der Anrufername leer ist, konnte er nicht ermittelt werden. Das heißt, entweder steht der Anrufer nicht im Telefonbuch steht oder er hat keine Telefonnummer mitgesendet.

        if (callerName === "") {
callerName = "Unbekannt";
}

Nun braucht nur noch der gewünschte Text ausgegeben zu werden. Dazu wird in der ioBroker-Objektansicht der Alexa2-Instanz die Liste der Echo-Devices aufgeklappt. Hier lesen wir nun die „AlexaId“ ab, das heißt, die Id, des für die Sprachausgabe zu verwendenden Echo-Gerätsn. Das Ausführen einer Sprachausgabe auf dem Geräte erfolgt durch Setzen von „Commands.speak“

    setState(
"alexa2.0.Echo-Devices.<alexaId>.Commands.speak",
"Anruf von " + callerName
);
});

Hier noch mal das Javascript-Programm vollständig. Für <alexaId> ist natürlich die tatsächliche Alexa-Id einzusetzen.

/************* Anruf ansagen ***************/

on({id: 'tr-064.0.callmonitor.inbound.json'/*json*/, change : "any"}, function(obj) {
var jsonObj = JSON.parse(obj.state.val);
if (jsonObj.callee.endsWith("9876543")) {
var callerName = jsonObj.callerName;
if (callerName === "") {
callerName = "Unbekannt";
}
setState(
"alexa2.0.Echo-Devices.<alexaId>.Commands.speak",
"Anruf von " + callerName
);
}
});

Falls man mehrere Telefonnummern hat, kann es Sinn machen, nach den Telefonnummern zu unterscheiden und nur bei bestimmten Telefonnummern den Anrufer anzusagen. So ist es oben umgesetzt.

Vor dem ersten Test nicht vergessen, im Skript-Editor von ioBroker das neue Programm durch Betätigen von „Skript ausführen“ (rotes Dreieck) zu aktivieren. Dann wird das Programm sofort nach jedem Speichern ausgeführt.

Wenn dir dieser Artikel geholfen hat,
deine eigene Lösung zu verwirklichen,
dann lass‘ es mich wissen.
Schreibe einen kurzen Kommentar.
Vielen Dank!

Auf den nächsten Seiten findest du die Updates „Anrufernamen wiederholen“ und „Gesperrte Rufnummern nicht ansagen“.

Autor: Rai

jahrelanger Homematic-Benutzer, öffnet sich mit Hilfe von Raspberry Pi und ioBroker für Neues im Internet of Things

6 Gedanken zu „AVM-Fritzbox meldet Anrufe über Alexa“

    1. Hallo Maik, die AlexaID findet du am einfachsten in der ioBroker-Objektansicht der Alexa2-Instanz, wenn du die Liste der Echo-Devices aufgeklappst. Ich habe den Text oben etwas angepassst. Ist dann hoffentlich verständlicher. Grüße Rai

    1. Hallo Sven, schön, dass dir der Artikel gefällt. Wenn du das umgesetzt hast, bitte schreib mal, wie es war, ob Probleme aufgetreten sind usw. Gruß Rai

  1. Hallo, die Idee ist nicht schlecht. Funktioniert wie beschrieben.
    Prob bei mir: In der Fritze gesperrte Anrufer werden auch angesagt. Kann man da was machen???

    1. Danke für den Hinweis. Ich habe den Artikel ergänzt. Jetzt können gesperrte Anrufer herausgefiltert werden. Bin gespannt auf deine Rückmeldung!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.