API Http et tags

Bonjour,

J’utilise l’API HTTP pur lancer des scénarios avec passage de tags : https://doc.jeedom.com/fr_FR/core/4.0/api_http

Savez vous si on peut passer un tag comportant un espace, car https://Mon_IP_Jeedom/core/api/jeeApi.php?apikey=d8RaIZcJA0iAaUkQGMVyLhk0rAZq2nGl&type=scenario&id=102&action=start&tags=TagMusique%3DFrance%20Info dans lequel je passe France Info comme tag arrive dans le scénario (Id=102) avec comme tag uniquement France ?

Merci

Bonjour,
Non ce n’est pas possible

Ok, merci !

Une correction est envisagée ou envisageable ?

Bonjour
Il n’y a pas de correction possible car l’espace est un séparateur entre tag

Et on ne peut pas définir un autre code qui représenterait un espace dans un tag, bien sur cela cela engendrerait des modifs dans la gestion des scénarios pour interpréter ce code, ou ce n’est vraiment pas possible ?

Si mais si des utilisateurs utilisent cette autre code pour leur tag ça fera une régression chez eux pas sur qu’ils apprécient

Oui c’est vrai, mais je ne pense pas que les utilisateurs de l’API HTTP soient nombreux, et le risque de tomber sur un même code est très très réduit, et d’un autre côté cette contrainte n’est indiquée nulle part, on est donc devant un bug.

Salut,

Pourquoi ne pas, par exemple, remplacer l’espace dans l’appel api par un tiret bas et ensuite traiter dans ton scénario directement en remplaçant les tirets bas par des espaces ?

Bien sur que cela peut être traité comme tu le proposes, mais pourquoi ne pas corriger un bug ?

Parce que ce n’est pas un bug, l’explication a été donnée par Loïc juste quelques messages au-dessus. Modifier la séparation des tags par autre chose que l’espace déjà utilisé reviendrait à obliger tout le monde à revoir ses appels et sa gestion des tags alors que gérer le cas d’un tag comprenant un espace est plutôt simple à prendre en compte

Quant à dire que ce n’est pas documenté, c’est quand même explicite dans la documentation sur l’api :

  • tags [optionnel] : si l’action est “start”, vous pouvez passer des tags au scénario (voir la documentation sur les scénarios) sous la forme tags=toto%3D1%20tata%3D2 (à noter que %20 correspond à un espace et %3D à = ).

On voit bien que 2 tags sont passés avec un espace entre les 2

Et bien nous ne sommes pas d’accord, pour moi c’est un bug car il n’y a pas de contrainte indiquée sur les tags, les espaces sont par exemple acceptés pour les appels depuis les scénarios… Quant tu dis tout le monde, en toute rigueur c’est tout ceux qui utilisent l’API HTTP, et la on va réduite le ‹ tout le monde › à un tout petit nombre de personnes.

Cela revient à dire que pour connaitre les règles concernant des tags il faut lire la doc sur l’API HTTP, c’est n’est pas logique.

Et de nouveau vous affirmez des choses que vous ignorez

Vous avez les chiffres ? Ca m’intéresse.

et il faut tout changer pour que ca corresponde à votre usage personnel?
Déjà vu ça…

Votre logique n’est pas celle des autres et n’est pas non plus la logique de référence ni pour jeedom, ni pour le reste de la planète.
Même si vous ne comprenez pas la logique elle est pourtant là et c’est à vous de vous adapter.

Vous avez reçu une solution: passez le caractère que vous voulez dans votre appel api et remplacez le par un espace dans un bloc code de scénario.

Bonjour
Depuis les scénarios ce n’est pas possible non plus. Les tag c’est comme les arguments en ligne de commande l’espace est le séparateur.

Ben là tu as mis des « autour

En effet, il faut bien un élément qui permette de savoir si le mot qui suit un espace est un tag ou un espace. Dans une requête HTTP, on ne peut bien entendu pas utiliser cette méthode, il faudrait donc un code pour spécifier un espace. On en revient au départ !

Bien sur que si tu as les " en url il faut juste l’encoder correctement (de mémoire c’est un %22).

ok, mais il manquera toujours une séquence de caractères pour spécifier l’espace.

ben non un espace c’est un %20 de mémoire.

Oui cela fonctionne parfaitement !

Donc si on veut par exemple exécuter le scénario dont l’Id est 102 et passer en tag TagRadio=« France Info », on écrira :

https://Mon_IP_Jeedom/core/api/jeeApi.php?apikey=d8RaIZcJA0iAaUkQGMVyLhk0rAZq2nGl&type=scenario&id=102&action=start&tags=TagMusique%3D%22France%20Info%22

En détail la partie scénario avec tag : id=102&action=start&tags=TagMusique%3D%22France%20Info%22

Id=102 ID du scénario à exécuter

&action=start spécifie que le scénario sera exécuté (il pourrait être stopper, désactiver ou activer avec d’autres mots clé, voir la doc https://doc.jeedom.com/fr_FR/core/4.0/api_http)

&tags : définie la partie tag

TagMusique : nom du tag à passer au scénario

%3D code le caractère =

%22 code le caractère "

France%20 Info : contenu du tag, le %20 code la caractère espace

%22 code le caractère "

Le scénario recevra donc en tag : « France Info »

Loic, pourquoi ne pas m’avoir donner ces info au début de ce post ? :blush: