FHEM Forum

FHEM - Hardware => FRITZ!Box => Thema gestartet von: TomLee am 08 April 2024, 18:50:02

Titel: Rufsperren auslesen
Beitrag von: TomLee am 08 April 2024, 18:50:02
Hallo,

seit kurzem kann man ja mit blockIncomingPhoneCall im FRITZBOX-Modul Einträge für Rufsperren konfigurieren.
Was ich vermisse ist die Möglichkeit diese Rufsperren auszulesen.

Kann mir bitte wer zeigen wie solch ein tr064-Befehl für GetCallBarringList aussieht ?

Ist es denkbar dafür einen getter in FRITZBOX oder eher FB_CALLMONITOR zu ergänzen ?

Gruß

Thomas
Titel: Aw: Rufsperren auslesen
Beitrag von: Otto123 am 08 April 2024, 19:31:38
Hallo Thomas,

probier mal in der box hinter tr064Command
X_AVM-DE_OnTel:1 x_contact GetCallBarringListDa kommt bei mir ein Link auf eine xml Datei zurück.

Mit meiner Notiz (https://heinz-otto.blogspot.com/2018/08/fritzbox-mit-tr064-abfragen.html) bin ich da ziemlich geradeaus hingekommen.

Gruß Otto
Titel: Aw: Rufsperren auslesen
Beitrag von: JoWiemann am 08 April 2024, 19:37:34
Hallo,

Du kannst auch alle Einträge so abrufen:

get <name> luaData xhr 1 page callLock

oder im json Format

get <name> luaData [json] xhr 1 page callLock

Grüße Jörg
Titel: Aw: Rufsperren auslesen
Beitrag von: TomLee am 08 April 2024, 19:53:33
Thx, ich schaue mir später alle Vorschläge an, geht gerade nicht.

Die Json-Variante hört sich interessant an, am Ende sollen die Nummern im sip_filter-Attribut einer SIP-Definition landen. Meine bisherige Lösung über ein Spam-Telefonbuch mag ich damit ersetzen.

 
Titel: Aw: Rufsperren auslesen
Beitrag von: TomLee am 08 April 2024, 23:14:20
X_AVM-DE_OnTel:1 x_contact GetCallBarringList
Service='X_AVM-DE_OnTel:1'   Control='x_contact'   Action='GetCallBarringList'
----------------------------------------------------------------------
$VAR1 = {
          'GetCallBarringListResponse' => {
                                            'NewPhonebookURL' => 'https://192.168.188.1:49443/phonebook.lua?sid=0b2e5e06bb2c55c0&pbid=258'
                                          }
        };

Wenn ich die URL aufrufe, bekomme ich eine 404-Seite zurück ?
Gibts bei dem Aufruf irgendwas zu beachten ?



Wäre es i.O. wenn ich mir die Nummern unkonventionell via regexp aus dem JSON hole ?
{my $v=q({"data":[{"numberstring":"01234","uid":101,"numbers":[{"type":"geschäftl.","number":"01234"}],"typeSuffix":"_entry","name":"blib"},{"numberstring":"4567","uid":100,"numbers":[{"type":"geschäftl.","number":"04567"}],"typeSuffix":"_entry","name":"Testy"}],"sid":"c79e146eab0af28c","sidNew":0,"pid":"fonDevice"});;join (',',$v =~ m/number...(\d+)/gm)}
Wie würdet Ihr das angehen ?
Titel: Aw: Rufsperren auslesen
Beitrag von: JoWiemann am 09 April 2024, 07:32:25
Hallo,

Du kannst das json auch in einen Hash konvertieren und dann einfach eine Schleife drüber laufen lassen.

Grüße Jörg
Titel: Aw: Rufsperren auslesen
Beitrag von: Otto123 am 09 April 2024, 11:34:34
Zitat von: TomLee am 08 April 2024, 23:14:20Wenn ich die URL aufrufe, bekomme ich eine 404-Seite zurück ?
Gibts bei dem Aufruf irgendwas zu beachten ?
Bei mir wurde sofort eine xml Datei geladen.  :-\
Titel: Aw: Rufsperren auslesen
Beitrag von: JoWiemann am 09 April 2024, 12:44:35
Zitat von: Otto123 am 09 April 2024, 11:34:34
Zitat von: TomLee am 08 April 2024, 23:14:20Wenn ich die URL aufrufe, bekomme ich eine 404-Seite zurück ?
Gibts bei dem Aufruf irgendwas zu beachten ?
Bei mir wurde sofort eine xml Datei geladen.  :-\

Hallo,

ich bekomme auch nur eine 404. Habe aber auch dann nicht weiter geforscht.

Grüße Jörg
Titel: Aw: Rufsperren auslesen
Beitrag von: Otto123 am 09 April 2024, 12:58:32
ja, lohnt sich wahrscheinlich nicht. Aber ich bekomme nur die HTTPS Zertifikatswarnung der Fritzbox, wenn ich die ignoriere geht es. Ich dachte ich hätte vielleicht gestern noch eine Sitzung zur FB offen gehabt, aber es nicht so. 
Titel: Aw: Rufsperren auslesen
Beitrag von: TomLee am 11 April 2024, 00:36:26
Zitat von: JoWiemann am 09 April 2024, 07:32:25Hallo,

Du kannst das json auch in einen Hash konvertieren und dann einfach eine Schleife drüber laufen lassen.

Grüße Jörg

Einfach weil ich Spass dran hab und es mich fuchst wie man so was macht, halt ich hier mal fest wie das für die numberstring-Werte ginge. Bleiben tu ich aber bei der regexp-Variante.

Ohne Zuhilfenahme von "KI", ohne Unterstützungsbeiträge von Betateilchens hier im Forum zu lesen hätte ich es aber nicht hinbekommen:

sub treb {
my $json = '{"data":[{"name":"Spam1","typeSuffix":"_entry","numbers":[{"type":"geschäftl.","number":"04042236852"}],"uid":101,"numberstring":"04042236852"},{"name":"Spam10","typeSuffix":"_entry","numbers":[{"number":"03414999480076","type":"privat"}],"uid":109,"numberstring":"03414999480076"},{"numberstring":"0302325671212","uid":110,"numbers":[{"type":"privat","number":"0302325671212"}],"typeSuffix":"_entry","name":"Spam11"},{"typeSuffix":"_entry","name":"Spam12","numbers":[{"type":"privat","number":"020189067704"}],"uid":111,"numberstring":"020189067704"},{"numberstring":"021732651045","uid":112,"numbers":[{"number":"021732651045","type":"privat"}],"name":"Spam13","typeSuffix":"_entry"},{"numberstring":"036121871533","uid":113,"numbers":[{"number":"036121871533","type":"privat"}],"typeSuffix":"_entry","name":"Spam14"},{"typeSuffix":"_entry","name":"Spam15","uid":114,"numbers":[{"type":"privat","number":"04085599911"}],"numberstring":"04085599911"},{"name":"Spam16","typeSuffix":"_entry","numberstring":"0721509531027","uid":115,"numbers":[{"type":"privat","number":"0721509531027"}]},{"typeSuffix":"_entry","name":"Spam17","uid":116,"numbers":[{"type":"privat","number":"039155721386"}],"numberstring":"039155721386"},{"numberstring":"039155721230","numbers":[{"number":"039155721230","type":"geschäftl."}],"uid":100,"typeSuffix":"_entry","name":"Spam2"},{"typeSuffix":"_entry","name":"Spam3","numberstring":"073598407944","numbers":[{"type":"privat","number":"073598407944"}],"uid":102},{"numberstring":"028616879965","uid":104,"numbers":[{"type":"privat","number":"028616879965"}],"name":"Spam4","typeSuffix":"_entry"},{"numbers":[{"type":"privat","number":"085631477662"}],"uid":103,"numberstring":"085631477662","name":"Spam5","typeSuffix":"_entry"},{"numberstring":"089452054228","uid":105,"numbers":[{"number":"089452054228","type":"privat"}],"name":"Spam6","typeSuffix":"_entry"},{"numberstring":"06920023399","numbers":[{"number":"06920023399","type":"privat"}],"uid":106,"typeSuffix":"_entry","name":"Spam7"},{"numbers":[{"number":"023274177620","type":"privat"}],"uid":107,"numberstring":"023274177620","typeSuffix":"_entry","name":"Spam8"},{"name":"Spam9","typeSuffix":"_entry","numberstring":"0891247111346","numbers":[{"type":"privat","number":"0891247111346"}],"uid":108}],"sid":"bcc25b1219484c07","sidNew":1,"pid":"fonDevice"}';
my $decoded = decode_json($json);
my @numbers = @{$decoded->{'data'}};
my $counter = 0;
@numbers = map { $numbers[$counter++]->{'numberstring'} } @numbers;
Debug join(",",@numbers);
}

edit:

Die Nummern aus number:
@numbers = map { $numbers[$counter++]->{'numbers'}->[0]->{'number'} } @numbers;