Obtenir la phrase ayant matché parmi toutes celles générées par l'interaction de jeedom

Bonjour tout le monde

Je viens vers vous car malheureusement après plusieurs heures de recherches je n’ai pas trouvé la réponse.

Dans le cadre d’une interaction avec cette demande : [Je suis rentré |je suis de retour| Me revoilà]
J’obtiens trois phrases:

  • me revoila
  • je suis de retour
  • je suis rentre

Cette interaction lance ensuite un scénario qui va récupérer le nom de l’enceinte Echo ayant eu cette demande.
Tout fonctionne correctement, si je mets en variable avant le lancement du scénario que je cherche la phrase : je suis rentré

Voici ma question:
Quelqu’un aurait-il une idée d’un moyen de récupérer sous forme array (ou autre) toutes les phrases générées par l’interaction dans jeedom. Cela pourrait me permettre de faire la vérification d’une manière aisée, avec les dernières infos obtenues par les Alexa ?

Car si dans mon cas je dis : Je suis de retour, le scénario se lance mais ne fonctionnera pas vu que la phrase recherchée dans les Echos est je suis rentré

Et naturellement, sans être obligé de réécrire toutes les phrases manuellement. Car dans cet exemple, ça va, il n’y a que trois phrases. Mais dans d’autres interactions ont peut en avoir une vingtaine ou plus… :innocent:

Voici les captures d’écran pour expliquer la situation. Merci d’avance pour votre aide.
A bientôt

Salut @Schnee,
j’ai p’être pas tout compris mais je t’ai fait le code…

$DEBUG=1;

if($DEBUG) {
  $scenario->setLog('DEBUG : DEB >>> C\'est parti !');
}
$PhraseInteractionAlexa = 'pas là';

$mes_actions = array(0 => 'Là', 1 => 'pas là', 2 => 't\'es où', 3 => 'parti');
$id_action = array_search($PhraseInteractionAlexa, $mes_actions); // Cherche si la phrase est dans mes actions

if($id_action) {
	$scenario->setLog(' >> ACTION : ' . $id_action . ' == ' . $PhraseInteractionAlexa);
}
else {
	$scenario->setLog(' >> ACTION : introuvable ! [' . $PhraseInteractionAlexa . ']');
}

if($DEBUG) {
  $scenario->setLog('DEBUG : FIN >>> C\'est fini !');
}

ce qui donne :
image

Salut @cstan77

Wouahh, heuu là c’est du lourd :upside_down_face:

J’ai l’impression que c’est exactement ce que je souhaite. Je vais essayer de trouver par moi-même comment utiliser cette pépite.

Merci beaucoup. Effectivement j’aurai pu chercher comment y arriver (je me suis jamais douté que c’était aussi compliqué !!!)

Très bonne soirée et chapeau bas

Resalut @cstan77

Je me suis avancé un peu vite en disant que c’était sans doute ce qu’il me fallait. Désolé :innocent:

Ton code fait exactement le travail final attendu.

MAIS

Le soucis est qu’il faut écrire toutes les phrases testées. Ce que je cherche à faire, c’est de les récupérer lorsqu’elles sont générées automatiquement depuis les interactions.

Dans l’exemple ci-dessous, j’ai fait exprès de bloquer la création des phrases au nombre de 3. Mais si tu mets dans la partie « Demande » les termes suivants : #commande# #equipement# #objet#, tu obtiendras très vite plus d’une centaine de lignes.

Naturellement le but ce n’est pas de récupérer autant de ligne. Mais si pour mes demandes, Jeedom en créé une vingtaine, je voulais les récupérer automatiquement.

Ce qui revient à dire :

$mes_actions = array(0 => 'Là', 1 => 'pas là', 2 => 't\'es où', 3 => 'parti');

au lieu de ‹ Là ›, ‹ pas là ›, ‹ t’es où ›, ‹ parti ›, il récupère automatiquement toutes les phrases générées par le menu « Outils / Interactions » et les insères comme tu as fait, en array.

Mais ça… Je n’ai aucune idée, si une telle chose est faisable. Peut être dans un futur :sweat_smile:

En espérant avoir réussi à être un peu plus clair dans mes explications.

En tous cas, encore merci à toi pour le temps passé. C’est super :+1:

C’est faisable de remplir automatiquement car les interactions sont enregistrés dans la base.
Perso je n’utilise pas mais tu trouveras ton bonheur ici :

Merci beaucoup pour la doc.

C’est super, je vais essayer d’y jeter un œil dans les prochains jours.

Passe une très belle journée.

A bientôt

Bonjour,

Regardez la documentation et le tag #query#
https://doc.jeedom.com/fr_FR/core/4.1/scenario

1 « J'aime »

Bonjour @Mips

Merci beaucoup. Tellement navré, je n’ai même pas vu cette commande et pourtant j’ai déjà regardé cette doc à plusieurs reprises.

Ta solution fonctionne partiellement pour le moment. Je m’explique:

Evaluation de la condition : ["je suis rentré" == "je suis rentre "] = Faux

Ici dans ce cas :

  • « je suis rentré » : Provient du dernier dialogue d’une enceinte Echo Alexa
  • "je suis rentre " : Correspond au retour du #query#.

J’ai vu que la fonction Trim() permet de travailler le texte pour retirer les espaces. Plus qu’à trouver la fonction qui permet de retirer les accents et l’évaluation de la condition dira True, au lieu de False :star_struck:

Je repars chercher. Encore merci pour ton aide. Je suis persuadé que dès l’instant où j’arrive à régler ce petit problème le #query# va grandement m’aider.

Bon il y aura toujours le retour de Alexa qui va d’abord chercher les informations sur les serveurs Amazon au lieu de Jeedom. Donc elle parle en disant qu’elle ne peut pas, mais va tout de même le faire.
J’ai vu sur un post une solution de contournement, en attendant un système magique, consiste à créer une routine vide avec le terme.
Perso je ne vais pas le faire, car il faudrait dans ce cas créer x requêtes qui correspondent en réalité aux #query# :upside_down_face:

Dès que je trouve une suite, je viens mettre à jour ce fil. Si jamais ça peut servir d’autres utilisateurs…

A bientôt

Je n’ai pas suivi dans ton exemple le phrase avec accent c’est celle que tu as tapé toi dans ton test de scénario ?

Il y a une fonction du core qui traite les accents, je ne l’ai pas sous le main mais j’essaye de retrouver ca demain.
Mais en fait, pourquoi ne pas taper la phrase sans accent tout simplement ?

Et pour l’espace oui le trim fera l’affaire par contre c’est moche que ce ne soit pas déjà le cas par le core. Je vais jeter un oeil à ça aussi si j’ai le temps.
Vérifie quand même que tu n’as pas laissé un espace dans tes phrases d’interaction

Lol, je ne pensais pas que tu étais encore réveillé !!!

Pour mes phrases dans les interactions il n’y a pas d’accent
image

L’accent provient de la phrase du dernier dialogue dans Alexa

En tous cas, merci beaucoup pour ton aide.
Passe une bonne nuit :+1:

Je m’en approche, avec ça :
strtoupper(#[Bureau][Echo Bose Bureau][Dernier dialogue avec Alexa]#) == strtoupper(Trim(#query#))

  • strtoupper = Majuscule à toutes les lettres (enfin normalement !) → KO
  • Trim = retire les espaces avant et après → OK

[2021-02-25 02:28:13][SCENARIO] Evaluation de la condition : [« JE SUIS RENTRé » == « JE SUIS RENTRE »] = Faux