Laden der Anrufliste aus der Fritzbox
Laden der Anrufliste aus der Fritzbox
Hier ein Mini-Projekt, mit dem man die Anrufliste einer Fritzbox laden und die letzten eingehenden Anrufe auflisten kann. Es werden Rufnummer, Name (sofern im Fritzbox-Telefonbuch hinterlegt) und der Zeitpunkt angezeigt.
Getestet wurde es mit einer Fritzbox 7390 mit Fritz-OS-V6.85, für die lediglich ein Passwort für das Login erforderlich ist (kein Username). Die Abwicklung des Log-ins über Challenge- und Session-IDs ist für den einen oder anderen vielleicht interessanter als der Zugriff auf die Anrufliste selbst.
Ich würde mich freuen, wenn sich jemand melden würde, der den Abruf der Fritzbox-Anrufliste per Gambas-SOAP-Request hinbekommen hat.
CM
Getestet wurde es mit einer Fritzbox 7390 mit Fritz-OS-V6.85, für die lediglich ein Passwort für das Login erforderlich ist (kein Username). Die Abwicklung des Log-ins über Challenge- und Session-IDs ist für den einen oder anderen vielleicht interessanter als der Zugriff auf die Anrufliste selbst.
Ich würde mich freuen, wenn sich jemand melden würde, der den Abruf der Fritzbox-Anrufliste per Gambas-SOAP-Request hinbekommen hat.
CM
- Dateianhänge
-
- Fritzbox_Call_List_0.0.2.tar.gz
- Mini-Projekt zum Abruf der Anrufliste aus der Fritzbox
- (20.8 KiB) 41-mal heruntergeladen
Re: Laden der Anrufliste aus der Fritzbox
moin,
bei meiner FB7590 geht es nicht, kommt nichts zurück.
Kennst Du dich dami auch aus?
bei meiner FB7590 geht es nicht, kommt nichts zurück.
Kennst Du dich dami auch aus?
Gruss
Re: Laden der Anrufliste aus der Fritzbox
Moin,
Ich kenne mich mit der 7590 leider nicht aus. Zeigt die App Fehlermeldungen?
Erhältst Du über folgendes Konsolenkommando eine Challenge-ID von der FB:
curl 'http://fritz.box/login_sid.lua?'
Die wird per XML-Datei zurück gemeldet und sieht beispielsweise so aus:
<?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>579965f6</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
Ist die Anrufliste aktiviert? https://service.avm.de/help/de/FRITZ-Bo ... anrufliste
Ich kenne mich mit der 7590 leider nicht aus. Zeigt die App Fehlermeldungen?
Erhältst Du über folgendes Konsolenkommando eine Challenge-ID von der FB:
curl 'http://fritz.box/login_sid.lua?'
Die wird per XML-Datei zurück gemeldet und sieht beispielsweise so aus:
<?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>579965f6</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
Ist die Anrufliste aktiviert? https://service.avm.de/help/de/FRITZ-Bo ... anrufliste
Re: Laden der Anrufliste aus der Fritzbox
moin,
bei curl 'http://fritz.box/login_sid.lua?' kommt der Text:
<?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>2a5071a5</Challenge><BlockTime>0</BlockTime><Rights></Rights><Users><User>fritz6311</User></Users></SessionInfo>
sadt Dir das was?
bei curl 'http://fritz.box/login_sid.lua?' kommt der Text:
<?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>2a5071a5</Challenge><BlockTime>0</BlockTime><Rights></Rights><Users><User>fritz6311</User></Users></SessionInfo>
sadt Dir das was?
Gruss
Re: Laden der Anrufliste aus der Fritzbox
Deine FB hat Dir eine Challenge-ID zurück gegeben. Das funktioniert also schon mal.
Als nächsten Schritt würde ich prüfen, was von der Programmzeile
Shell "curl --data " & Chr$(34) & "response=" & sChallenge & "-" & MD5 & "&username=" & Chr$(34) & Chr$(32) & "http://fritz.box/login_sid.lua" To s
in der IDE-Konsole zurück gegeben wird, indem ich unter die Zeile ein
Print "Rückgabe:"; s
einfüge. Das müsste eine XML-Datei sein, in der sich eine SID befindet. Das sieht bei mir als Beispiel so aus:
log:<?xml version="1.0" encoding="utf-8"?>
<SessionInfo><SID>9112d7c6ca4c5339</SID><C
hallenge>465cbdfb</Challenge><BlockTime>0<
/BlockTime><Rights><Name>Dial</Name><Acces
s>2</Access><Name>App</Name><Access>2</Acc
ess><Name>HomeAuto</Name><Access>2</Access
><Name>BoxAdmin</Name><Access>2</Access><N
ame>Phone</Name><Access>2</Access><Name>NA
S</Name><Access>2</Access></Rights></Sessi
onInfo
Wenn die Rückgabe eine SID enthält, dann müsstest Du Dir von der FB die Anrufliste mit folgendem Kommando als Beispiel holen können:
curl http://fritz.box:49000/calllist.lua?sid ... c6ca4c5339
Wenn die Rückgabe etwas anderes als eine SID enthält, dann würde ich mal vermuten, dass Du ein aktuelleres Fritz-OS verwendest, wo das nicht mehr funktioniert. Da ich aber mittlerweile auch den SOAP-Request hinbekommen habe, versuche einfach mal folgendes umfangreiches Konsolen-Kommando, wobei <username> und <passwort> durch die login-Daten Deiner FB zu ersetzen sind.
curl -k -m 5 --anyauth -u <username>:<passwort> "http://fritz.box:49000/upnp/control/x_contact" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction
dslforum-org:service:X_AVM-DE_OnTel:1#GetCallList" -d '<?xml version="1.0" encoding="utf-8" ?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelop ... etCallList xmlns:u="urn:dslforum-org:service:X_AVM-DE_OnTel:1" /></s:Body></s:Envelope>'
Wenn Du darauf etwas zurück bekommst wie das Folgende, dann hast Du gewonnen:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetCallListResponse xmlns:u="urn:dslforum-org:service:X_AVM-DE_OnTel:1">
<NewCallListURL>http://192.168.1.1:49000/calllist.lua?s ... allListURL>
</u:GetCallListResponse>
</s:Body>
Diese XML-Datei enthält den Download-Pfad für die Anrufliste, inklusive einer SID, womit Du Dir die Anrufliste runter laden kannst:
curl http://192.168.1.1:49000/calllist.lua?s ... fe51425edc
Sollte das geklappt haben, dann informiere mich bitte. Ich würde dann eine neue entsprechende Gambas-Version mit TR-064 SOAP-Request in den Club hochladen. Bei mir funktioniert das bereits, aber ich nutze noch Shell-Kommandos. Mit reinen Gambas-Mitteln habe ich das noch nicht probiert.
Als nächsten Schritt würde ich prüfen, was von der Programmzeile
Shell "curl --data " & Chr$(34) & "response=" & sChallenge & "-" & MD5 & "&username=" & Chr$(34) & Chr$(32) & "http://fritz.box/login_sid.lua" To s
in der IDE-Konsole zurück gegeben wird, indem ich unter die Zeile ein
Print "Rückgabe:"; s
einfüge. Das müsste eine XML-Datei sein, in der sich eine SID befindet. Das sieht bei mir als Beispiel so aus:
log:<?xml version="1.0" encoding="utf-8"?>
<SessionInfo><SID>9112d7c6ca4c5339</SID><C
hallenge>465cbdfb</Challenge><BlockTime>0<
/BlockTime><Rights><Name>Dial</Name><Acces
s>2</Access><Name>App</Name><Access>2</Acc
ess><Name>HomeAuto</Name><Access>2</Access
><Name>BoxAdmin</Name><Access>2</Access><N
ame>Phone</Name><Access>2</Access><Name>NA
S</Name><Access>2</Access></Rights></Sessi
onInfo
Wenn die Rückgabe eine SID enthält, dann müsstest Du Dir von der FB die Anrufliste mit folgendem Kommando als Beispiel holen können:
curl http://fritz.box:49000/calllist.lua?sid ... c6ca4c5339
Wenn die Rückgabe etwas anderes als eine SID enthält, dann würde ich mal vermuten, dass Du ein aktuelleres Fritz-OS verwendest, wo das nicht mehr funktioniert. Da ich aber mittlerweile auch den SOAP-Request hinbekommen habe, versuche einfach mal folgendes umfangreiches Konsolen-Kommando, wobei <username> und <passwort> durch die login-Daten Deiner FB zu ersetzen sind.
curl -k -m 5 --anyauth -u <username>:<passwort> "http://fritz.box:49000/upnp/control/x_contact" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction

Wenn Du darauf etwas zurück bekommst wie das Folgende, dann hast Du gewonnen:
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetCallListResponse xmlns:u="urn:dslforum-org:service:X_AVM-DE_OnTel:1">
<NewCallListURL>http://192.168.1.1:49000/calllist.lua?s ... allListURL>
</u:GetCallListResponse>
</s:Body>
Diese XML-Datei enthält den Download-Pfad für die Anrufliste, inklusive einer SID, womit Du Dir die Anrufliste runter laden kannst:
curl http://192.168.1.1:49000/calllist.lua?s ... fe51425edc
Sollte das geklappt haben, dann informiere mich bitte. Ich würde dann eine neue entsprechende Gambas-Version mit TR-064 SOAP-Request in den Club hochladen. Bei mir funktioniert das bereits, aber ich nutze noch Shell-Kommandos. Mit reinen Gambas-Mitteln habe ich das noch nicht probiert.
-
- Foriker
- Beiträge: 139
- Registriert: Di 4. Nov 2014, 21:11
- Kontaktdaten:
Re: Laden der Anrufliste aus der Fritzbox
Hallo Crabman,
habe dein Paket mal kurz getestet. Funktioniert bei mir mit der FritzBox 7412 und Fritz-OS-V6.86, in der GUI zeigt er aber nur die ausgehenden Anrufe an. Im Terminal mit Befehl curl fritz.box + SID kann ich aber die komplette Liste holen.
habe dein Paket mal kurz getestet. Funktioniert bei mir mit der FritzBox 7412 und Fritz-OS-V6.86, in der GUI zeigt er aber nur die ausgehenden Anrufe an. Im Terminal mit Befehl curl fritz.box + SID kann ich aber die komplette Liste holen.
Re: Laden der Anrufliste aus der Fritzbox
Hi Besenmuckel
Die App holt sich ebenfalls die gesamte Liste, aber nur die letzten 10 (ist veränderbar) werden angezeigt.
In Deinem Home-Verzeichnis solltest Du eine fritzbox_Call_list.xml finden. Diese legt die App "zum nachblättern" an. Wenn Du sie mit dem Firefox öffnest, kannst Du Dir die Anrufe und ihre Kategorisierung wunderbar anschauen.
Bei mir finden sich u.a. in der Liste:
1 = eingehende Anrufe
3 = ausgehende Anrufe
10 = gesperrte Anrufe
Aus dem Grunde werden bei mir in der App alle Anrufe außer "3 = ausgehende Anrufe" gelistet.
Eine offizielle Doku zu den Anruf-Typen habe ich nicht gefunden. Diese Dokumentation von AVM passt jedenfalls gar nicht dazu: https://service.avm.de/help/de/FRITZ-Bo ... anrufliste
Die Ausfilterung der Anrufe passiert in dieser Routine und dort kannst Du bei Bedarf variieren:
MyCallList.Clear
Do
If TypeElements.TextContent <> "3" Then 'Add it to the list if it wasn't an an outgoing call.
MyCallList.add(CallerElements.TextContent & ", " & NameElements.TextContent & ", " & DateElements.TextContent)
End If
Inc i
Loop Until MyCallList.count >= NumberOfCalls
Falls die Anruf-Typen bei Dir anders sein sollten als bei mir, würde mich das interessieren.
Die App holt sich ebenfalls die gesamte Liste, aber nur die letzten 10 (ist veränderbar) werden angezeigt.
In Deinem Home-Verzeichnis solltest Du eine fritzbox_Call_list.xml finden. Diese legt die App "zum nachblättern" an. Wenn Du sie mit dem Firefox öffnest, kannst Du Dir die Anrufe und ihre Kategorisierung wunderbar anschauen.
Bei mir finden sich u.a. in der Liste:
1 = eingehende Anrufe
3 = ausgehende Anrufe
10 = gesperrte Anrufe
Aus dem Grunde werden bei mir in der App alle Anrufe außer "3 = ausgehende Anrufe" gelistet.
Eine offizielle Doku zu den Anruf-Typen habe ich nicht gefunden. Diese Dokumentation von AVM passt jedenfalls gar nicht dazu: https://service.avm.de/help/de/FRITZ-Bo ... anrufliste
Die Ausfilterung der Anrufe passiert in dieser Routine und dort kannst Du bei Bedarf variieren:
MyCallList.Clear
Do
If TypeElements.TextContent <> "3" Then 'Add it to the list if it wasn't an an outgoing call.
MyCallList.add(CallerElements.TextContent & ", " & NameElements.TextContent & ", " & DateElements.TextContent)
End If
Inc i
Loop Until MyCallList.count >= NumberOfCalls
Falls die Anruf-Typen bei Dir anders sein sollten als bei mir, würde mich das interessieren.
-
- Foriker
- Beiträge: 139
- Registriert: Di 4. Nov 2014, 21:11
- Kontaktdaten:
Re: Laden der Anrufliste aus der Fritzbox
Ja ist bei mir auch so.
Habe dein Projekt nochmal getestet, jetzt geht es. Habe nichts geändert!
In der FritzBox kann man ja schön Anrufe mit unterdückter Rufnummer oder bestimmte Nummern sperren, so das es nicht mehr klingelt. Habe deshalb zusätzlich bei deiner Ausgabe noch die Type dazu gemacht, was funktioniert
Code: Alles auswählen
MyCallList.add(CallerElements[i].TextContent & ", " & TypeElements[i].TextContent & ", " & DateElements[i].TextContent & ", " & NameElements[i].TextContent)
Re: Laden der Anrufliste aus der Fritzbox
Danke für die Bestätigung.
Die Anzeige der Kategorie oder die Filterung nach Kategorien kann natürlich sehr hilfreich sein. Ich habe lediglich folgende Kategorien von Anrufen in meiner XML-Datei gefunden, wobei die Kategorie 2 auch noch von besonderem Interesse sein könnte:
1 = angenommene Anrufe
2 = verpasste Anrufe
3 = ausgehende Anrufe
10 = gesperrte Anrufe
Die Anzeige der Kategorie oder die Filterung nach Kategorien kann natürlich sehr hilfreich sein. Ich habe lediglich folgende Kategorien von Anrufen in meiner XML-Datei gefunden, wobei die Kategorie 2 auch noch von besonderem Interesse sein könnte:
1 = angenommene Anrufe
2 = verpasste Anrufe
3 = ausgehende Anrufe
10 = gesperrte Anrufe
Re: Laden der Anrufliste aus der Fritzbox
moin,
ich habe gerade erst gesehen, bei meiner Box kann man die Anrufliste speichern.
Habe ich gemacht. Jetzt kann ich aus dem File laden und ...
@ Crabman: mit Deinem Prg. bekomme ich nur die 1. Antwort ausgelesen. Danach ist nichts mehr. Die Arrays sind leider leer.
ich habe gerade erst gesehen, bei meiner Box kann man die Anrufliste speichern.
Habe ich gemacht. Jetzt kann ich aus dem File laden und ...
@ Crabman: mit Deinem Prg. bekomme ich nur die 1. Antwort ausgelesen. Danach ist nichts mehr. Die Arrays sind leider leer.
Gruss
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste