Envoi de l'attestation par un scénario

Mise à jour bien passé sur le market.
Plus qu’à peaufiner mon scénario.
Merci.

cmdID est l’ID de l’équipement, je préférerais l’ID de la commande.
Idem pour cmdNAME.
Celle de la forme #[Ma][Commande][Envoi motif ACHATS]#

C’est parfait.
Je test tout ça et reviendrait clôturer le post un peu plus tard.
Merci

Bon ben je viens de faire encore une fois la même mauvaise manip et supprimé le post d’avant, je remet les infos tout de même :

du coup j’ai gardé pour l’equipement tt de même, et ajouter pour la commande :

#eqID# et #eqNAME# id et nom de l’équipement (celle d’avant)

#cmdID# et #cmdNAME# pour la commande (les nouvelles)

note : il est ou ce foutu bouton poubelle, ça fait 2 fois que ça m’arrive sans m’en rendre compte !!! :dizzy_face: :woozy_face: :roll_eyes:

[edit] Pùù$$ù vu, il est juste au même endroit que les 3 petits points pour ouvrir les option du message… un mauvais double click… vieillesse… parkinson…

1 « J'aime »

'Lut

Penses aussi à ajouter ça quelque part dans la config (infobulle si scénario par exemple ?) et la doc sinon ça va être perdu au fin fond du forum

1 « J'aime »

Bonne idée l’info bulle (j’ai mis un mot ds la docs déjà )

1 « J'aime »

Super pratique en mode scénario.
Merci pour ce dev et ta réactivité.
Plugin +++.

1 « J'aime »

Merci Jeandhom :grinning:
Je suis content que ça soit utile ! je m’éclate, ça fait longtemps que je n’avais pas codé!

Par curiosité, tu l’utilise comment dans ton scénario? on peux avoir un screen pour se faire une idée?

Avec plaisir.

Envoi d’un SMS sur un téléphone équipé de JPI, si le sms commence par Covid= alors JPI joue ce scénario qui envoi dans un virtuel l’appelant et le message du SMS.

Capture d’écran du 2020-11-14 11-57-53

Cela déclenche ce scénario (merci @naboleo pour le try catch) qui lance (ou pas) une commande de ton plugin.

$name = cmd::byString('#[Covid19][JPI Covid][Expéditeur]#')->execCmd();
$scenario->setLog('Name : ' . $name);
$value = cmd::byString('#[Covid19][JPI Covid][Covid]#')->execCmd();
$scenario->setLog('Valeur : ' . $value);
$nameCmdCovid = '#[Covid19]['. $name . '][Envoi motif ' . strtoupper($value) . ']#';
$scenario->setLog('CmdCovid : ' . $nameCmdCovid);
try {
  $cmdCovid = cmd::byString($nameCmdCovid);
  $cmdCovid->execCmd();
  $typeEnvoi = $cmdCovid->getEqLogic()->getConfiguration('use_scenar');
  if ($typeEnvoi) {
    $message = 'L\'attestation est en préparation pour un envoi par MMS !!!';
  } else {
    $message = 'L\'attestation est dans ta boîte mail !!!';
  }
}catch(Exception $e){
  $scenario->setLog($nameCmdCovid . " introuvable");
  $message = 'Covid=' . $value . ' n\'est pas valide !!!' . PHP_EOL;
  $message .= 'Utilise un des motifs suivant :' . PHP_EOL;
  $message .= 'Covid=achats' . PHP_EOL;
  $message .= 'Covid=convocation' . PHP_EOL;
  $message .= 'Covid=enfants' . PHP_EOL;
  $message .= 'Covid=famille' . PHP_EOL;
  $message .= 'Covid=handicap' . PHP_EOL;
  $message .= 'Covid=missions' . PHP_EOL;
  $message .= 'Covid=sante' . PHP_EOL;
  $message .= 'Covid=sport_animaux' . PHP_EOL;
  $message .= 'Covid=travail' . PHP_EOL;
}
$scenario->setLog('Message : ' . $message);
$options=array('message'=>$message);
cmd::byString('#[Maison][JPI SendSMS SC][' . $name . ']#')->execCmd($options, $cache=0);

Si l’équipement prévoit un envoi de l’attestation par MMS, il déclenche ce scénario qui met en forme les données pour le scénario de routine d’envoi de MMS.

$tags = $scenario->getTags();

//$a = print_r($tags, true);
//$scenario->setLog($a);

$pdfURL = $tags['#pdfURL#'];
$qrcURL = $tags['#qrcURL#'];
$pngURL = $tags['#pngURL#'];
$cmdID = $tags['#cmdID#'];
$cmdNAME = $tags['#cmdNAME#'];
$eqID = $tags['#eqID#'];
$eqNAME = $tags['#eqNAME#'];

$scenario->setLog('pdfURL : ' . $pdfURL);
$scenario->setLog('qrcURL : ' . $qrcURL);
$scenario->setLog('pngURL : ' . $pngURL);
$scenario->setLog('cmdID : ' . $cmdID);
$scenario->setLog('cmdNAME : ' . $cmdNAME);
$scenario->setLog('eqID : ' . $eqID);
$scenario->setLog('eqNAME : ' . $eqNAME);

$motif = cmd::byId($cmdID)->getName();
$tel = eqLogic::byId($eqID)->getName();
$min = array("â", "é", "è", "ë", "î", "ï", "ô", "ö", "û", "ü");
$maj = array("A", "E", "E", "E", "I", "I", "O", "O", "U", "U");
$tel = str_replace($min, $maj, $tel);
$tel = '{' . strtoupper(substr($tel . '_tel',0,12)) . '}';

$msg = $motif . ' le ' . date('d/m/Y à H:i:s',strtotime("now"));

$scenario->setLog('Télléphone : ' . $tel);
$scenario->setLog('Message : ' . $msg);

$scenar = scenario::byId(118);
$files["#url#"]=$pngURL;
$files["#tel#"]=$tel;
$files["#msg#"]=$msg;
$scenar->setTags($files);
$scenar->launch();

Puis le scénario routine d’envoi MMS.

//charge la librairie JPI
$jpi = $sc->loadLib('jpi');
$sc->jpi->SET_URL('http://jpi.mondomaine.fr:8080');

//charge la librairie files
$files = $sc->load('files');

// Récupération des tags passés en paramètres.
$tags = $scenario->getTags();

// Afficher un array
$a = print_r($tags, true);
$scenario->setLog($a);

$tel = $tags['#tel#'];
$localURL = $tags['#url#'];
$msg = $tags['#msg#'];

//génère le lien, avec une validité de 30 secondes avec l'IP de Jeedom
$url = $files->makeDownloadUrl($localURL, '192.168.x.y', 30);

//Envoie le MMS
$jpi->sendMms($tel, $url, $msg);

J’ai presque mal à la tête :joy:

Tu peux gagner un peu, il y a des fonctions toutes faites dans jeedom :

$tel= sanitizeAccent($tel);
1 « J'aime »

Merci. :+1:
C’est ça lorsque on débute, on en apprend tous les jours. :sunglasses:

:exploding_head:

Nice! J’aime l’idée d’aller récupérer la conf de l’équipement,

1 « J'aime »
/var/www/html/core/php/utils.inc.php:1004:function sanitizeAccent($_message) {

Je n’avais même pas connaissance de ces belles fonctions dans le core.
Merci pour ton intervension.

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