Envoi de l'attestation par un scénario

Tags: #<Tag:0x00007fcbacc4ebc0> #<Tag:0x00007fcbacc4eaf8>

Bonjour Bben,

J’utilise avec le framework SC de dJuL des scénarios pour envoyer mes MMS.
Serait-il possible d’ajouter une méthode d’envoi par scénario avec passage d’un tag sous forme d’array donnant le nom de la commande qui appelle le scénario et les url des fichiers à envoyer ?

Salut jeandhom,

Pas sur de te suivre, j’ai lu très en travers les topic à propos de son framework.

Tu voudrais que la commande d’envoi appelle un scénario, qui exécuterai du code et dans lequel tu aurais accès au chemin des fichiers ?

Merci de t’intéresser à ma demande.

Oui, au lieu de choisir ‹ mail ›,‹ Telegram ›, ‹ Pushover › ou ‹ Custom ›, avoir un choix supplémentaire ‹ Scénario › puis avoir la liste déroulante de nos scénarios pour pouvoir le choisir.
Ton plugin lancerait le scénario avec Tag pour pouvoir récupérer dans le scénario :

  • La commande de ton plugin qui lance le scénario.
  • Le ou les url des fichiers à joindre.

Hello,

Tu peux déjà faire ça :

Dans un virtuel : une info action

image

  • dummymsg (info) ne sert à rien, il est juste là par obligation jeedom

Dans ses actions après exécution : le scénario
image

  • on passe les tags option et msg (ceux par défaut) etc

Reste à définir l’action de ce nouveau virtuel comme étant la commande d’envoi.
Comme les tags sont ceux de jeedom, il y a même pas à ajouter quoique ce soit et ça marche
Et pas qu’avec ce plugin mais aussi les alertes par exemple
image

1 J'aime

J’ai passé les tags de cette manière :

title="#title#"
message="#message#"
files=#files#

Je récupère bien title et message (message est vide mais je crois que c’est normal).

Par contre, je n’y arrive pas avec l’array files.

$files = $tags['#files#'];
$a = print_r($files, true);
$scenario->setLog($a);

me donne dans les logs :

[2020-11-12 19:15:46][SCENARIO] Array

Pourquoi celui là sans " ?
Et au pluriel ? l’info du plugin est au singulier
image

PS, la nouvelle syntaxe officielle pour la récupération des tag, c’est de passer par la fonction tag('nom','valeur par défaut')

Parce que, avec, cela ne donnait pas mieux.

Mais pas le code du plugin.

$optionsSendCmd= array('files'=>$filesA,'title'=>'Attestation du '.$dateAttest.' a '.$timeAttest.' de '.$prenom.' pour '.$motifStr, 'message'=> " ");

Je dois me marcher sur les pieds car je n’y arrive pas avec cette syntaxe en 4.0.61.

Salut Jeandhom,

J’avais fait des tests en ce sens au début, ça fonctionne de plusieurs façon, mais il ne faut pas utiliser le choix « array » dans la commande, quand tu bascule dans le tag, il est évalué en string :

image

ou

image

ça marche aussi avec titre, mais là on est limité en nbre de caractères,

dans la command du virtuel :
image

et le scénario :

image

et j’ai bien dans les logs selon ce que j’utilise le chemin du fichier,

Tu peux passer plusieurs url, mais il faudra traiter ds un bloc code. par ex

image

image

bon y’a peut être un meilleur séparateur à utiliser.

[edit] je réfléchi pour intégrer une commande type scénario, ça permettrait d’être direct, je collecte de l’info, et faudra revoir la conf des équipement. je met ds la todo.

1 J'aime

Merci Bben,

J’étais resté sur le choix « mail » en essayant, avec les conseils de @naboleo, de récupérer ses tags, mais à priori les arrays, comme j’essaye de les passer, ne passent pas (files avec un ‹ s › dans le core est un array).

Je vais faire les tests en custom.

C’était l’objet de mon post, ça serait plus simple. :smiley:

Hello,

Il doit me manquer des infos pour bien tout comprendre, mais le fonctionnement en théorie est simple : Les tags qui existent au moment de l’appel, sont à reprendre pour être transmis et pris en charge par le scénario.
Sachant que j’ai pas le plugin mail, je rate sans doute un truc, mais les tags, c’est déjà ni plus ni moins qu’un tableau. Donc repasser par optionsSendCmd, ça me semble bien compliqer la mécanique.

Enfin bref, si c’est intégré par @Bben, tant mieux.

Exemple pour l’envoi d’un mail avec le plugin éponyme.

$title='Test plugin mail avec pièces jointes';
$fichier1 = '/var/www/html/file001.txt';
$fichier2 = '/var/www/html/file002.txt';
$message = 'Envoi du fichier ' . $fichier1;
$message .= PHP_EOL;
$message .= 'Envoi du fichier ' . $fichier2;
$files = array();
array_push($files, $fichier1);
array_push($files, $fichier2);
$options = array('title'=>$title, 'message'=>$message, 'files'=>$files);
cmd::byString('#[Ma][Commannde][Mail]#')->execCmd($options, $cache=0);

D’où le 'files' avec un ‹ s ›.

Non, c’était juste pour montrer la syntaxe de 'files'

Oui, car je n’arrive pas à passer le tag 'files'.

Logique, par défaut il n’existe pas dans les tags…

  • probablement pas avant cet exemple de scénario, du moins pas avec le plugin…
    il faut ajouter un truc du genre #files#=#pngURL# par exemple
  • et pas non plus après …
    Donc il n’est pas passé tout seul… sauf à faire un truc du genre quelque part dans ton test…
$tags = $scenario->getTags();
$tags['#files#'] = $files;
$scenario->setTags($tags);

En plus c’est un tableau dans le tableau options à la sortie de ton scénario… donc c’est quasi certain qu’il n’y pas d’accès direct…

Là on quand même un empilement de méthodes/syntaxe pas beau

Salut tous,

Dispo en béta avec scénario, ça lance le scénario avec dans les tags #pdfURL#, #pngURL# et #qrcURL# correspondant au chemin des différents fichiers si choisit dans l’équipement.

Je n’ai pas testé autre que de logger les url dans le scénario. je pense qu’il faut cocher « Désactiver la suppression auto » et appeler la commande de suppression des fichier dans le scénario.

1 J'aime

A priori, pas dispo sur le market.

mince, j’ai oublié qu’il fallait synchroniser…
,normalement c’est passé!

Merci, c’est ok sur le market.

Super, ça fonctionne bien.
Pour éviter d’avoir à faire un scénario par équipement, peux-tu ajouter un tag qui serait l’ID de la commande qui a lancé le scénario ?
J’ai vu que je pourrai récupérer l’ID de l’équipement dans le chemin du fichier mais je pourrais mieux personnaliser mon MMS avec l’ID de la commande.

ok, ca me semble faisable, j’ajouterai un tag avec l’id et un autre avec le nom histoire de donner de la visibilité.

1 J'aime

Je n’ai plus de cœur mais le cœur y est.

Capture d’écran du 2020-11-13 18-43-43

Merci :heart:

1 J'aime

ok, en béta tu as les tag cmdID et cmdNAME !

Enjoy it!