Bloc CODE - Récupération des valeurs avec variable

Bonjour

Petit problème avec un bloc code dans un scénario

Ayant plusieurs équipement Echo, je cherche à créer un code en fonction de l’Echo qui est à l’origine de la demande

Pour le tag #Qui# j’utilise substr((trigger(),0,strpos(#trigger#, 'D')-1)
image

ensuite dans un bloc code j’utilise mon Tag pour récupérer la valeur de la commande

$tags=$scenario->getTags(); // récupération des tag du scénario

// Récupération des valeurs
// $tags['#EchoAlexaReminderLabel#']=cmd::byString('#[Communication][Echo du sous sol][Reminder Label]#')->execCmd();
$tags['#EchoAlexaReminderLabel#']=("#".$tags['#Qui#']."[Reminder Label]#");
cmd::byString($tags['#EchoAlexaReminderLabel#'])->execCmd();

$scenario->setTags($tags); // écriture des tags dans le scénario
$scenario->setLog($tags); // Écrit un message dans le log du scénario  

Sauf qu’il me retourne le nom complet de la commande au lieu de la valeur
image

Salut,

J’ai survolé mais à priori tu exécutes bien la commande pour en récupérer la valeur mais tu ne stockes pas cette valeur.

Dans l’idée, tout à la fin :

$tags['#EchoAlexaReminderLabel#']=("#".$tags['#Qui#']."[Reminder Label]#");
$value = cmd::byString($tags['#EchoAlexaReminderLabel#'])->execCmd();

$scenario->setLog($value);
1 « J'aime »

Bonjour @Salvialf
et merci pour ta rapidité

j’ai un retour de valeur vide et une erreur

$tags=$scenario->getTags(); // récupération des tag du scénario

// Récupération des valeurs
// $tags['#EchoAlexaReminderLabel#']=cmd::byString('#[Communication][Echo du sous sol][Reminder Label]#')->execCmd();
$tags['#EchoAlexaReminderLabel#']=("#".$tags['#Qui#']."[Reminder Label]#");
//cmd::byString($tags['#EchoAlexaReminderLabel#'])->execCmd();
$value = cmd::byString($tags['#EchoAlexaReminderLabel#'])->execCmd();
$tags['#EchoAlexaReminderLabel#']=$value

$scenario->setLog($value);
$scenario->setTags($tags); // écriture des tags dans le scénario
$scenario->setLog($tags); // Écrit un message dans le log du scénario  
[2021-05-27 13:44:58][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Communication][Echo du sous sol][Dernier dialogue avec Alexa].
[2021-05-27 13:44:58][SCENARIO] Exécution du sous-élément de type [condition] : if
[2021-05-27 13:44:58][SCENARIO] Evaluation de la condition : ["crée un rappel" matches "/crée un rappel/" OU "arrête" matches "/crée un rappel/" OU "éteins" matches "/crée un rappel/"] = Vrai
[2021-05-27 13:44:58][SCENARIO] Exécution du sous-élément de type [action] : then
[2021-05-27 13:44:58][SCENARIO] Mise à jour du tag #Qui# => [Communication][Echo du sous sol]
[2021-05-27 13:44:58][SCENARIO] Affichage du popup : [Communication][Echo du sous sol]
[2021-05-27 13:44:58][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-05-27 13:44:58][SCENARIO] Pause de 20 seconde(s)
[2021-05-27 13:45:18][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-05-27 13:45:18][SCENARIO] Exécution d'un bloc code
[2021-05-27 13:45:18][SCENARIO] syntax error, unexpected '$scenario' (T_VARIABLE)
[2021-05-27 13:45:18][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-05-27 13:45:18][SCENARIO] Affichage du popup :
[2021-05-27 13:45:18][SCENARIO] Fin correcte du scénario

Il manque un point-virgule à la fin de $tags['#EchoAlexaReminderLabel#']=$value… A priori c’est ça que tu cherches à faire :

$tags['#EchoAlexaReminderLabel#'] = ("#".$tags['#Qui#']."[Reminder Label]#");
$tags['#EchoAlexaReminderLabel#'] = cmd::byString($tags['#EchoAlexaReminderLabel#'])->execCmd();

$scenario->setTags($tags); // écriture des tags dans le scénario
$scenario->setLog($tags); // Écrit un message dans le log du scénario 

EDIT :
en + court encore :wink: :

$tags['#EchoAlexaReminderLabel#'] = cmd::byString("#".$tags['#Qui#']."[Reminder Label]#")->execCmd();

$scenario->setTags($tags); // écriture des tags dans le scénario
$scenario->setLog($tags); // Écrit un message dans le log du scénario 
2 « J'aime »

Merci beaucoup. Ca marche :wink:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.