@hydrotec Hi. Ehrlich gesagt bin ich noch ganz neu hier und wusste nicht, dass der Adapter veraltet ist... Dann wundert es mich jetzt auch nicht mehr, dass ich so viel drum herum fixen musste =D
Ich versuche bei Gelegenheit den neuen damit auszustatten Wird aber wohl etwas dauern...
NEWS
Best posts made by khaos
-
RE: Verpasste Anrufe und AB Nachrichten von der FritzBox
Latest posts made by khaos
-
RE: Verpasste Anrufe und AB Nachrichten von der FritzBox
@feuersturm Hi, der Adapter lädt das TAM (telephone answering maschine / Anrufbeantworter) Protokoll herunter. Dazu gehören auch die WAV Dateien mit den Nachrichten. AVM Docu: https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_tam.pdf
Das Script oben reagiert dann nur darauf, dass eine neue Nachricht heruntergeladen wurde.
Ich verstehe nicht ganz, welche anderen Nachrichten du herunterladen willst?
Eine vollständige Liste aller Schnittstellen, die eine Fritzbox liefert findest du hier:
https://avm.de/service/schnittstellen/ -
RE: Verpasste Anrufe und AB Nachrichten von der FritzBox
@hydrotec Hi. Ehrlich gesagt bin ich noch ganz neu hier und wusste nicht, dass der Adapter veraltet ist... Dann wundert es mich jetzt auch nicht mehr, dass ich so viel drum herum fixen musste =D
Ich versuche bei Gelegenheit den neuen damit auszustattenWird aber wohl etwas dauern...
-
RE: Verpasste Anrufe und AB Nachrichten von der FritzBox
@arteck Ich habe noch einen anderen offen, der zuerst gemergt werden sollte
Habe leider beides auf /main entwickelt... im Nachhinein nicht sehr schlau, aber so ist es nun eben.EDIT: Ich habs jetzt einfach als PR erstellt... mal sehen ob er akzeptiert wird
-
Verpasste Anrufe und AB Nachrichten von der FritzBox
Servus!
Ich denke das gab es hier bisher nicht, da ich den fritzbox Adapter hierfür ordentlich erweitern musste
Wer will kann sich meine Version des Adapter direkt von GitHub installieren:
https://github.com/Khaos66/ioBroker.fritzbox
Neben der Anrufbeantworter-Funktion (TAM) sind auch kleinere Bugs behoben worden.Ihr habt dann in der fritzbox Instanz einen neuen Haken "Anrufbeantworter auslesen":
Das wiederum sorgt bei einem verpassten Anruf mit Nachricht auf dem AB dafür, dass die Nachricht als WAV Datei heruntergeladen wird und ein Eintrag im Objekt 'fritzbox.0.tam.messagesJSON' entsteht.
Wenn ihr den Telegram Adapter eingerichtet habt, dann kann euch dieses Script Nachrichten vom AB an Telegram weiterleiten. Das schaut dann etwa so aus:
const { existsSync } = require('fs'); const LAST_TAM_DATE_STATE = "lastTamDate"; existsState(LAST_TAM_DATE_STATE, (err, exists) => { if (!exists) { createState(LAST_TAM_DATE_STATE,''); } }) function parseDateTime(input) { var parts = input.match(/(\d+)/g); return new Date(parts[2], parts[1]-1, parts[0], parts[3], parts[4]); } on({id: "fritzbox.0.tam.messagesJSON", change: "ne"}, function(obj) { if (!obj.state.val) { return; } var messages = JSON.parse(obj.state.val); log(`messages: ${JSON.stringify(messages)}`,'debug'); if (messages.length == 0) { return; } // last message var message = messages[messages.length - 1]; log(`message: ${JSON.stringify(message)}`,'debug'); var lastTamDate = parseDateTime(getState(LAST_TAM_DATE_STATE).val); var messageDate = parseDateTime(message.date); if (messageDate <= lastTamDate) { log('skip old message','debug'); return; } if (message.audioFile && existsSync(message.audioFile)) { sendTo('telegram.0', {text: message.audioFile, caption: 'Nachricht', disable_notification: true}); log('Audio message send','debug'); } var msg; if (message.callerName) { msg = `📞 Verpasster Anruf von ${message.callerName} (${message.callerNumber}). Dauer: ${message.duration}`; } else { msg = `📞 Verpasster Anruf von ${message.callerNumber}. Dauer: ${message.duration}`; } log(msg, "info"); sendTo('telegram.0', msg); setState(LAST_TAM_DATE_STATE, message.date, true); });
Und dieses andere Script schickt eine Telegram Nachricht bei verpassten Anrufen ohne Nachricht auf dem AB und schaut so aus:
on("fritzbox.0.cdr.missedJSON", function(obj) { if (!obj.state.val) { return; } var msg; var caller; log(JSON.stringify(obj.state.val), "debug"); var num = obj.state.val.unknownNumber ? 'unbekannter Nummer' : obj.state.val.externalE164; log(`Missed call from ${num}`, "debug"); var phonebookstr = getState("fritzbox.0.phonebook.tableJSON").val; if (phonebookstr && phonebookstr.length>2){ var phonebook = JSON.parse(phonebookstr); log(`Phonebook: ${phonebook}`, "debug"); caller = phonebook.find(x => x.key == obj.state.val.externalNumber); } if (caller) { msg = `📞 Verpasster Anruf von ${caller.value.name} ${caller.value.type} (${num}). Dauer: ${obj.state.val.durationRingSecs}s`; } else { msg = `📞 Verpasster Anruf von ${num}. Dauer: ${obj.state.val.durationRingSecs}s`; } log(msg, "info"); sendTo('telegram.0', msg); });
Wer meine Arbeit schätzt kann sich gerne hier erkenntlich zeigen
PayPal Donate -
RE: IoBroker im Docker/ DSM HarmonyHub - PORT oder ??? Problem, keine Verbindung
Just in case someone has the same problem again. When using the harmony adapter inside docker, you need to add port 61991 to your countainer setup