Récupérer le retour INFO d'une commande ACTION pour une requette HTTP

Bonsoir
me revoila

Pour commencer j’ai changer de site pour raccourcir les URL
J’ai pris Tinyurl.com

Car mon URL ne commence pas par http.
C’est une URL de type x-callback-url Apps | x-callback-url

Pour l’exemple l’adresse est
due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084

Pour réduire cette callback-url, on utilise la requête suivante
https://tinyurl.com/api-create.php?url=due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084

en retour on obtient https://tinyurl.com/yymsyjuj

La valeur de la requête va changer en fonction de divers critères qui tournent dans un scénario.
J’ai affecté une variable URLDue dans le scénario

j’ai utilisé le paramètre #message# dans mon script en type ACTION

Ainsi dans mon scénario je peux lancer ma requête

Mon problème est maintenant le suivant.
Comment récupérer le retour la requête ACTION pour l’utiliser dans la suite de mon scénario ?

Salut,
De mémoire tu ne peux pas, change en une commande info.

Oui mais du coup avec une commande info je ne peux lancer l’exécution du script dans mon scénario ?

Je pense que si. Juste appeler la commande info devrait lancer le script et retourner l’info.

Sauf que pour une commande info on n’a pas accés à #message#

je tente de passer par un bloc code dans un scénario

[2020-12-14 15:12:59][SCENARIO] Start : Scenario lance manuellement.
[2020-12-14 15:12:59][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-12-14 15:12:59][SCENARIO] Affectation de la variable x-callback-url => due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084 = due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084
[2020-12-14 15:12:59][SCENARIO] Exécution d'un bloc élément : 417
[2020-12-14 15:12:59][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-12-14 15:12:59][SCENARIO] Exécution d'un bloc code
[2020-12-14 15:12:59][SCENARIO] syntax error, unexpected 'callback' (T_STRING)
[2020-12-14 15:12:59][SCENARIO] Ajout du message suivant dans le centre de message :
[2020-12-14 15:12:59][SCENARIO] Fin correcte du scénario

mais je suis perdu …

Bonsoir,

j’avais longuement évoqué ce point dans le post suivant :

Bug plugin script? - Plugins / Programmation - Communauté Jeedom

Mais je vois que le plugin script n’a toujours pas évolué pour prendre en compte ce besoin.
J’ai écrit le mien à la place !
A+
Bernard

P-S Dans sa version antérieure, le plugin script renvoyait bien une valeur, mais cela a été supprimé sans aucune information ni explication.

1 « J'aime »

Cela veut il dire que si j’arrive à mettre la main avec une ancienne version du plugin je pourrais arriver à faire ce que je veux ?

Il est à disposition sur GITHUB ?

Bonjour,
Non, je l’ai en local sur mon Pc.

Simplement pour résoudre le problème en deux secondes voici la modification hyper simple qu’il suffit de faire surle plugin script.

Dans le fichier script.class.php ( \ip\jeedom\plugins\script\core\class\script.class.php
)
Remplacer les 3 lignes suivantes situées à partir de la ligne 331:
if($this->getType() == ‹ info ›){
return $result;
}

par :
return $result;

Dans ce cas, le plugin retourne une valeur dans tous les cas. Ca devrait faire l’affaire.

Pour faire la modification penser à se connecter en sudo.

A+
Bernard

P-S :
Si tu veux que cette modification ne soit pas altérée par une mise à jour ultérieure, il suffit au niveau du système de mise à jour d’ignorer la mise à jour du plugin.

Bonsoir @Bercolly

J’ai effectué la modification
image

Cependant je n’ai pas le résultat en retour

La requete ACTION est la suivante https://tinyurl.com/api-create.php?url=due://x-callback-url/add?title=Laver%20la%20voiiture&duedate=1607876084

Bonsoir,

La modif que je t’ai suggérée concernait une commande script.

Pour une commande http, la même modif est à faire ligne : 302/303/304.

A+
Bernard

image

Le premier crochet de 302 ? c’etait pas le cas pour la partie script
image

Bonjour,
Oui effectivement, je me suis trompé surr les n° de ligne.

Il suffit de supprimer les 3 lignes 303/304/305
et de taper à la place :
return $result.

Ca y est j’ai effectivement le retour de ma requête HTTP / Action / Défaut

[2020-12-17 17:22:16][SCENARIO] Start : Scenario lance manuellement.
[2020-12-17 17:22:16][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-12-17 17:22:16][SCENARIO] Exécution de la commande [Maison][Due][URL] avec comme option(s) : {"background":"0","title":"","message":"https:\/\/tinyurl.com\/api-create.php?url=due:\/\/x-callback-url\/add?title=Laver%20la%20voiiture&duedate=1607876084"}
[2020-12-17 17:22:16][SCENARIO] Affectation de la variable txt => https://tinyurl.com/yyf6xojn = https://tinyurl.com/yyf6xojn
[2020-12-17 17:22:16][SCENARIO] Fin correcte du scénario

Par contre cela ne fonctionne pas avec une requête HTTP / Action / Message

[2020-12-17 17:26:15][SCENARIO] Start : Scenario lance manuellement.
[2020-12-17 17:26:15][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-12-17 17:26:15][SCENARIO] Exécution de la commande [Maison][Due][URL] avec comme option(s) : {"background":"0","title":"","message":"https:\/\/tinyurl.com\/api-create.php?url=due:\/\/x-callback-url\/add?title=Laver%20la%20voiiture&duedate=1607876084"}
[2020-12-17 17:26:16][SCENARIO] Echec de la requête HTTP : https%3A%2F%2Ftinyurl.com%2Fapi-create.php%3Furl%3Ddue%3A%2F%2Fx-callback-url%2Fadd%3Ftitle%3DLaver%2520la%2520voiiture%26duedate%3D1607876084 cURL error : Could not resolve host: https%3A%2F%2Ftinyurl.com%2Fapi-create.php%3Furl%3Ddue%3A%2F%2Fx-callback-url%2Fadd%3Ftitle%3DLaver%2520la%2520voiiture%26duedate%3D1607876084
[2020-12-17 17:26:17][SCENARIO] Echec de la requête HTTP : #message# cURL error :
[2020-12-17 17:26:17][SCENARIO] Fin correcte du scénario

La valeur de la requête va changer en fonction de divers critères qui tournent dans le scénario.
C’est pour cela que je veux utiliser la variable #message# du plugin

On dirait que le plugin n’envoie pas la même requête

Bonsoir,

Pourquoi est-ce que tu passes une url encodée ?
Par contre le message est encodé par le plugin par défaut.

Est-ce que tu pourrais écrire le texte de ta requête http ?
A+
Bernard

Bonjour @Bercolly

C’est une URL de type x-callback-url Apps | x-callback-url
cela permet de piloter des apps IOS :wink:

A réception de cette requête due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084 sur un iPhone, cela permet de créer un rappel dans l’application iOs DUE
avec comme titre Laver la voiture à une date défini

Mais pourquoi raccourcir cette url :question:
:arrow_right: Car Télégramme ne considére pas due://xxxxxxxx comme un lien à cliquer

Donc je passe par le service de réducteur URL tinyurl

La requête complète HTTP
https://tinyurl.com/api-create.php?url=due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084

La partie dans la requête qui ne change pas :
https://tinyurl.com/api-create.php?url=

La partie de la requête qui peut changer (#message#):
due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084

https://tinyurl.com/api-create.php?url=due://x-callback-url/add?title=Laver%20la%20voitures&duedate=1607876084
en retour on obtient :arrow_right: https://tinyurl.com/yymsyjuj

Bonjour,

Pour valider la modification du script / http, est-ce que tu peux faire une requête simple vers google ou autre et récupérer la réponse ?
Pour le reste je pense que l’encodage de l’url n’est pas reconnu comme une requête valide http.
A+
Bernard

bonsoir @Bercolly

Comme demandé
cible : www.jeedom.com/site/fr/
requete : https://tinyurl.com/api-create.php?url=www.jeedom.com/site/fr/
réponse : https://tinyurl.com/y9woy5uj

Le problème est identique en utilisant le tag #message#
Pourtant l’adresse est bien une url standard

[2020-12-22 13:25:38][SCENARIO] Start : Scenario lance manuellement.
[2020-12-22 13:25:39][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-12-22 13:25:39][SCENARIO] Exécution de la commande [Maison][Due][URL] avec comme option(s) : {"background":"0","title":"","message":"https:\/\/tinyurl.com\/api-create.php?url=www.jeedom.com\/site\/fr\/"}
[2020-12-22 13:25:39][SCENARIO] Erreur sur php https://tinyurl.com/api-create.php?url=www.jeedom.com/site/fr/ 2>&1 valeur retournée : 1. Détails : Could not open input file: https://tinyurl.com/api-create.php?url=www.jeedom.com/site/fr/
[2020-12-22 13:25:39][SCENARIO] Affectation de la variable URLcourte =>  =
[2020-12-22 13:25:39][SCENARIO] Fin correcte du scénario

Bonsoir,

J’ai compris ce que tu veux faire.
Voici un exemple pour résoudre ton problème.
Je crée un scénario avec un bloc code.
Dans ce bloc code, je vais appeler l’execution du script http.
Il faut aussi disposer de la variable UrlDue qui contient les infos à transférer au site tiny …

Voici la copie d’écran du scénario

Dans mon cas le script http se nomme : #[Maison][test][test_url]#
C’est un script de type http
Voici la copie d’écran :

Une fois le scénario exécuté, la retour du script_http se trouve dans une variable nommée : ‹ call_back ›.

Pour finir, l’url que tu envoies contient des caractères spéciaux qui sont encodés et qui font que cela fait planter la requête http.

Dans ce cas il faut ajouter les lignes suivantes :
après les deux lignes suivantes :
$request = str_replace(‹ " ›, ‹ %22 ›, $request);
** $request = str_replace(’ ', ‹ %20 ›, $request);**

ajouter les deux lignes:

$request = str_replace(‹ %3D ›, ‹ = ›, $request);
** $request = str_replace(‹ %2F ›, ‹ / ›, $request);**

Ces lignes se trouvent aux alentours de la ligne 275 dans le fichier script.class.php

A+
Bon courage.

Bonjour @Bercolly

Merci pour ton retour. je vais regarder cela avec attention :wink:

Mais avant de commencer :
Dois je garder les modifications des précendant messages ?

Peux tu me faire un copier coller du bloc code pour éviter de devoir retaper tout avec un risque d’erreur ?