Forum eedomus
http://forum.eedomus.fr/

Exploiter un XPATH vide
http://forum.eedomus.fr/viewtopic.php?f=18&t=4803
Page 1 sur 1
Auteur:  ctve [ 14 Nov 2016 21:13 ]
Sujet du message:  Exploiter un XPATH vide

Bonjour,

Je suis toujours à la recherche d'une solution pour détecter la perte de la téléphonie aléatoire de ma Livebox.

L'exploitation simple de son API n'est pas possible car le XML fourni quant tout va bien est cohérent avec ce qu'indique la doc de l'API mais, lorsque le téléphone est planté, le XML ne contient plus qu'un code d'erreur avec l'arborescence <root> puis <error>.

Si je fais un XPATH /root/error, je récupère bien ce code d'erreur et ça m'indique donc que la téléphonie est plantée.

Par contre, quand tout va bien, cet XPATH me renvoie une valeur lue vide puisque, dans ce cas, le XML redevient normal et ne comporte plus le <error> dans son arborescence.

Je voudrais donc pourvoir exploiter dans une règle le fait que mon XPATH renvoie une valeur lue vide afin d'en déduire que la téléphonie est rétablie mais je ne trouve pas comment faire.
Auteur:  Ferritales [ 14 Nov 2016 22:45 ]
Sujet du message:  Re: Exploiter un XPATH vide

moi je fais comme cela (pas sur que ca marche pour toi)

concat(/weatherdata/forecast/time[1]/precipitation/@type, '!')

et apres je test les valeurs genre
si ! => ...
si rain! => ....
si snow! => ....
Auteur:  chris17 [ 15 Nov 2016 08:00 ]
Sujet du message:  Re: Exploiter un XPATH vide

Bonjour
J'ai moi aussi le problème du téléphone qui se coupe en moyenne 2 à 3 jours après un reboot de la box.
J'ai modifie le script livebox.php afin de recevoir Erreur dans le Xpath quand la ligne est tombée

J' ai créer une variable "toto" qui comprend Erreur et si la $reponse comprend 'error' la valeur retournée dans le Xpath est toto et donc la valeur est Erreur
Je ne sais pas si mon explication est claire voici le code rajoute :

------------------------------------------------------------------------------------------:--------
case 'phonestate':
$response = httpQuery("http://".$myhost."/sysbus/VoiceService/VoiceApplication:listTrunks","POST",'{"parameters":{}}',null,$headers,true);

$toto ="{\"result\":{\"status\":[{\"name\":\"SIP-Trunk\",\"trunk_lines\":[{\"name\":\"LINE1\",\"enable\":\"Erreur\",\"status\":\"Erreur\",\"directoryNumber\":\"+33xxxxxx\",\"event_subscribe_lines\":[{}]}],\"sip\":{\"subscriptionInfo\":[{}]}},{\"name\":\"H323-Trunk\",\"trunk_lines\":[{\"name\":\"LINE3\",\"enable\":\"Disabled\",\"status\":\"Disabled\",\"directoryNumber\":\"\",\"event_subscribe_lines\":[]}],\"h323\":{}}]}}";
$position=strpos($response,'error');
if ($position===False){
echo $response;
}else {
echo $toto;
}
break;
---------------------------------------------------------------
Auteur:  ctve [ 15 Nov 2016 11:06 ]
Sujet du message:  Re: Exploiter un XPATH vide

@chris17

Merci pour ta réponse. Je commençais à croire être le seul chez qui la téléphonie de la LIvebox déc...

Les scripts php ne sont pas trop ma tasse de thé aussi peux-tu me préciser juste une chose.

Si j'ai bien compris, le code que tu me donnes dans ton message est à "ajouter" au script php Livebox existant ? C'est bien ça ?

On peut l'ajouter où ? Après la fin du script existant ? A un endroit particulier ?

Compte-tenu de ta modif du script php Livebox, quelle devient la syntaxe du XPATH que tu utilises ?

Merci d'avance pour ton aide.
Auteur:  chris17 [ 15 Nov 2016 12:00 ]
Sujet du message:  Re: Exploiter un XPATH vide

Le code se rajoute à l'endroit du case 'phonestate': du script livepbox.php
IL faut rajouter la variable $toto ainsi que le test si la réponse contient error
remplacer les xxxxxxxxx par votre numero de téléphone.
Le Xpath ne change pas mais quand la ligne est HS la valeur retournée est Erreur à la place de Enabled

case 'phonestate':
$response = httpQuery("http://".$myhost."/sysbus/VoiceService/VoiceApplication:listTrunks","POST",'{"parameters":{}}',null,$headers,true);

$toto ="{\"result\":{\"status\":[{\"name\":\"SIP-Trunk\",\"trunk_lines\":[{\"name\":\"LINE1\",\"enable\":\"Erreur\",\"status\":\"Erreur\",\"directoryNumber\":
\"+33xxxxxxxx\",\"event_subscribe_lines\":[{}]}],\"sip\":{\"subscriptionInfo\":[{}]}},{\"name\":\"H323-Trunk\",\"trunk_lines\":[{\"name\":\"LINE3\",\"enable\":\"Disabled\",\"status\":\"Disabled\",\"directoryNumber\":
\"\",\"event_subscribe_lines\":[]}],\"h323\":{}}]}}";
$position=strpos($response,'error');
if ($position===False){
echo $response;
}else {
echo $toto;
}
break;
Auteur:  ctve [ 15 Nov 2016 12:21 ]
Sujet du message:  Re: Exploiter un XPATH vide

OK !
Merci pour ces précisions.
Je teste ça dès ce soir et je te tiens au courant.
Auteur:  ctve [ 15 Nov 2016 15:03 ]
Sujet du message:  Re: Exploiter un XPATH vide

@chris17

Je viens de mettre en place ton script et il me renvoie bien "Up" lorsque le téléphone est OK.
Il ne me reste plus qu'à attendre que ça plante pour voir si je reçois bien "error".

Par contre, et malgré mes faibles compétences en php, je crois avoir décelé une faute de frappe dans ton code.

Tu écris en effet : if ($position===False)

N'y a -t-il pas un signe = de trop ?
Auteur:  chris17 [ 15 Nov 2016 15:19 ]
Sujet du message:  Re: Exploiter un XPATH vide

Extrait du site php

WARNING

As strpos may return either FALSE (substring absent) or 0 (substring at start of string), strict versus loose equivalency operators must be used very carefully.

To know that a substring is absent, you must use:

=== FALSE

Pour savoir si une chaine est absente vous devez utiliser " === False"
Auteur:  ctve [ 15 Nov 2016 15:45 ]
Sujet du message:  Re: Exploiter un XPATH vide

OK, on en apprend tous les jours :)

Merci.
Auteur:  ctve [ 17 Nov 2016 09:49 ]
Sujet du message:  Re: Exploiter un XPATH vide

@chris17

Je n'ai pas oublié de venir faire un petit compte-rendu du fonctionnement de ton script modifié ... mais hélas (ou pas !) ma téléphonie ne s'est pas plantée depuis que je l'ai mis en place :lol:
Auteur:  ctve [ 10 Déc 2016 15:24 ]
Sujet du message:  Re: Exploiter un XPATH vide

@chris17

Ca y est enfin, la téléphonie de ma Livebox, qui était stable depuis très longtemps, vient de se planter trois fois en deux jours (et oui, quand on aime, on compte pas !) :mrgreen:

Et je suis heureux de te confirmer que ton script modifié fonctionne à merveille.

Encore merci.
Auteur:  chris17 [ 10 Déc 2016 16:28 ]
Sujet du message:  Re: Exploiter un XPATH vide

Merci pour le retour
Page 1 sur 1 Le fuseau horaire est UTC+1 heure