Probleme intéraction

Tags: #<Tag:0x00007fbdab4faab8>

Page : index.php?v=d&p=plugin&id=pushbullet#
Jeedom_version : 3.3.33
Uname : Linux raspberrypi 4.19.66-v7l+ #1253 SMP Thu Aug 15 12:02:08 BST 2019 armv7l GNU/Linux


Message :
Bonjour,

J’ai créé une interaction pour piloter la couleur de mes lampes. Seulement j’ai l’impression que la présence du tag dans le demande bloc sa prise en compte.

L’interaction est la suivante :
allume [la tv |le salon ] en #color#

Si je teste avec :
allume la tv en rouge

J’obtiens ceci en debug:
J’ai reçu : allume la tv en rouge. Je réponds : Array ( [reply] => Je ne comprends pas )

Pourtant, la couleur rouge est bien définie dans la configuration des intéractions.
Ais-je raté quelque chose?

Merci d’avance…

Bonjour,
Je pense qui vous faut changer les seuils de reconnaissance des phrases dans la configuration de jeedom. Plus la phrase est courte plus c’est compliqué de la reconnaître surtout avec un mot variable.

Ya des interactions auto peut être que tu passes dans cette partie.

lefilliatre

1m

Bonjour,
J’ai augmenter les seuils de reconnaissance mais je me retrouve avec des faux positifs.
Apres analyse des logs je m’aperçois que ma demande n’a jamais été comparée avec les deux phrases générée par l’interaction contenant le tag.
Comment la phrase peut elle être reconnu si jamais testée?

Merci d’avance

Je ne penses pas j’ai décoché la case dans la configuration.
Le faux positif sélectionné fait parti d’une autre interaction il est sélectionné avec un score de 11.
Si je désactive l’interaction ou se trouve le faux positif, je n’ai plus aucune phrases de comparées et j’obtiens le message suivant: J’ai reçu : allume la tv en rouge. Je réponds : Array ( [reply] => Je ne comprends pas )
J’ai vraiment l’impression que la présence du tag désactive sont traitement.

Non ça le désactive pas mais ça pourris la reconnaissance de la phrase…

Ok,
J’ai désactivé toutes mes autres interactions, j’ai mis tous les seuils à 50
Lorsque je re-teste, dans les logs je n’ai encore aucun test de comparaison et toujours la même réponse : J’ai reçu : allume la tv en rouge. Je réponds : Array ( [reply] => Je ne comprends pas ) !
Pouvez vous tester chez vous?

C’est compliqué je me sers plus du tout de ca et j’avoue que le temps qu’on avait pour cette partie est passé sur le dev des assistants vocaux…

Mais je me le note au cas où je trouve du temps

merci d’avance

1 J'aime

J’ai franchi le pas
J’ai etudié un peu le code du core.
Aprés analyse il sempble que ce soit la fonction “str_replace” qui ai évolué en php.
Du coup il faut apporter la modification suivante dans interactDef.class.php:

public static function getTagFromQuery($_def, $_query) {
	$_def = self::sanitizeQuery(trim($_def));
	$_query = self::sanitizeQuery(trim($_query));
	$options = array();
	$regexp = preg_quote(strtolower($_def));

	preg_match_all("/#(.*?)#/", $_def, $tags);
	if (count($tags[1]) > 0) {
		foreach ($tags[1] as $match) {
			*$match=preg_quote('#' . $match . '#','/');*
			$regexp = str_replace($match, '(.*?)', $regexp);
		}
		preg_match_all("/" . $regexp . "$/", strtolower($_query), $matches, PREG_SET_ORDER);
		if (isset($matches[0])) {
			$countTags = count($tags[1]);
			for ($i = 0; $i < $countTags; $i++) {
				if (isset($matches[0][$i + 1])) {
					$options['#' . $tags[1][$i] . '#'] = $matches[0][$i + 1];
				}
			}
		}
	}
	foreach ($tags[1] as $match) {
		if (!isset($options['#' . $match . '#'])) {
			$options['#' . $match . '#'] = '';
		}
	}
	return $options;
}

Je vais essayer de poster ça sur le git

Attend j’ai trouvé le soucis en faite, la correction est faire en alpha (v4) et release (v3). Ca vient de la :
$regexp = str_replace(’#’ . $match . ‘#’, ‘(.*?)’, $regexp); il manquait les \ (c’est ce que tu as fait avec le preg_quote en faite (d’ailleurs c’est mieux je vais te piquer l’idée)

OK merci.
Ça sort bientôt en stable?

En v4 lundi je pense en V3 je sais pas mais dans plus longtemps

Il semblerait que le problème soit toujours la en V4.0.31.

Les tags #commande# et #objet ne sont pas reconnus/interprétés

Comme dit j’ai testé et il n’y a aucun soucis (tout est dans mon message précédent)

Effectivement, cela fonctionne. Tout simplement un probleme de filtres …
Désolé de t’avoir fait chercher pour rien.