xsharp.eu • Fritz.Box Wählhilfe
Page 1 of 1

Fritz.Box Wählhilfe

Posted: Thu Apr 01, 2021 1:16 pm
by Frank Müßner
Hallo,

vielleicht kann mir jemand helfen. Ich suche schon seit Stunden im Netz.
Ich versuche gerade eine Fritz.Box dazu zu überreden einen Anruf auszuführen. Also eine Wählhilfe. Da es keinen Tapi Treiber mehr gibt, kann das ja alles über TR-064 Schnittstelle vorgenommen werden. Vermute ich jedenfalls :-)
Leider finde ich keinen Einstiegspunkt der mir ein C# Beispiel liefert, was ich dann in X# umsetzen könnte.
Ich finde nur Scripte die ich nicht verstehe und umsetzen kann.
Hat jemand damit schon Erfahrungen und würde diese teilen?

Grüße Frank

Fritz.Box Wählhilfe

Posted: Thu Apr 01, 2021 2:40 pm
by wriedmann
Hallo Frank,
was sind das für Skripts?
Wolfgang

Fritz.Box Wählhilfe

Posted: Thu Apr 01, 2021 3:27 pm
by ic2

Fritz.Box Wählhilfe

Posted: Thu Apr 01, 2021 6:48 pm
by g.bunzel@domonet.de
Hallo Frank,

ich habe diese Info dazu gefunden. Das Beispiel ist mit curl erstellt - evtl. wäre das auch mein einem LineCommand möglich.

FRITZ!Box-Dialer
Auf Basis dieser Informationen läßt sich leicht die zugehörige Aktion per Skript aufrufen. Der URL setzt sich aus der Adresse der FRITZ!Box, dem Port 49000 und controlURL zusammen. Im Header steht noch die SoapAction, die sich aus serviceType (urn:dslforum-org:service:X_VoIP:1) und action (X_AVM-DE_DialNumber) zusammensetzt.
In den POST-Daten ist dann der Aufruf mit der Rufnummer als Argument enthalten. cURL unterstützt die von der FRITZ!Box eingesetzte Authentisierung eigentlich mit der Option "--digest"; dieses hat bei meinen Tests aber nicht zuverlässig funktioniert. Mit "--anyauth" gibt es keine Probleme.
In der FRITZ!Box muss die Wählhilfe eingeschaltet sein.
Nach dem Aufruf des Dialers wählt die FRITZ!Box die Nummer und wenn die Verbindung zustande kommt (abgenommen wird), klingelt das in der Wählhilfe angegebene Telefon.

#!/bin/bash
credentials="benutzer:passwort"
FB="fritz.box:49000"
Rufnummer="0800012345678";


curl -4 -k --anyauth -u "${credentials}"
"http://${FB}/upnp/control/x_voip"
-H 'Content-Type: text/xml; charset="utf-8"'
-H 'SoapAction: urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_DialNumber'
-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/envelope/">
<s:Body>
<u:X_AVM-DE_DialNumber xmlns:u="urn:dslforum-org:service:X_VoIP:1">
<NewX_AVM-DE_PhoneNumber>'${Rufnummer}'</NewX_AVM-DE_PhoneNumber>
</u:X_AVM-DE_DialNumber>
</s:Body>
</s:Envelope>' > /dev/null 2>&1

netcat -4 fritz.box 1012

So eine 'SoapAction' sollte mit HTTP funktionieren.
Von Norbert Kolb gibt es dazu Beispiele mit GetDocumentByGetOrPost() - damit könnte wohl so eine 'SoapAction' per HTTP an die FRITZ!-Box übergeben werden. Auszug aus VO-Code:

cRet := '<soapenv:Header>' +;
'<ns:authentication>' +;
'<delisId>' + SELF:cDelisID + '</delisId>' +;
'<authToken>' + SELF:cAuthToken + '</authToken>' +;
'<messageLanguage>' + SELF:cLanguage + '</messageLanguage>' +;
'</ns:authentication>' +;
'</soapenv:Header>'

cPostData := '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://MyDomain.com/common/service/type ... ervice/2.0">' + ;
'<soapenv:Header/> ' + ;
'<soapenv:Body> ' + ;
'<ns:getAuth> ' + ;
'<delisId>' + SELF:cDelisID + '</delisId> ' + ;
'<password>' + SELF:cPassword + '</password> ' + ;
'<messageLanguage>de_DE</messageLanguage> ' + ;
'</ns:getAuth> ' + ;
'</soapenv:Body> ' + ;
'</soapenv:Envelope>'


HTH

Gerhard Bunzel

Fritz.Box Wählhilfe

Posted: Thu Apr 01, 2021 8:15 pm
by FFF
Cooles Thema! Eine X#-Klasse, die das auch für kleine Lichter (wie etwa mich) nutzbar macht, wäre ein schönes Community Projekt. Ich wähle seit x Jahren per serieller Schnittstelle aus meinen Apps über ein Uraltes Ascom-Telefon, das an der FB hängt... Wäre schön, das ersetzen zu können, bevor das Telefon entgültig den Geist aufgibt ;)

Fritz.Box Wählhilfe

Posted: Fri Apr 02, 2021 3:36 am
by wriedmann
Hallo zusammen,
in X# sind Get- oder Post-Aufrufe an Webservices überhaupt kein Problem, sondern mit den .NET-Klassen leicht und schnell gebaut.
Ich nutze sowas in diversen Applikationen, z.B. um Wrike anzusprechen, oder andere Webservices.
Wenn Interesse da ist, sammle ich das in einer kleinen Lib zusammen (sind drei Klassen, wobei zwei nur dazu dienen, URL bzw. Daten in die richtige Form umzuwandeln).
Wolfgang

Fritz.Box Wählhilfe

Posted: Fri Apr 02, 2021 8:11 am
by FFF
Interesse ;)

Fritz.Box Wählhilfe

Posted: Fri Apr 02, 2021 8:27 am
by SL-Software

Fritz.Box Wählhilfe

Posted: Fri Apr 02, 2021 10:41 am
by Frank Müßner
Danke für die Unterstützung.

habt ihr keinen Feiertag, oder gerade dann Zeit :-)

Die meisten Links habe ich schon gefunden, aber noch keinen wirklichen erfolgreichen Einstieg damit erreicht.
Ich versuche jetzt erstmal ein allgemeines Beispiel umzusetzen. Vielleicht erklärt sich dann die Beschreibung von AVM bezüglich der Wählhilfe.
Wenn ich das Curl Beispiel zum laufen bekomme, gibt es bestimmt auch einen Translator.
Schöne Feiertage
Frank

Fritz.Box Wählhilfe

Posted: Fri Apr 02, 2021 1:37 pm
by Frank Müßner
Geht :-)

mit diesem SoapClient https://github.com/inflames2k/PS.FritzBox.API (nur die SoapClient.cs)

und diesem Code:

Code: Select all

String RequestNameSpace = "urn:dslforum-org:service:X_VoIP:1";
                String ConnectionSettings="http://Fritz.BoxIP:49000/";
                string ControlUrl = "upnp/control/x_voip";

                SoapRequestParameter parameter=new SoapRequestParameter("NewX_AVM-DE_PhoneNumber", "01571234567");
                SoapClient client = new SoapClient();
                SoapRequestParameters parameters = new SoapRequestParameters();

                parameters.UserName = "User";
                parameters.Password = "Password";
                parameters.Timeout = 10;

                parameters.RequestNameSpace = RequestNameSpace;
                parameters.SoapAction = $"{RequestNameSpace}#{"X_AVM-DE_DialNumber"}";
                parameters.Action = $"{"X_AVM-DE_DialNumber"}";
                if (parameter != null)
                    parameters.Parameters.Add(parameter);

                var urlBuilder = new UriBuilder(ConnectionSettings);
                urlBuilder.Path = ControlUrl;

                try
                {
                    XDocument soapResult = await client.InvokeAsync(urlBuilder.Uri, parameters);
                    var tt=soapResult;
                }
                catch (Exception ex)
                {

                   
                }
Klingel das Telefon für die Wählhilfe.

Damit kann dann auch Home Control angesprochen werden.

Grüße Frank