Utiliser réponse d'un ask comme variable dans un autre scenario

Bonjour, j’utilise la fonction ask avec google home pour programmer l’heure d’un réveil

la ask me permet donc d’obtenir par google l’heure du dit réveille, j’ai besoin de cette heure comme variable pour lancer un autre scenario a la dite heure

mais je ne comprend pas comment faire :confused:

merci par avance pour votre aide

ci-joint le log du ask avec donc la réponse qui contient l’heure

[2020-04-20 11:19:52][SCENARIO] Start : Scenario lance manuellement.
[2020-04-20 11:19:52][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-04-20 11:19:52][SCENARIO] Demande {"title":"a quelle heure je programme le r\u00e9veille ?","message":"a quelle heure je programme le r\u00e9veille ?","answer":["11"],"timeout":"60","variable":"reponseTest"}
[2020-04-20 11:20:09][SCENARIO] Réponse <<19 h>>
[2020-04-20 11:20:09][SCENARIO] Pause de 10 seconde(s)
[2020-04-20 11:20:19][SCENARIO] Exécution d'un bloc élément : 173
[2020-04-20 11:20:19][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-04-20 11:20:19][SCENARIO] Evaluation de la condition : ["<<19 h>>" == "<<11>>"] = Faux
[2020-04-20 11:20:19][SCENARIO] Exécution du sous-élément de type [action] : else
[2020-04-20 11:20:19][SCENARIO] Fin correcte du scénario

Bonjour,
Tu as la réponse du ask dans ta variable heure.
Si elle a le bon format, tu peux juste faire un bloc A avec cette variable et mettre une action scenario start

merci @Mips de ta réponse, le format n’est pas idéal j’ai testé a plusieurs reprise et la réponse et souvent

07H
08H
19 H

donc si je comprend bien j’ai juste a mettre "heure’ dans le bloc A ? (roh j’ai honte c’etait tout simple et je bloque la dessus depuis 2 jours)

Oui et non,
le bloc A attend un format hhmm (ou hmm), donc il faut que tu nettoies la valeur

avec ça :

time_op(date(‹ Hi ›,strtotime(#heure#)),-30)

(car ensuite le but ensuite dans le deuxième scénario et qu’il démare 30mins avant le réveil)

je pensais que #heure# donner l’heure courante et n’aller pas reprendre la valeur de la réponse du ask

C’est le cas, si tu veux la valeur d’une variable tu dois écrire variable(heure)
Renomme ta variable autrement, par exemple heurereveil si tu veux éviter la confusion en lisant ton scénario.

1 « J'aime »

désolé je patauge :confused:

[2020-04-21 11:06:04][SCENARIO] Lancement du scénario en mode synchrone
[2020-04-21 11:06:04][SCENARIO] Start : Scénario lancé manuellement.
[2020-04-21 11:06:04][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-04-21 11:06:04][SCENARIO] Demande {"title":"a quelle heure je programme le r\u00e9veille ?","message":"a quelle heure je programme le r\u00e9veille ?","answer":["11"],"timeout":"60","variable":"heurer\u00e9veil"}
[2020-04-21 11:06:16][SCENARIO] Réponse <<19 h>>
[2020-04-21 11:06:16][SCENARIO] Pause de 10 seconde(s)
[2020-04-21 11:06:26][SCENARIO] Exécution d'un bloc élément : 174
[2020-04-21 11:06:26][SCENARIO] Exécution du sous-élément de type [condition] : at
[2020-04-21 11:06:26][SCENARIO] Evaluation de la condition : [-1] = -1
[2020-04-21 11:06:26][SCENARIO] Bloc type A : 174, heure programmée invalide : -1
[2020-04-21 11:06:26][SCENARIO] Fin correcte du scénario

Relis mon post précédent, je n’ai pas mis de # pour aller chercher une variable :wink:

lol merci , j’y suis presque c’est good je récupère bien l’heure au format 19 (dans mon exemple ou google me donne l’heure "19 H)

avec

(str_replace(« h »," ",variable(heureréveil))

mais maintenant il me faut mon fameux time_op avec -30

time_op(str_replace(« h »," ",variable(heureréveil)),-30)

la ça coince ça me donne -1, je suppose que c’est une erreur de syntaxe :confused:

relis mon post précédent sur le format: ce n’est pas hh qu’il faut mais

1 « J'aime »

Salut @happythomas,

Le calcul strtotime était valable pour le retour de la commande qui était une date avec l’heure.

La le retour est différent et doit être traité différemment du coup pour arriver au format donné par @Mips

1 « J'aime »

merci de votre patience @Mips et @Salvialf

j’explore quelque chose que je maitrise très faiblement ^^ j’essaye de chercher et comprendre mais pas simple. heureusement que le forum existe car jusque la j’utilise que des scénarios sans variable de ce type

en tout cas avec (str_replace(« h »," ",variable(heureréveil))

je passe de : 19 H a: 19

déja un bon début, il me faut donc 1900 pour que le bloc A accepte, il me faut donc formater 19 , j’ai testé avec :

  • formatTime(‹ Hi ›,strtotime(valeur(heureréveil))),-30)
  • time(‹ Hi ›,strtotime(valeur(heureréveil))),-30)
  • (time(‹ Hi ›,strtotime(valeur(heureréveil))),-30)
  • time_op(time(‹ Hi ›,strtotime(valeur(heureréveil))),-30)
  • time_op(time(‹ Hi ›,strtotime(#[chambre][GH Chambre][Alarme 1]#)),-30)
  • Time(str_replace(« h »," ",variable(heureréveil))
  • (str_replace(« h »," ",variable(heureréveil))
  • formatTime((str_replace(« h »," ",variable(heureréveil))
  • formatTime((str_replace(« h »," ",variable(heureréveil)))
  • formatTime(time)(str_replace(« h »," ",variable(heureréveil))
  • (str_replace(« h »," ",variable "H "(heureréveil))
  • (str_replace(« h »," ",variable"H "(heureréveil))
  • (str_replace(« h »," « ,variable"H »(heureréveil))
  • (str_replace(« h »," « ,variable"H i »(heureréveil))
  • (str_replace(« h »," ",variable(heureréveil))
  • (str_replace(« h »," « ,variable(heureréveil’H’ i »))
  • (str_replace(« h »," « ,variable(heureréveil(‹ H › i »)))
  • (str_replace(« h »," ",variable(heureréveil))
  • (str_replace(« h »," « ,variable"Time »(heureréveil))
  • (str_replace(« h »," ",variable’Time’(heureréveil))
  • (str_replace(« h »," ",variableTime(heureréveil))

sans résultat,

j’aime comprendre car c’est toujours utile par la suite et évite de demander encore de l’aide mais la sincèrement je sèche

Si tu as toujours des heures pleine, tu peux faire

str_pad((str_replace(« h »," ",variable(heureréveil)), 4, "0")

str_pad va s’assurer de renvoyer une chaine d’au moins 4 caractères (dans ce cas), complétée par des « 0 » (dans cet exemple), à droite (c’est par défaut)

1 « J'aime »

Résultat

Je vais évaluer : « <<7 h>> »
Résultat : <<7 h>>

:frowning:

oui google répond toujours de la même façon dans les tests fait : <<19 h>> ou <<7 h>> ou <<7 h 10>>

corrige les guillemets autour du h, le forum les a reformaté, donc :

str_pad((str_replace(" h","",variable(heureréveil)), 4, "0")
1 « J'aime »

merci infiniment @Mips mais rien a faire il retire bien le h mais n’ajoute pas les 0 ,j’ai chercher sur le forum et le web et compris que c’etait une fonction php , il resteras possible d’ajouter le time_op de -30 a cette chaine ?

str_pad((str_replace(" h « , » ",variable(heureréveil)), 4, « 0 »)

y a un problème avec les espaces et l’évaluation des expressions manifestement, du coup il ne remplace pas l’espace.
C’est un peu lourd de faire ca par expression en fait alors que ca prend une ligne de code, ca m’énerve …
met un bloc code avec ceci, j’ai mis plus de log que de ligne de code pour avoir plein de détail

$heure = $scenario->getData('heureréveil');
$scenario->setLog('heure recue:'.$heure);
$heure = str_pad(filter_var($heure, FILTER_SANITIZE_NUMBER_INT), 3, '0');
$scenario->setLog('heure format hhmm:'.$heure);
$scenario->setData('heureréveil',$heure);
$scenario->setLog('Fin du bloc code');  

oh effectivement radicale comme solution, un grand merci a toi pour ta patience

il me retourne bien le format 200 pour 20h

top top top

j’utilise donc maintenant mon bloc A avec time_op(variable(heureréveil),-30)

mais il me donne :

[2020-04-21 19:14:59][SCENARIO] Réponse <<20 h>>
[2020-04-21 19:14:59][SCENARIO] Pause de 15 seconde(s)
[2020-04-21 19:15:14][SCENARIO] Exécution d'un bloc élément : 176
[2020-04-21 19:15:14][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-04-21 19:15:14][SCENARIO] Exécution d'un bloc code
[2020-04-21 19:15:14][SCENARIO] heure recue:<<20 h>>
[2020-04-21 19:15:14][SCENARIO] heure format hhmm:200
[2020-04-21 19:15:14][SCENARIO] Fin du bloc code
[2020-04-21 19:15:14][SCENARIO] Exécution d'un bloc élément : 177
[2020-04-21 19:15:14][SCENARIO] Exécution du sous-élément de type [condition] : at
[2020-04-21 19:15:14][SCENARIO] Evaluation de la condition : [130] = 130
[2020-04-21 19:15:14][SCENARIO] Tâche : 177 programmée à : 2020-04-22 01:30:00
[2020-04-21 19:15:14][SCENARIO] Fin correcte du scénario

il me rend chèvre ce scénario , je comprend meme pas ou il trouve la valeur 130

Ah c’est pas bon ça, il faut que je corrige. Parce que 200 ça veut dire 2h du mat.
Voilà pourquoi il retourne 130 qui veut dire 1h30.
Je te fais ça plus tard ce soir ou demain parce que je suis sur téléphone là et ça ne va pas le faire

1 « J'aime »

pas de soucis, merci en tout cas pour toute ton aide