FritzBox mit SOAP auslesen und steuern

Nope… ist dabei:
‚CALLDEL‘ => ‚user/fritz/loeschen.png‘,
und loeschen.png ist dabei :smiley:

Da ich den Logger nicht installiert habe…kann ich das so nicht testen.
Aber bei mir geht es.
Hast du die Zugangsdaten in der AB.php für die Box eingetragen ?
Wenn ja, kannst du (da der Logger dann mehr Infos rauswirft) versuchen in der ab.php den SoapClient um den Parameter trace und ggfls. execptions zu ergänzen:


if (isset ($_GET['index']))
{
	$client = new SoapClient(
		null,
		array(
			'location'   => "http://".FB_HOST.":49000/upnp/control/x_tam",
			'uri'        => "urn:dslforum-org:service:X_AVM-DE_TAM:1",
			'noroot'     => true,
			'login'      => FB_USER,
			'password'   => FB_PASS,
			'trace'=>true,
			'exceptions'=>false
		)
	);
	if ($_GET['action']=="mark") $client->MarkMessage(new SoapParam((int)$_GET['tam'], 'NewIndex'),new SoapParam((int)$_GET['index'],'NewMessageIndex'));
	elseif ($_GET['action']=="delete") $client->DeleteMessage(new SoapParam((int)$_GET['tam'], 'NewIndex'),new SoapParam((int)$_GET['index'],'NewMessageIndex'));
}

Wieder ein Brick mehr für die Sammlung ? :smiley: :smiley:
Bis auf eine 7270 von Freunden welche so hin war dass nicht mal irgendein Recovery ging (vermutlich Überspannung), habe ich noch keine selbst gebrickt.
Und dabei hatte ich auf allen nicht Miet-Geräten immer Freetz drauf.
Aber je mehr ich mich mit der FB beschäftige, desto mehr Fehler (oder eher ‚Einschränkungen‘ und Abweichungen von der Entwickler-Doku) und Bugs finde ich.

Michael

Uuupss, ok hast recht

Ja

Komme ich aber erst morgen Abend zum testen, melde mich dann wieder.

Grummel…
nun wollte ich die Faxfunktion auch noch in die Liste mit einbauen, so dass man das PDF gleich öffnen kann…

Und da steht da so ein ‚Mist‘ in der Anrufliste


      ["Called"]=>
      string(4) "SIP3"
      ["Name"]=>
      object(SimpleXMLElement)#410 (0) {
      }
      ["Numbertype"]=>
      string(4) "pots"

Statt der eingehend Nummer unter Called steht da SIP3.
OK, SIP 3 ist meine 4. VOIP Nummer ist ja nicht ganz verkehrt. Aber warum steht da keine Nummer ?
Und dann unter Numbertype pots (=analog)… äh hallo FB du hast nur VOIP, nix analog :eek:
(Wo ist der Smiley mit Kopf gegen Wand?)

Habe nun keine Lust mehr und hau mich in’s Bett. ist eh besser für meine Gesundheit.
Zumal ich nicht weiß wie sich die Liste dann bei euch verhält wenn ihr z.B. analog oder ISDN nutzt…

Michael
PS: Sorry aber musste mal Luft ablassen; so extrem stümperhafte Umsetzungen in einem professionellen Produkt finde ich einfach unmöglich.

Hi,

habe jetzt mal die neueste Version installiert. Folgende Dinge sind mir aufgefallen:

Die AB-Einträge, die vorne in der Liste ein rotes X haben, sind wohl auf der FB bereits gelöscht worden. Müsste lt. Script da nicht eine „Gelöscht-Nachricht“ stehen ?
Umlaute funktionieren jetzt einwandfrei.
Nachwievor wird das Script bei Einstellung auf „Das Örtliche“ sporadisch auf fehlerhaft gesetzt. Bei Klicktel funktioniert es ohne Problem und findet auch mehr :slight_smile:

chrissiboy

Verstehe die Frage mit der gelöschten Nachricht jetzt nicht wirklich.
Michael

Wenn man eine Nachricht vom AB löscht, bleibt der Eintrag in der Anruferliste stehen. Nur die Nachrichts ist weg. Diese Einträge werden mit dem roten X vorne gekennzeichnet und hinten sind keine Steuerungs-Icons mehr vorhanden. Das ist ja auch alles richtig soweit. Ich dachte nur, ich hätte für diese Fälle im Quellcode was gesehen, dass an dieser Stelle dann eine Nachricht erscheint, aber das bezieht sich wohl nur auf das Icon in der ersten Spalten und nicht auf die Spalte Nachricht ganz hinten.

Hallo Michael,

habe mal die Änderungen Trace und execptions eingefügt:

if (isset ($_GET['index']))
{
    $client = new SoapClient(
        null,
        array(
            'location'   => "http://".FB_HOST.":49000/upnp/control/x_tam",
            'uri'        => "urn:dslforum-org:service:X_AVM-DE_TAM:1",
            'noroot'     => true,
            'login'      => FB_USER,
            'password'   => FB_PASS,
            'trace'=>true,
            'exceptions'=>false
        )
    );
    if ($_GET['action']=="mark") $client->MarkMessage(new SoapParam((int)$_GET['tam'], 'NewIndex'),new SoapParam((int)$_GET['index'],'NewMessageIndex'));
    elseif ($_GET['action']=="delete") $client->DeleteMessage(new SoapParam((int)$_GET['tam'], 'NewIndex'),new SoapParam((int)$_GET['index'],'NewMessageIndex'));
}  

nun geht es komischerweise.

Was mir noch aufgefallen ist, wenn ich die Nachrichten lösche, werden die Button ausgeblendet und vorne ist das rote X angezeigt aber beim nächsten Aufruf des Scripts sind die Buttons wieder da und die Nachricht wird wieder als neu angezeigt.

Die Nachricht wir auf der Fritzbox nicht gelöscht, dass erklärt natürlich auch warum die Buttons beim nächsten Scriptlauf wieder da sind.

Nimm exceptions mal raus bzw auf true. Sonst wird der Fehler unterdrückt,welcher noch da sein muss sonst wäre die Nachricht ja gelöscht.
@chrissiboy
Ja das CALLDEL bezieht sich auf vorne. Kannst auch eine anderes Icon in der Config eintragen, z.b. das gleiche wie bei CALLIN.
Oder den Typ gar nicht anzeigen lassen, also die 6 aus dem Array der Ruf Typen entfernen.
Michael

Hallo Michael.

das schmeisst der Logger dann raus:

IPS-Err-PHP  2014-10-27 18:39:56.814  Error: Uncaught SoapFault exception: [s:Client] UPnPError in C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php:22
Stack trace:
#0 C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php(22): SoapClient->__call('MarkMessage', Array)
#1 C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php(22): SoapClient->MarkMessage(Object(SoapParam), Object(SoapParam))
#2 {main}
  thrown
   Error in Script C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php on Line 22
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
  121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
      in IPSLogger_PhpFatalErrorHandler

und es wird auch nicht mehr abgespielt.

Kopfkratz…
Frag mich was bei dir anders ist…
Ich melde mich später noch mal per PN. Ist vielleicht sinnvoller.
Michael

wenns weiterhilft… bei sieht’s ähnlich aus, wobei es mit dem Löschen einmal geklappt hat…

27.10.2014 20:57:14.286 | 15997 | DEBUG | VariableManager | [Program\IPSLibrary\data\core\IPSLogger\IPSLogger\SingleOut_Msg] = <div style=„color:#000000;background:#FF0000;“>Error: Error: Uncaught SoapFault exception: [s:Client] UPnPError in C:\Program…
27.10.2014 20:57:14.287 | 16028 | MESSAGE | VariableManager | [Program\IPSLibrary\data\core\IPSLogger\IPSLogger\HtmlOut_MsgList] = <style>.row-highlight tr:hover {
background-color: rgba(255, 255, 255, 0.1) !important;

27.10.2014 20:57:14.287 | 21252 | MESSAGE | VariableManager | [Program\IPSLibrary\data\core\IPSLogger\IPSLogger\HtmlOut_MsgId] = 771345
27.10.2014 20:57:14.287 | 0 | CUSTOM | PHP | Error: Error: Uncaught SoapFault exception: [s:Client] UPnPError in C:\Program Files\IP-Symcon\webfront\user\ab.php:21
Stack trace:
#0 C:\Program Files\IP-Symcon\webfront\user\ab.php(21): SoapClient->__call(‚DeleteMessage‘, Array)
#1 C:\Program Files\IP-Symcon\webfront\user\ab.php(21): SoapClient->DeleteMessage(Object(SoapParam), Object(SoapParam))
#2 {main}
thrown
Error in Script C:\Program Files\IP-Symcon\webfront\user\ab.php on Line 21
133 in IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
33 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
120 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
in IPSLogger_PhpFatalErrorHandler
27.10.2014 20:57:14.289 | 0 | DEBUG | ExecuteThreadID #1 | Ausgeführt, Resultat: 0, Erfolgreich: False, Zeit: 261 ms

Ok dann doch hier, vielleicht hift das eher :smiley:

Bitte mal folgenden Bereich in der ab.php ersetzen:


if (isset ($_GET['index']))
{
	$client = new SoapClient(
		null,
		array(
			'location'   => "http://".FB_HOST.":49000/upnp/control/x_tam",
			'uri'        => "urn:dslforum-org:service:X_AVM-DE_TAM:1",
			'noroot'     => True,
			'login'      => FB_USER,
			'password'   => FB_PASS,
			'trace'=>TRUE,
			'exceptions'=>false			
		)
	);
	if ($_GET['action']=="mark") $status = $client->MarkMessage(new SoapParam((int)$_GET['tam'], 'NewIndex'),new SoapParam((int)$_GET['index'],'NewMessageIndex'));
	elseif ($_GET['action']=="delete") $status= $client->DeleteMessage(new SoapParam((int)$_GET['tam'], 'NewIndex'),new SoapParam((int)$_GET['index'],'NewMessageIndex'));
	if (is_soap_fault($status))
	{
		IPS_LogMessage("Fritz-Soap",print_r($status,true));	
	}
}

Anschließden entweder eine neue Nachricht abhören oder eine Alte löschen.
Im IPS-Log (nicht im Logger, den habe ich hier nicht installiert)
also im IPS-Verzeichniss unter logs/logfile.log nachsehen welcher Fehler dort erscheint.
Ihr könnt z.B. nach ‚Fritz-Soap‘ suchen, aber die Ausgabe sollte nicht zu übersehen sein :slight_smile:

Beispiel:


27.10.2014 21:47:08.885 |     0 | CUSTOM  | Fritz-Soap           | SoapFault Object
(
    [message:protected] => Unauthorized
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => C:\IP-Symcon\webfront\user\fritz\ab.php
    [line:protected] => 23
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [function] => __doRequest
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:dslforum-org:service:X_AVM-DE_TAM:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:DeleteMessage><NewIndex xsi:type="xsd:int">0</NewIndex><NewMessageIndex xsi:type="xsd:int">0</NewMessageIndex></ns1:DeleteMessage></SOAP-ENV:Body></SOAP-ENV:Envelope>

                            [1] => http://fritz.box:49000/upnp/control/x_tam
                            [2] => urn:dslforum-org:service:X_AVM-DE_TAM:1#DeleteMessage
                            [3] => 1
                            [4] => 0
                        )

                )

            [1] => Array
                (
                    [file] => C:\IP-Symcon\webfront\user\fritz\ab.php
                    [line] => 23
                    [function] => __call
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => DeleteMessage
                            [1] => Array
                                (
                                    [0] => SoapParam Object
                                        (
                                            [param_name] => NewIndex
                                            [param_data] => 0
                                        )

                                    [1] => SoapParam Object
                                        (
                                            [param_name] => NewMessageIndex
                                            [param_data] => 0
                                        )

                                )

                        )

                )

            [2] => Array
                (
                    [file] => C:\IP-Symcon\webfront\user\fritz\ab.php
                    [line] => 23
                    [function] => DeleteMessage
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => SoapParam Object
                                (
                                    [param_name] => NewIndex
                                    [param_data] => 0
                                )

                            [1] => SoapParam Object
                                (
                                    [param_name] => NewMessageIndex
                                    [param_data] => 0
                                )

                        )

                )

        )

    [previous:Exception:private] => 
    [faultstring] => Unauthorized
    [faultcode] => HTTP


Hier bei mir steht Unauthorized weil ich mal falsche Zugangsdaten eingetragen habe zum testen.
Und bei euch ?
Michael

top - so funktioniert es einwandfrei - Löschen funktioniert, Anhören ohne Probleme und keinerlei Fehlermeldungen im Log.
:D:D:D

Das einzige, was man noch machen sollte, wäre die Liste frisch aufzubauen, denn wenn man nach dem Löschen nur einen Browser-Refresh macht, taucht der gelöschte Eintrag logischerweise wieder auf, da so nur die bestehende Liste frisch angezeigt wird.

War ich auch schon am über legen. Da ich das script an liebsten immer nur durch den Anrufmonitor triggern möchte.
Aber beim markieren von neuen Nachrichten geht ein retriggern nicht, sonst bricht die Wiedergabe ab.
Mal schauen was mir dazu noch einfällt.
Viel mehr Interesse es mich warum es jetzt geht. :confused:
Michael
PS: Fax öffnen habe ich auch schon hier zum testen. Kommt morgen.
PPS: Just gerade einen Geistesblitz zur Wiedergabe gehabt. Ich Teste mal was.

also ich habe den 5-Minuten-Trigger rausgenommen und starte es nur noch direkt nach Anrufaktivitäten und um Mitternacht.
Ich benutze ein Script, welches auch hier im Forum schon gepostet wurde, das aktive Anrufe im Webfront darstellt.
Würde ja gerne mehr unterstützen, aber meine php-Kenntnisse sind leider sehr mager und nur angelernt, da ich diese außer bei IPS nirgends benötige…

Ja genau so läuft auch noch meine produktive Anrufliste. Nur das ich den Gesprächstatus nicht direkt Anzeige sondern nur die Events wie es klingelt oder beendet als Popup.
Aber selbst wenn nun die Liste durch ein Event in der Bedienung des WF neu erzeugt wird, so gibt es noch immer eine Diskrepanz wenn der AB z.B. über ein Telefon bedient wurde.
Mal sehen…
Michael

Hallo und guten morgen,

ich habe auch gerade getestet.

abspielen geht löschen nicht, hier die Einträge aus dem Log:

abspielen:

28.10.2014 05:30:01.061 |     0 | CUSTOM  | Fritz-Soap           | SoapFault Object
(
    [message:protected] => UPnPError
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php
    [line:protected] => 22
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [file] => C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php
                    [line] => 22
                    [function] => __call
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => MarkMessage
                            [1] => Array
                                (
                                    [0] => SoapParam Object
                                        (
                                            [param_name] => NewIndex
                                            [param_data] => 0
                                        )

                                    [1] => SoapParam Object
                                        (
                                            [param_name] => NewMessageIndex
                                            [param_data] => 2
                                        )

                                )

                        )

                )

            [1] => Array
                (
                    [file] => C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php
                    [line] => 22
                    [function] => MarkMessage
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => SoapParam Object
                                (
                                    [param_name] => NewIndex
                                    [param_data] => 0
                                )

                            [1] => SoapParam Object
                                (
                                    [param_name] => NewMessageIndex
                                    [param_data] => 2
                                )

                        )

                )

        )

    [previous:Exception:private] => 
    [faultstring] => UPnPError
    [faultcode] => s:Client
    [detail] => stdClass Object
        (
            [UPnPError] => stdClass Object
                (
                    [errorCode] => 713
                    [errorDescription] => SpecifiedArrayIndexInvalid
                )

        )

)

löschen:

28.10.2014 05:31:49.789 |     0 | CUSTOM  | Fritz-Soap           | SoapFault Object
(
    [message:protected] => UPnPError
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php
    [line:protected] => 23
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [file] => C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php
                    [line] => 23
                    [function] => __call
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => DeleteMessage
                            [1] => Array
                                (
                                    [0] => SoapParam Object
                                        (
                                            [param_name] => NewIndex
                                            [param_data] => 0
                                        )

                                    [1] => SoapParam Object
                                        (
                                            [param_name] => NewMessageIndex
                                            [param_data] => 2
                                        )

                                )

                        )

                )

            [1] => Array
                (
                    [file] => C:\IP-Symcon_2_0\webfront\user\Fritz\ab.php
                    [line] => 23
                    [function] => DeleteMessage
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => SoapParam Object
                                (
                                    [param_name] => NewIndex
                                    [param_data] => 0
                                )

                            [1] => SoapParam Object
                                (
                                    [param_name] => NewMessageIndex
                                    [param_data] => 2
                                )

                        )

                )

        )

    [previous:Exception:private] => 
    [faultstring] => UPnPError
    [faultcode] => s:Client
    [detail] => stdClass Object
        (
            [UPnPError] => stdClass Object
                (
                    [errorCode] => 713
                    [errorDescription] => SpecifiedArrayIndexInvalid
                )

        )

)

Ja die Wiedergabe ist egal. Aber er markiert die Nachricht nicht als abgehört, oder ? Weil ja hier bei dir ein Fehler erscheint. Der gleiche wie beim Löschen.
Code 713, laut UPNP und AVM
Invalid array index


            [UPnPError] => stdClass Object
                (
                    [errorCode] => 713
                    [errorDescription] => SpecifiedArrayIndexInvalid
                )


Ich weiß nur noch nicht warum der hier falsch sein soll ?


                            [1] => Array 
                                ( 
                                    [0] => SoapParam Object 
                                        ( 
                                            [param_name] => NewIndex 
                                            [param_data] => 0 
                                        ) 

                                    [1] => SoapParam Object 
                                        ( 
                                            [param_name] => NewMessageIndex 
                                            [param_data] => 2 
                                        ) 

                                ) 

Du könntest aber bitte mal folgendes überprüfen.
Lade dir noch mal die XML von der ABListe aus der FritzBox bzw. lass’ dir mit Print_r die Liste noch mal ausgeben.
Dort müssen der TAM und der Index Wert der Nachricht gleich sein mit NewIndex und NewMessageIndex aus der Fehlermeldung.
Sprich TAM = NewIndex und Index = NewMessageIndex
Hier auch nach zu lesen:
http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_tam.pdf

Aber so richtig eine Idee woran es bei dir hapert habe ich nicht wirklich… sorry.
Michael

Gerne, wenn Du mir bitte noch mal schreibst wo der Print Befehl hin muss :o

Das ist schade, gerade weil das abhören über den Browser wirklich schön gewesen wäre (naja das klappt ja, nur der Rest halt nicht). Muss ich mich wohl damit abfinden das dass Script bei mir nicht läuft :frowning:

Hallo Michael,

meintest Du das hier?

[Message] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [Index] => 5
                    [Tam] => 0
                    [Called] => 68***
                    [Date] => 28.10.14 19:24
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Horst Braun
                    [New] => 1
                    [Number] => 015****
                    [Path] => /download.lua?path=/var/media/ftp/CHIPSBNK-v1-9-13-01/FRITZ/voicebox/rec/rec.0.005
                )

            [1] => SimpleXMLElement Object
                (
                    [Index] => 4
                    [Tam] => 0
                    [Called] => 68***
                    [Date] => 28.10.14 16:59
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Horst Braun
                    [New] => 0
                    [Number] => 015****
                    [Path] => /download.lua?path=/var/media/ftp/CHIPSBNK-v1-9-13-01/FRITZ/voicebox/rec/rec.0.004
                )