Programmierung > Delphi/Lazarus > FRITZ!Box

Telefoneinstellungen

An dieser Stelle werden vorerst nur die Landes- und die Ortskennzahlen sowie die Rufnummern, welche in der Fritzbox konfiguriert sind, ermittelt.

Telefoneinstellungen

Eigenschaften

Es steht folgende Eigenschaft zur Verfügung:

property FonSettings[out aFonSettings: TFonSettings]: Boolean;

OUT FonSettings: Gibt den Record mit den Werten zurück.

type
  TFonSettings = record
    LKZprefix : AnsiString;
    LKZ       : AnsiString;
    OKZprefix : AnsiString;
    OKZ       : AnsiString;
    MSN       : Array of AnsiString;
  end;

Anwendung

Die Einstellungen werden erst beim Aufschlagen des Tabsheets gelesen:

procedure TfrmMain.tabDialShow(Sender: TObject);
var
  bDeclared   : Boolean;
  FonSettings : TFonSettings;
  i           : Integer;
  tmp         : AnsiString;
begin
  {
  *  Leeren
  }
  lblFonLKZPrefixValue.Caption := '';
  lblFonLKZValue.Caption       := '';
  lblFonOKZPrefixValue.Caption := '';
  lblFonOKZValue.Caption       := '';
  lblFonMSNValue.Caption       := '';
  {
  *  Class erstellt und an der FritzBox angemeldet?
  }
  bDeclared := (fFritzbox <> nil) and fFritzbox.IsLoggedIn;
  {
  *  Komponenten einstellen.
  }
  grbFonSettings.Enabled       := bDeclared;
  lblFonLKZ.Enabled            := bDeclared;
  lblFonLKZPrefixValue.Enabled := bDeclared;
  lblFonLKZValue.Enabled       := bDeclared;
  lblFonOKZ.Enabled            := bDeclared;
  lblFonOKZPrefixValue.Enabled := bDeclared;
  lblFonOKZValue.Enabled       := bDeclared;
  lblFonMSN.Enabled            := bDeclared;
  lblFonMSNValue.Enabled       := bDeclared;
  {
  *  Einstellungen holen
  }
  if bDeclared and fFritzbox.FonSettings[FonSettings]
  then begin
    {
    *  Werte
    }
    lblFonLKZPrefixValue.Caption := Format('(%s)', [FonSettings.LKZprefix]);
    lblFonLKZValue.Caption       := FonSettings.LKZ;
    lblFonOKZPrefixValue.Caption := Format('(%s)', [FonSettings.OKZprefix]);
    lblFonOKZValue.Caption       := FonSettings.OKZ;
    tmp := '';
    for i := 0 to Length(FonSettings.MSN) - 1
    do tmp := Format('%s, %s', [tmp, FonSettings.MSN[i]]);
    if Length(tmp) > 2
    then Delete(tmp, 1, 2);
    lblFonMSNValue.Caption := tmp;
    {
    *  Positionen
    }
    lblFonLKZValue.Left := lblFonLKZPrefixValue.Left +
                           lblFonLKZPrefixValue.Width + 7;
    lblFonOKZValue.Left := lblFonOKZPrefixValue.Left +
                           lblFonOKZPrefixValue.Width + 7;
  end;
end;

Informationen

Nach einer Anmeldung an der Fritzbox können die Werte per LUA Query abgefragt werden:

GET /query.lua?sid=xxxxxxxxxxxxxxxx&
                   LKZPrefix=telcfg:settings/Location/LKZPrefix&
                   LKZ=telcfg:settings/Location/LKZ&
                   OKZPrefix=telcfg:settings/Location/OKZPrefix&
                   OKZ=telcfg:settings/Location/OKZ HTTP/1.1
Host: fritz.box:80
Accept: text/xml
Keep-Alive: 115
Connection: Keep-Alive

Die erste Zeile der Abfrage enthält die aktuelle SessionID und es werden vier Variablen abgefragt. Die Antwort sieht zum Beispiel so aus:

 
HTTP/1.0 200 OK
Content-type: application/json
Expires: -1
 
{
 "LKZPrefix": "00",
 "LKZ": "49",
 "OKZPrefix": "0",
 "OKZ": "34xxx"
}

Für die MSN sieht die Abfrage so aus:

GET /query.lua?sid=xxxxxxxxxxxxxxxx&MSN=telcfg:settings/SIP/list(MSN) HTTP/1.1
Host: fritz.box:80
Accept: text/xml
Keep-Alive: 115
Connection: Keep-Alive

Die Antwort sieht zum Beispiel so aus:

HTTP/1.0 200 OK
Content-type: application/json
Expires: -1
 
{
 "MSN" : [
  {
   "MSN" : "8xxxx"'
  },
  {
   "MSN" : ""
  },
  ...
 ]
}'

In der Liste werden 20 MSN angezeigt. Egal ob sie existieren oder nicht.

Links

AVM Wiki: Telcfg