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
Moderator: wriedmann
Fritz.Box Wählhilfe
Hallo Frank,
was sind das für Skripts?
Wolfgang
was sind das für Skripts?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Fritz.Box Wählhilfe
Hallo Frank,
Ich nehme an, Sie haben diese Seiten gesehen?
Alles ist C#.
https://boxmatrix.info/wiki/Csharp-Projects
https://github.com/topics/tr064
https://www.nuget.org/packages/PS.FritzBox.API/
https://archive.codeplex.com/?p=fritztr064
https://stackoverflow.com/questions/416 ... tzbox-7270
Dick
Ich nehme an, Sie haben diese Seiten gesehen?
Alles ist C#.
https://boxmatrix.info/wiki/Csharp-Projects
https://github.com/topics/tr064
https://www.nuget.org/packages/PS.FritzBox.API/
https://archive.codeplex.com/?p=fritztr064
https://stackoverflow.com/questions/416 ... tzbox-7270
Dick
-
- Posts: 97
- Joined: Tue Mar 01, 2016 11:50 am
- Location: Germany
Fritz.Box Wählhilfe
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
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
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.20, X#2.20.0.3)
Karl
(on Win8.1/64, Xide32 2.20, X#2.20.0.3)
Fritz.Box Wählhilfe
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
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
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
-
- Posts: 2
- Joined: Wed Sep 27, 2017 6:20 am
- Location: Germany
-
- Posts: 280
- Joined: Sat Dec 12, 2015 2:22 pm
- Location: Germany
Fritz.Box Wählhilfe
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
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
-
- Posts: 280
- Joined: Sat Dec 12, 2015 2:22 pm
- Location: Germany
Fritz.Box Wählhilfe
Geht
mit diesem SoapClient https://github.com/inflames2k/PS.FritzBox.API (nur die SoapClient.cs)
und diesem Code:
Klingel das Telefon für die Wählhilfe.
Damit kann dann auch Home Control angesprochen werden.
Grüße Frank
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)
{
}
Damit kann dann auch Home Control angesprochen werden.
Grüße Frank