Question sur les tags

Bonsoir,
Je cherche à identifier dans le centre de messages des messages bien précis et les effacer.
J’ai fait Ajouter une action sur message et j’ai mis démarrer un scénario avec un tag

de ce que j’ai compris sur l’utilisation dans la doc j’ai indiqué en tag : plugin=#plugin# pour avoir le nom du pluging qui est l’objet du message.
Ensuite j’ai créé un scénario pour traiter :


normalement si j’ai bien compris, lorsque le tag plugin sera égal à zigbee les actions qui sont dans le scénario devraient s’exécuter, mais ce n’est pas le cas.
Le résultat reste déséspérement : Je vais évaluer : « defaut » == « zigbee »
Résultat : false
Ma conclusion après plein d’essais et de lectures plus ou moins pédagogiques c’est que je n’ai rien compris et qu’il faut mieux demander de l’aide à ceux qui savent.
Alors help me svp :slight_smile:

bonjour
tag(plugin) te donne quoi ?

Salut,

Perso j’éviterai d’appeler le tag plugin, je mettrai source=#plugin#

Dans le SI je testerai tag(source)== ‹ Zigbee ›

Si dans le scénario le tag source n’a pas de valeur c’est que dans la config du log y a un souci, peut être un bug qui ne passe pas #plugin#

Je pense avoir déjà fait exactement ce que tu souhaites,
lancement d’un scenario avec en tag le nom du plugin et en fonction du tag, filtrage de messages suivant une chaine de caractère dans ce dernier

:

sur ta syntaxe (par rapport à la mienne), à part le fait que tu ais rajouter « défaut », pas de difference… du coup, essaye de supprimer défaut !

fait nous aussi passer les logs de lancement du scenario.

dernier point, le om du plugin correspond au nom d’affichage :
image

et attention aux min/majuscules

Le bonjour du Dimanche,
Merci à vous de vos réponses, je suis en train de tester.
@ngrataloup c’est exactement ce que je veux faire, on doit être nombreux à faire ça de toute façon car il y a des messages d’alerte qui arrivent sans influer sur le fonctionnement et qui polluent la lecture des vrais messages d’alerte.
Du coup, je n’avais pas fait d’erreur dans mon interprétation de ma lecture de la doc. Par contre si je comprends bien, le souci viendrais de mon message qui n’est pas considérer comme une erreur par le centre de logs. J’ai donc coché les autres cas d’ajout de message pour voir si ça marche mieux et identifier à quoi il est assimilé.
A suivre …

Hello,
Bon après mes tests et sans avoir rien changé dans les syntaxes que j’avais employé et bien ça marche.
J’ai juste coché tous les cas d’écriture de log pensant que c’était là que ça péchait, ça a marché, je suis donc revenu en arrière en les décochant une par une, pour finalement arriver à ma situation initiale et ça fonctionne toujours :tipping_hand_man:
Tant mieux, mais je n’aimes pas quand je ne comprends pas :thinking:
Un petit truc qui devait être bloqué quelque-part, je ne sais pas.
Au passage de mes tests j’ai compris qu’un tag était volatile contrairement à une variable. On ne peut donc pas le tester après coup, il n’existe qu’au moment où le message apparait.
Bref, merci à vous et bonne semaine à ceux qui bossent

1 « J'aime »

Salut,

C’est en effet tout l’intérêt du tag :slightly_smiling_face:
Il n’existe que le temps de l’exécution du scénario appelé. Il est automatiquement supprimé à la fin du déroulement du scénario sans avoir à le gérer. Contrairement à une variable qui reste pour toujours a moins de la supprimer explicitement par une instruction.

Hello all,
Une petite question d’écriture.
Quand la chaine recherchée commence par :

Erreur lors de l'exécution du cron Cette action ne peut pas être exécutée pour cet appareil

et que le code du scénario pour chercher la chaine est :

$strings = array('Erreur lors de l'exécution du cron Cette action ne peut pas être exécutée pour cet appareil');

on voit bien que le ’ de l’exécution est interprété d’où pb

J’ai essayé de mettre " à la place de ’ mais ça ne donne rien de mieux.

Une solution de cux qui savent coder ?
Merci

Helloo,

Tu as donc essayé :
$strings = array("Erreur lors de l'exécution du cron Cette action ne peut pas être exécutée pour cet appareil");

Tu peux essayer $strings = array('Erreur lors de l\'exécution du cron Cette action ne peut pas être exécutée pour cet appareil'); ?

Sinon tu es sûr de la bonne phrase ? Pas de point avant Cette ?

Bonjour,
La phrase complète est :

Erreur lors de l'exécution du cron Cette action ne peut pas être exécutée pour cet appareil HomeAppliance did not respond to connection initialization requests in time, it might be offline

C’est un copié collé donc à priori pas de point avant Cette
Je modifie avec ta proposition et je test lorsque l’erreur reviendra.
Cordialement

Bon ça ne marche toujours pas, avec le / il ne reconnait pas comme la bonne phrase et n’exécute pas l’effacement

Le caractère d’échappement c’est \

Le message retourne ' pour le caractère '.

Tu peux essayer ça :

$strings = array(
  'Erreur lors de l\'exécution du cron Cette action ne peut pas être exécutée pour cet appareil HomeAppliance did not respond to connection initialization requests in time, it might be offline');

$tags = $scenario->getTags();
$tagPlugin = $tags['#plugin#'];

$msgs = message::byPlugin($tagPlugin);
foreach ($msgs as $msg) {
  foreach ($strings as $string) {
    $strMsg = str_replace("&"."apos;", "'", $msg->getMessage());
    if (stristr($strMsg, $string)) {
      message::removeAll($tagPlugin, $msg->getLogicalId());
    }
  }
}

Pour tester sans supprimer le message et pouvoir faire plusieurs essais,
tu peux remplacer la ligne :
message::removeAll($tagPlugin, $msg->getLogicalId());
par la ligne :
$scenario->setLog('Message trouvé !');

Bonjour,
@Jeandhom tu m’avais mis le doute j’ai donc refais les essais, mais non j’avais bien mis \ et ça ne marche pas dans mon cas, ça interprète quand même le ’
Je refais des essais avec ce que m’a proposé @noodom et je reviens vous dire.

Il faudrait pouvoir voir ton bloc code complet.

C’est normal que le caractère d’échappement ne suffise pas (voir mon message précédent).
Mon code proposé doit résoudre ton problème :wink: Attention il faudra aussi ajouter un traitement pour les guillemets si tu veux gérer des messages en contenant (et sans doute d’autres caractères spéciaux à voir au cas par cas)

Mes respects Mr @noodom :slight_smile:
Ca dépasse mes petites compétences de bidouilleur amateur mais ça fonctionne très bien.
Si tu as 5 minutes pour m’expliquer comment tu trouves ce que renvoie le caractère qui pose pb et ce que tu fais dans

$strMsg = str_replace("&"."apos;", "'", $msg->getMessage());

Je me coucherais moins ignare ce soir :tipping_hand_man:

En tout cas merci à vous tous

:+1: parfait
Pour savoir ce que renvoie vraiment le message, il suffit de logger $msg->getMessage() avec un $scenario->setLog() ET de sélectionner log brut pour voir le vrai contenu de la chaîne de caractères.
Tu verras que tu as ' au lieu de '.

Il faut donc transformer tous les ' par ' avec $strMsg = str_replace("&"."apos;", "'", $msg->getMessage());

Trouvé ce tableau si ça peut rendre service pour d’autre.
http://www.madore.org/~david/computers/unicode/htmlent.html

1 « J'aime »

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