Format curl et api pour script

Bonjour,

Après avoir épluché cette page https://community.jeedom.com/t/mattermost-avec-le-plugin-script/70528 et suite au changement de syntaxe de commande api de mon interface raspisms, je me suis dit que je voulais mettre ca à jour

La commande curl qui fonctionne via l’api est

curl -X POST http://MonIPraspisms/api/scheduled/ -H 'X-Api-Key: MacléAPI' -d 'text=Mon%20SMS%20d%27exemple' -d 'numbers=06XXXXXXXX'

J’ai essayé ce code


curl -X POST -H 'X-Api-Key: Ma clé API' -d "payload={
  \"text\": \"#message#\",
  \"numbers\": \"06XXXXXXXX\"
  }" "http://MonIP/raspisms/api/scheduled/"

Je n’ai pas d’erreur au lancement du script mais il n’aboutit pas. Je pense que ma clé n’est pas appelée correctement
J’ai également tenté l’option via monfichier.sh et une requete http dans le script sans succès

Auriez vous une idée ?

Bonjour ,
étant donné que la totalité du code utilise les doubles quotes ", n’est-ce pas le
'X-Api-Key: Ma clé API' qui bloque, a remplacer pas "X-Api-Key: Ma clé API" :thinking:

J’avais déjà essayé le double également sans succès malheureusement. Je ne sais pas quelle option est la meilleure, le code précédent ou un script en php auquel je passe l’argument #message# ?

Bon petite avancée, j’exécute le script php suivant en ssh et cela fonctionne

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.28/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "text=Mon%20SMS%20d%27exemple&numbers=06XXXXXXXX");

$headers = array();
$headers[] = 'X-Api-Key: MacléAPI';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

A partir du plugin script avec comme paramètre script, action, default ca marche aussi…

Par contre çà doit être la fatigue de chercher depuis ce matin, j’ai du mal à passer des arguments comme je voudrais. j’aimerais passer la variable #message# du plugin script dans la partie text de

curl_setopt($ch, CURLOPT_POSTFIELDS, "text=Mon%20SMS%20d%27exemple&numbers=06XXXXXXXX");

Je bloque sur la syntaxe correcte

Bon j’avance encore :slight_smile:

<?php
$text= #message#;
define('POSTVARS', 'numbers=06XXXXXXXX&text=');  
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.28/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, POSTVARS.$text);

$headers = array();
$headers[] = 'X-Api-Key: CléAPI';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

En mettant du vrai texte à la place de message dans $text= #message#; le message passe

C’est vraiment le passage du paramètre #message# qui me pose problème
J’exécute mon script dans le plugin comme ça /var/www/html/plugins/script/data/envoisms.php #message#

En testant cela me répond 1 et non pas le message de test habituel

Une petite idée ?

Trouvééééééééééééééééé :slight_smile: :champagne: :champagne: :champagne: :champagne: :champagne:

<?php
  
$text = $argv[1];
define('POSTVARS', 'numbers=06XXXXXXXX&text=');  
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.28/raspisms/api/scheduled/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, POSTVARS.$text);

$headers = array();
$headers[] = 'X-Api-Key: 115b962b173cd4d1d21d10b53741e40a';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

et on déclare le script avec le paramètre #message# entre " " donc /var/www/html/plugins/script/data/envoisms.php "#message#"

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