Fritz.Box Wählhilfe

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
Frank Müßner
Posts: 276
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

Fritz.Box Wählhilfe

Post 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
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Fritz.Box Wählhilfe

Post by wriedmann »

Hallo Frank,
was sind das für Skripts?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
g.bunzel@domonet.de
Posts: 97
Joined: Tue Mar 01, 2016 11:50 am
Location: Germany

Fritz.Box Wählhilfe

Post 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
FFF
Posts: 1522
Joined: Fri Sep 25, 2015 4:52 pm
Location: Germany

Fritz.Box Wählhilfe

Post 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 ;)
Regards
Karl
(on Win8.1/64, Xide32 2.19, X#2.19.0.2.)
User avatar
wriedmann
Posts: 3644
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Fritz.Box Wählhilfe

Post 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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
FFF
Posts: 1522
Joined: Fri Sep 25, 2015 4:52 pm
Location: Germany

Fritz.Box Wählhilfe

Post by FFF »

Interesse ;)
Regards
Karl
(on Win8.1/64, Xide32 2.19, X#2.19.0.2.)
SL-Software
Posts: 2
Joined: Wed Sep 27, 2017 6:20 am
Location: Germany

Fritz.Box Wählhilfe

Post by SL-Software »

Frank Müßner
Posts: 276
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

Fritz.Box Wählhilfe

Post 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
Frank Müßner
Posts: 276
Joined: Sat Dec 12, 2015 2:22 pm
Location: Germany

Fritz.Box Wählhilfe

Post 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
Post Reply