Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Deine Fritzbox hat ganz sicher keinen USER den Du benötigst? Bei mir nutze ich das ohne User nur mit den abgespeckten Wifi Repeatern...
Aaaah du hast Recht. Beim Einloggen auf der Web Oberfläche muss man keine eingeben. Aber mit neuem Fritz Box Benutzer und dem neu konfigurierten Passwort gehts.
Danke dir. Jetzt kanns losgehen
gibt es auch eine Möglichkeit die Nummer des aktuellen Anrufers über der Callmonitor abzufragen?
habe leider nichts gefunden, ausser ich würde die Logik über die Anruftrigger auslösen.
In sh.avm.monitor.incoming.last_caller steht leider nicht die aktuelle Nummer, sonder....wie wohl der Name auch sagt....die des letzten Anrufers. Leider ist das ja nicht der aktuelle Anrufer.
Gibt es eine Variable oder bin ich nur etwas blind......gedankenschuppser gerne erwünscht.
in dem last_caller sollte schon der aktuelle stehen, ich parse die Datensätze wie folgt:
Eingehende Anrufe lösen ein RING Event aus. Du siehst das auch, wenn Du mit Telnet auf den Callmonitor gehst und einen Anruf kriegst..
(Details: http://www.wehavemorefun.de/fritzbox/Callmonitor)
Code:
def _parse_line(self, line):
"""
Parses a data set in the form of a line.
Data Format:
Ausgehende Anrufe: datum;CALL;ConnectionID;Nebenstelle;GenutzteNummer;AngerufeneNummer;SIP+Nummer
Eingehende Anrufe: datum;RING;ConnectionID;Anrufer-Nr;Angerufene-Nummer;SIP+Nummer
Zustandegekommene Verbindung: datum;CONNECT;ConnectionID;Nebenstelle;Nummer;
Ende der Verbindung: datum;DISCONNECT;ConnectionID;dauerInSekunden;
:param line: data line which is parsed
"""
self.logger.debug(line)
line = line.split(";")
if (line[1] == "RING"):
call_from = line[3]
call_to = line[4]
self._trigger(call_from, call_to, line[0], line[2], line[1], '')
elif (line[1] == "CALL"):
call_from = line[4]
call_to = line[5]
self._trigger(call_from, call_to, line[0], line[2], line[1], line[3])
elif (line[1] == "CONNECT"):
self._trigger('', '', line[0], line[2], line[1], line[3])
elif (line[1] == "DISCONNECT"):
self._trigger('', '', '', line[2], line[1], '')
Im RING Event handle ich das dann das call_from auch dementsprechend ab:
Code:
# call is incoming
if event == 'RING':
[...]
# process items specific to incoming calls
for item in self._items_incoming: # update items for incoming calls
if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['is_call_incoming']:
item(1)
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_caller_incoming']:
if call_from != '' and call_from is not None:
name = self._callback(call_from)
if name != '' and not name is None:
item(name)
else:
item(call_from)
else:
item("Unbekannt")
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
'last_call_date_incoming']:
item(time)
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_incoming']:
item(event.lower())
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_number_incoming']:
item(call_from)
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
'last_called_number_incoming']:
item(call_to)
Hast Du in der plugin.yaml keinen call_monitor_incoming_filter, geht er da auch IMMER rein. Das geht bei mir auch ziemlich sicher bereits produktiv...
Im Wert steht aber der aufgelöste Name (wenn er im Telefonbuch gefunden wird) und nur wenn nicht, die Nummer. Letztere wird aber ein ein eigenes Item mit avm_data_type last_number_incoming geschrieben.
Habe es nochmals getestet, im last_caller ist immer die Nummer des letzten Anrufers drin.
Ich frage auch auch das „ring“ event ab, das klappt alles nur die Nummer des aktuellen Anrufers kann ich nicht über sh.avm.monitor.incoming.last_caller abfragen. Erst beim nächsten Aufruf ist diese dann verfügbar.
if tuerrufnummer == sh.avm.monitor.incoming.last_caller():
logger.info("ANRUFINFO:" + sh.avm.monitor.incoming.last_caller())
....benutze das zum Auswerten der Türsprechstelle.
bin von dem alten 2er fritzbox plugin nun auf das avm plugin umgestiegen, daher bin ich das am anpassen und komme nun irgendwie nicht weiter.
Kriegst Du andere Events???? Evtl ist schlichtweg der Callmonitor nicht angeschaltet auf Deiner Fritzbox... Die Felder befüllt er mind. beim Restart auch via normaler Webservices.
Ich kann das jetzt nicht testen weil die Kinder schlafen, aber ich visualisiere bei mir im entsprechende SV-Widget ganz ganz sicher den eingehenden Anrufer... Wenn ich die Nummer nicht kriegen würde, würde das Trigger-Item ja auch nicht gehen.. Und nochmal, die NUMMER steht in einem anderen Feld, nicht in last_caller..
ACHJA WICHTIG: Der Callmonitor reagiert NICHT auf Interne Nummern.. Teste mal mit Telefon.. Nur weil ich "Türsprechanlage" lese... das ist ein fehlendes Feature in der Fritzbox.. Siehe bspw. hier: https://forum.fhem.de/index.php?topic=29595.0
auch klappts ja mit der rufnummer, eben nur immer der letzte Anrufer.
Habe es von verschiedenen Nummern getestet....daher ist da immer der Versatz drin.
ja, mit der Türrufnummer ist klar, habe das über extern realisiert.
Hat ja immer geklappt...und klappt ja jetzt auch, aber leider erst beim 2. Ruf.
Zuletzt geändert von blutwurst; 29.10.2017, 19:38.
Ich teste das morgen mal.. Wenn ich jetzt alle 3 Geräte antelefoniere ist mir der Hass des Rests der Familie sicher..
Wenn dann ists ein Bug, aber denm Code nach zu gehen, muss das eigentlich gehen, wenn das Trigger-Item auch geht.. der Codeblock kommt nur wenige Zeilen später und verwendet die gleichen Variablen call_from und call_to.
Ich tippe aber eher darauf, dass irgendwas an der Konfiguration der Items falsch ist?!
Hier nochmal im gesamten:
Code:
if event == 'RING':
# process "trigger items"
for trigger_item in self._trigger_items:
if self._plugin_instance.get_iattr_value(trigger_item.conf, 'avm_data_type') == 'monitor_trigger':
trigger_item(0)
# self.logger.debug(self._plugin_instance.get_iattr_value(trigger_item.conf, 'avm_data_type') + " " +trigger_item.conf['avm_incoming_allowed']+" "+trigger_item.conf['avm_target_number'])
if 'avm_incoming_allowed' not in trigger_item.conf or 'avm_target_number' not in trigger_item.conf:
self.logger.error(
"both 'avm_incoming_allowed' and 'avm_target_number' must be specified as attributes in a trigger item.")
elif trigger_item.conf['avm_incoming_allowed'] == call_from and trigger_item.conf[
'avm_target_number'] == call_to:
trigger_item(1)
if self._call_monitor_incoming_filter in call_to:
# set call id for incoming call
self._call_incoming_cid = callid
# reset duration for incoming calls
self._duration_item['call_duration_incoming'](0)
# process items specific to incoming calls
for item in self._items_incoming: # update items for incoming calls
if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['is_call_incoming']:
item(1)
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_caller_incoming']:
if call_from != '' and call_from is not None:
name = self._callback(call_from)
if name != '' and not name is None:
item(name)
else:
item(call_from)
else:
item("Unbekannt")
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
'last_call_date_incoming']:
item(time)
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_incoming']:
item(event.lower())
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_number_incoming']:
item(call_from)
elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [
'last_called_number_incoming']:
item(call_to)
Poste doch am besten mal deine plugin.conf/yaml und die entsprechenden Items.. oh und vielleicht das Modell der FB.. Hast Du die Telnet-Analyse mal gemacht? Kommt da die Nummer bei RING?
Telnet anlayse? Sagt mir jetzt so nix. Muss ich mal nachschauen, aber meine Dreambox zeigt zumindest due richtige Nummer an, daher müsste es eigentlich passen.
Zuletzt geändert von blutwurst; 29.10.2017, 20:06.
blutwurst Ich habe gerade getestet. Bei mir updated der Anrufer SOFORT sobald es das erste Mal klingelt. Anruf vom Handy auf die Festnetznummer. Telefonnummer ebenfalls..
Bei Dir ist also was anderes faul. Mach mal den Telnet-Test vom Callmonitor...
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar