Bonjour,
Je recherche une solution pour exécuter la commande suivante où MESSAGE sera remplacé par l’information #message # :
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "MESSAGE"}' http://{your-mattermost-site}/hooks/xxx-generatedkey-xxx
Avec l’aide de certain d’entre vous, j’ai testé avec un fichier .sh:
Le problème c’est que je reçois le message $1.
Comment faire pour que la variable soit mon message ?
Ils m’ont proposé autre chose, mais qui malheureusement ne fonctionne pas non plus:
Où j’ai une erreur :
[2021-05-28 12:30:35][SCENARIO] Json invalide ou non décodable : <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"><meta name="robots" content="noindex, nofollow"><meta name="referrer" content="no-referrer"><title>Mattermost</title><meta name="mobile-web-app-capable" content="yes"><meta name="application-name" content="Mattermost"><meta name="format-detection" content="telephone=no"><link rel="icon" type="image/png" href="/static/images/favicon/favicon-default-16x16.png" sizes="16x16"><link rel="icon" type="image/png" href="/static/images/favicon/favicon-default-24x24.png" sizes="24x24"><link rel="icon" type="image/png" href="/static/images/favicon/favicon-default-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/static/images/favicon/favicon-default-64x64.png" sizes="64x64"><link rel="icon" type="image/png" href="/static/images/favicon/favicon-default-96x96.png" sizes="96x96"><link rel="stylesheet" class="code_theme"><style>.error-screen{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding-top:50px;max-width:750px;font-size:14px;color:#333;margin:auto;display:none;line-height:1.5}.error-screen h2{font-size:30px;font-weight:400;line-height:1.2}.error-screen ul{padding-left:15px;line-height:1.7;margin-top:0;margin-bottom:10px}.error-screen hr{color:#ddd;margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.error-screen-visible{display:block}</style><meta http-equiv="Content-Security-Policy" content="script-src 'self' cdn.rudderlabs.com/ js.stripe.com/v3 "><link href="/static/main.9ef911c6437f8b1ded00.css" rel="stylesheet"><script src="/static/main.a8f8f181c6bb88f0eafe.js"></script><meta name="apple-mobile-web-app-title" content="Mattermost" /><meta name="apple-mobile-web-app-capable" content="yes" /><meta name="apple-mobile-web-app-status-bar-style" content="default" /><link rel="apple-touch-icon" sizes="76x76" href="/static/icon_76x76.png" /><link rel="apple-touch-icon" sizes="72x72" href="/static/icon_72x72.png" /><link rel="apple-touch-icon" sizes="60x60" href="/static/icon_60x60.png" /><link rel="apple-touch-icon" sizes="57x57" href="/static/icon_57x57.png" /><link rel="apple-touch-icon" sizes="152x152" href="/static/icon_152x152.png" /><link rel="apple-touch-icon" sizes="144x144" href="/static/icon_144x144.png" /><link rel="apple-touch-icon" sizes="120x120" href="/static/icon_120x120.png" /><link rel="manifest" href="/static/manifest.json" /></head><body class="font--open_sans enable-animations"><div id="root"><div class="error-screen"><h2>Cannot connect to Mattermost</h2><hr/><p>We're having trouble connecting to Mattermost. If refreshing this page (Ctrl+R or Command+R) does not work, please verify that your computer is connected to the internet.</p><br/></div><div class="loading-screen" style="position:relative"><div class="loading__content"><div class="round round-1"></div><div class="round round-2"></div><div class="round round-3"></div></div></div></div><div id="root-portal"></div><noscript>To use Mattermost, please enable JavaScript.</noscript></body></html>
Sauriez-vous m’aider ?
Merci par avance.
Mathieu
mnpg
Mai 28, 2021, 3:11
2
bonjour @OUARZA ,
pour le script bash, il manque juste des simple quotes entre le $1.
voici la commande modifiée :
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "'$1'"}' "http://{your-mattermost-site}/hooks/xxx-generatedkey-xxx"
il est préférable de mettre l’URL entre guillemets, cela afin qu’elle soit prise en compte dans son intégralité dans le cas ou celle-ci contiendrait des caractères spéciaux comme le & qui pourrait être interprété par bash. J’avais fais une réponse détaillée à ce sujet que tu peux trouver dans ce post
Ho merci @mnpg ,
J’ai suivi tes conseils et cela fonctionne partiellement.
En effet, via un scénario ou le bouton test, il n’envoie que le premier mot
Sais-tu comment je pourrai y remédier ?
Mathieu
mnpg
Mai 28, 2021, 7:45
4
dans ta commande de script jeedom, mets #message # entre guillemets.
si ton message contient des espaces, chaque mot le composant sera considéré comme un argument.
$1 pour le premier mot
$2 pour le 2eme
…etc
en mettant entre guillemets, le message est pris en intégralité et considéré comme un seul et unique argument
1 « J'aime »
Tu es trop fort !
Merci infiniment.
@mnpg , j’ai mis le « #message # » et cela fonctionne si je mets
en espace dans mon scénario.
Ce comportement est-il normal ?
Dois-je utiliser cette syntaxe ?
'{"text": "'$1'"" ""'$2'"" ""'$3'"}'
Mathieu
mnpg
Mai 28, 2021, 8:02
7
peux tu me donner un exemple de message, je ne comprends pas ton explication
Voici mon scénario pour tester:
Avec comme requête .sh:
'{"text": "'$1'"}'
Si je mets dans le message :
Bonjour Ceci est un test.
Cela fonctionne sans problème.
Si je mets dans le message :
Bonjour Ceci est un test.
Je ne reçois rien
Est-ce plus clair ?
Mathieu
mnpg
Mai 28, 2021, 8:24
9
si tu remplace « #message # » par « Bonjour Ceci est un test » dans la commande de script jeedom, cela donne quoi si tu l’executes?
Bonsoir,
Je n’y connais rien à votre problème, mais en revanche, #message # est déjà utilisé par Jeedom.
Est-il possible que cela soit la cause de votre problème ?
Bonsoir @Fabrice ,
L’idée est d’utiliser la commande « message » dans un scénario pour que ce message soit intégré à la commande Script.
Mathieu
mnpg
Mai 28, 2021, 8:44
13
juste pour savoir, si tu mets "Bonjour Ceci est un test."
au lieu de « #message # » dans la commande de script jeedom et que tu l’executes, cela fonctionne?
Hello @mnpg ,
Yep, ça marche
Cela veut-il dire que dans le script .sh, il faut lui dire si tu as un espace tu remplaces par
?
Mathieu
mnpg
Mai 29, 2021, 2:08
15
salut, oui tout a fait
à ce moment-là, le mieux -la façon la plus simple-c’est de rajouter la ligne suivante au script avant la ligne du curl :
message = $(echo $1 | tr ' ' ' ')
et modifier la suivante en remplacement $1 par ${message} :
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "'${message}'"}' "http://{your-mattermost-site}/hooks/xxx-generatedkey-xxx"
comme ça, quelque soit les messages que tu mettras dans tes scenarios (messages avec des espaces), les espaces des messages seront remplacés dans le script par des espaces insécables.
à tester
j’oubliais, #message # est toujours entre guillemets dans la commande de script
EDIT : petit boulette dans ce que je t’ai dis, c’est message=...
, pas $message=...
Malheureusement cela ne fonctionne pas et à vrai dire, je ne sais pas pourquoi (pas de log).
Je vais retenter plus tard, j’ai l’impression que le serveur mattermost ne répond plus.
Mathieu
mnpg
Mai 29, 2021, 2:27
17
je pense que l’on touche au but. Tiens moi au courant
Oui, avec plaisir.
Merci beaucoup pour l’aide apportée
Mathieu
@mnpg
petite question, c’est normal les { } au niveau de "'${message}'"
?
Mathieu
$var : C’est une écriture simplifiée de ${var}
perso j’utilise par habitude ${var}, on l’utilise beaucoup pour lire les valeurs de tableaux ${tab[1]}
1 « J'aime »