Matches sur dernier dialogue alexa et apostrophe

Bonjour a tous,

J’aurai besoin de conseil pour faire fonctionner un scenario basé sur matches dernier dialogue avec alexa.
Mon problème étant que dès qu’il y a une apostrophe dans le dernier dialogue en question mon scenario m’affiche dans son log:
2022-10-24 10:51:23][SCENARIO] La dernière exécution du scénario ne s’est pas lancée. Vérifiez le log scenario_execution pour l’exécution à 2022-10-23 21:45:51.
Et le scenario reste sur de statut « démarré » (et scenario_execution reste vide).

Si je dit : « Alexa, quelle heure est il ? » alors alexa api m’affiche dans dernier dialogue « quelle heure est il » et mon scenario se déroule sans problème.
Si je dit: « Alexa, donnes moi l’heure » alors alexa api affiche " donne moi l’ heure " (texte copié) et le scénario ne s’exécute pas et reste sur démarré.

Je comprend bien le problème et j’avais réussi a le contourné sur les matches du plugin mode (car ça venait de la condition et pas de la valeur) mais là je n’ai pas les connaissances pour corriger/contourner mon problème.

J’imagine que ça doit paraitre évident a beaucoup d’entre vous. Une idée?

Anselme

Bonsoir,
Une idée en passant.
La solution est peut être de chercher la présence de mot clefs dans la phrase avec un scénario en bloc code …

https://waytolearnx.com/2019/07/comment-verifier-si-un-mot-existe-dans-une-chaine-en-php.html

Bonne soirée.

Merci pour l’idée.
Et bien en fait, en creusant un peu je viens de m’apercevoir que ce n’est pas mon scenario qui pose problème.
En le lançant avec le bouton exécuté le scénario fonctionne.
Je viens de tester avec un scenario avec uniquement un action de notification et le problème est le même.
Il semble que ce soit le déclencheur #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# qui plante les scenario suivant les caractères dans [Dernier dialogue avec Alexa].

Hello,
A vérifier dans les paramètres jeedom, depuis la 4.3 il y a une option pour gérer automatiquement les apostrophes ou guillemets, ça rajoute des \

Salut @Anselme,

Tu sais nous partager le log de ton scénario ?

Salut @Benbboy ,

Justement non.
Le log du scenario est vide. J’ai essayé de le passer en temps réel mais c’est la même chose.
Apparemment le scénario crash au démarrage avant de s’exécuter.
Au démarrage suivant avec un déclencheur sans apostrophe, jeedom arrête le précèdent processus du scenario qui est resté bloqué sur « démarré » et le log affiche seulement:

[2022-10-25 18:25:55][SCENARIO] La dernière exécution du scénario ne s\'est pas lancée. Vérifiez le log scenario_execution pour l\'exécution à 2022-10-25 18:25:45.

Dans log scénario de jeedom j’ai le message:

0000|[2022-10-24 17:48:38][ERROR] : La dernière exécution du scénario ne s\'est pas lancée. Vérifiez le log scenario_execution, ainsi que le log du scénario "Allumage télé par matche dialogue alexa"

Rien dans scenario_execution ni dans scenario_element_execution.
Dans les paramètre de jeedom j’ai essayé de passer log scenario en debug sans résultat.

J’avoue ne pas savoir si on peut chercher dans le log du core ou d’un moteur de démarrage des scenarios

Chez moi je n’ai pas le problème, voici mon log

[2022-10-25 20:18:33][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Salon][Salon - Echo Dot][Dernier dialogue avec Alexa] (est.
[2022-10-25 20:18:33][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salon][Salon - Echo Dot][Dernier dialogue avec Alexa]# matches "/vaisselle/"  && (#[Salon][Salon - Echo Dot][Dernier dialogue avec Alexa]# matches "/terminé/" OU #[Salon][Salon - Echo Dot][Dernier dialogue avec Alexa]# matches "/fini/")
[2022-10-25 20:18:33][SCENARIO] Evaluation de la condition : ["est ce que le lave vaisselle est terminé" matches "/vaisselle/"  && ("est ce que le lave vaisselle est terminé" matches "/terminé/" OU "est ce que le lave vaisselle est terminé" matches "/fini/")] = Vrai
[2022-10-25 20:18:33][SCENARIO] Exécution du sous-élément de type [action] : then
[2022-10-25 20:18:33][SCENARIO] Exécution d\'un bloc élément : 1444
[2022-10-25 20:18:33][SCENARIO] Exécution du sous-élément de type [condition] : if #[Cuisine][Virtuel_Run_LV][Run Lave vaisselles]# == 1  
[2022-10-25 20:18:33][SCENARIO] Evaluation de la condition : [0 == 1] = Faux
[2022-10-25 20:18:33][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-10-25 20:18:33][SCENARIO] Lancement du scénario : Alexa options : {"#ou#":"Salon","#volume#":"40","#message#":"Oui, le lave vaisselle a termin\u00e9."}
[2022-10-25 20:18:34][SCENARIO] Changement de [Salon][Salon - Echo Dot][Dernier dialogue avec Alexa] à reset
[2022-10-25 20:18:34][SCENARIO] Fin correcte du scénario

Voici mon scénario

et le déclencheur

Peut-être ajouter le « reset » forcé (dernière action du scénario) car si tu répètes 2x la même phrase, le scénario ne se lance pas

1 « J'aime »

@Benbboy ,

Est ce que ton scénario démarre normalement si tu dit « Alexa, donnes moi l’heure » ou « Alexa, arrêtes l’aspirateur » ?

Mon scenario:

Et le log:

------------------------------------
[2022-10-25 18:24:29][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa] (quelle.
[2022-10-25 18:24:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/allume la télé/"  OU #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/allumes la télé/"
[2022-10-25 18:24:30][SCENARIO] Evaluation de la condition : ["quelle heure est il" matches "/allume la télé/"  OU "quelle heure est il" matches "/allumes la télé/"] = Faux
[2022-10-25 18:24:30][SCENARIO] - Exécution du sous-élément de type [action] : else
[2022-10-25 18:24:30][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/éteins la télé/"
[2022-10-25 18:24:30][SCENARIO] Evaluation de la condition : ["quelle heure est il" matches "/éteins la télé/"] = 0
[2022-10-25 18:24:30][SCENARIO] - Exécution du sous-élément de type [action] : else
[2022-10-25 18:24:30][SCENARIO] Fin correcte du scénario
------------------------------------
[2022-10-25 18:25:55][SCENARIO] La dernière exécution du scénario ne s\'est pas lancée. Vérifiez le log scenario_execution pour l\'exécution à 2022-10-25 18:25:45.
------------------------------------
[2022-10-25 18:25:55][SCENARIO] -- Start : Scenario execute automatiquement sur evenement venant de : [Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa] (allume.
[2022-10-25 18:25:55][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/allume la télé/"  OU #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/allumes la télé/"
[2022-10-25 18:25:55][SCENARIO] Evaluation de la condition : ["allume le bureau" matches "/allume la télé/"  OU "allume le bureau" matches "/allumes la télé/"] = Faux
[2022-10-25 18:25:55][SCENARIO] - Exécution du sous-élément de type [action] : else
[2022-10-25 18:25:55][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/éteins la télé/"
[2022-10-25 18:25:55][SCENARIO] Evaluation de la condition : ["allume le bureau" matches "/éteins la télé/"] = 0
[2022-10-25 18:25:55][SCENARIO] - Exécution du sous-élément de type [action] : else
[2022-10-25 18:25:55][SCENARIO] Fin correcte du scénario
------------------------------------

Oui pas de pbl en demandant l’heure par exemple :

[2022-10-25 21:23:37][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Salon][Salon - Echo Dot][Dernier dialogue avec Alexa] (quelle.
[2022-10-25 21:23:37][SCENARIO] Exécution du sous-élément de type [condition] : if #[Salon][Salon - Echo Dot][Dernier dialogue avec Alexa]# matches "/vaisselle/"  && (#[Salon][Salon - Echo Dot][Dernier dialogue avec Alexa]# matches "/terminé/" OU #[Salon][Salon - Echo Dot][Dernier dialogue avec Alexa]# matches "/fini/")
[2022-10-25 21:23:37][SCENARIO] Evaluation de la condition : ["quelle heure il est" matches "/vaisselle/"  && ("quelle heure il est" matches "/terminé/" OU "quelle heure il est" matches "/fini/")] = Faux
[2022-10-25 21:23:37][SCENARIO] Exécution du sous-élément de type [action] : else
[2022-10-25 21:23:37][SCENARIO] Fin correcte du scénario

En fait c’est l’apostrophe qui plante chez moi. Il n’y en a pas dans « quelle heure il est? » mais il y en a un dans « donne moi l’heure ».

Essaye de décomposer le « Matches » : (exemple pour allumer la TV)

#[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/télé/"  && #[Salon][Anselme - Echo Studio][Dernier dialogue avec Alexa]# matches "/allume/"

EDIT :pencil2:

J’ai le même problème. Je n’avais jamais fait attention à ce détail.
Je ne sais pas si @sigalou a déjà vu ce problème.

Bonjour, j’ai lu votre discussion.

Finalement, vous souhaiteriez quoi ? que le plugin Alexa-api filtre les apostrophes ?

Je n’ai jamais eu le souci car je ne mets jamais d’apostrophes dans mes scénarios (vieux réflexe de développeur).

Vous rencontrez encore un souci ou c’est bon ?

Salut @sigalou,

Le seul problème qu’on peut y voir c’est quand on parle à Alexa et que la phrase contient une apostrophe, ça génère l’erreur suivante dans le log d’un scénario :

[2022-10-25 18:25:55][SCENARIO] La dernière exécution du scénario ne s\'est pas lancée. Vérifiez le log scenario_execution pour l\'exécution à 2022-10-25 18:25:45.
------------------------------------`

Moi non plus mais ça génère néanmoins une erreur. Je ne sais pas si tu as pu faire le test

Hello @sigalou

J’avoue que si le plugin remplaçait automatiquement les apostrophes par des espaces ça serait pratique.

Pour « Alexa, allumes l’ordinateur » j’ai créé un virtuel que j’ai remonté comme interrupteur dans l’application Alexa mais si j’avais voulu le faire en matche dialogue je n’aurai pas pu.

Le gros avantage du match dialogue avec ton plugin c’est que c’est pratique, léger, flexible et que ça reste dans jeedom.