Seit gestern gibt es im Repository den Fritzbox-Callmonitor. Die Node kommuniziert mit der Fritzbox und liefert ein Ereignis, wenn Anrufe auftreten. Es wird eine Struktur analog der node-red-contrib-fritz zurückgegeben, die dann weiter verarbeitet werden kann. Vielen Dank an @pmayer für das icon.
Die Node befindet sich bei den optionalen Nodes im Ordner “Communication/Kommunikation”.
So sieht mein Beispiel-Flow aus, es wird eine Nachricht per Telegram versendet, wenn ein Anruf verpasst wird oder der Anrufbeantworter abgenommen hat. Wenn das Telefon klingelt, blinken die Lampen zusätzlich.
Hier der Flow als Text:
[{"id":"f4417646.f4f1a8","type":"variable-out","namespace":"variable","z":"a05d1644.71b5a8","variabletype":"device","family":"5","peername":"AlarmKlingel","peerid":"204","channel":"1","variable":"ALERT","name":"","x":560,"y":50,"wires":[[]]},{"id":"c2c7d893.5e56c8","type":"function","namespace":"function","z":"a05d1644.71b5a8","name":"call event","func":"$payload=json_decode($message['payload']);\n\nif($payload->type==\"MISSED\") {\n $message['payload'] = $payload->caller . \" hat angerufen.\";\n output(1, $message);\n} \nelse if($payload->type==\"INBOUND\") \n{\n $message['payload'] = 2;\n output(0, $message);\n}\nelse if($payload->type==\"DISCONNECT\"\n && $payload->extension==\"40\") \n{\n $message['payload'] = $payload->caller . \" hat \" . $payload->duration .\" s auf den Anrufbeantworter gesprochen.\";\n output(2, $message); \n}\nreturn null;","inputs":1,"outputs":3,"noerr":0,"x":255,"y":80,"wires":[[{"id":"f4417646.f4f1a8","port":0}],[{"id":"204ef20b.b950de","port":0}],[{"id":"204ef20b.b950de","port":0}]]},{"id":"dcdeb670.e3b678","type":"fritzbox-callmonitor","namespace":"communication","z":"a05d1644.71b5a8","name":"","fritzbox":"10.10.10.1","port":1012,"x":70,"y":80,"wires":[[{"id":"c2c7d893.5e56c8","port":0}]]}]
In Zukunft wird es noch weiter Nodes geben, die mehr mit der Steuerung/Abfrage der Fritzbox zu tun haben, die dauern aber noch was.
Im Payload befinded sich folgende Struktur:
type := Typ [INBOUND|OUTBOUND|CONNECT|MISSED|DISCONNECT|UNREACHED]
id := interne Id
timestamp := Zeitpunkt als string
caller: Nummer des Anrufers als string
callee: Nummer des Angerufenen als string
extension: Nummer der Nebenstelle as string
duration: Dauer als integer
- INBOUND / OUTBOUND werden beim Rufaufbau gesendet
- CONNECT bei Herstellung der Verbindung
- MISSED / DISCONNECT / UNREACHED beim Beenden des Rufes. (Je nach INBOUND oder OUTBOUND und ob die Verbindung hergestellt wurde.)