You are not logged in.
Pages: 1
Bonjour,
J'ai un problème. Je ne parviens pas à remplir l'enquête de satisfaction, alors que j'arrive à récupérer celles qui sont déjà remplies.
Voici mon code actuel (de débuggage) :
$json=' {
"input":
{
"id":"8609",
"tickets_id":"'.$tickets_id.'",
"comment":"' . $comment .'",
"satisfaction":"'.$satisfaction.'"
}
}
';
$fin_url = "?session_token=$sess_token&app_token=$this->app_token";
// $url = $this->api_url ."/Ticket/".$tickets_id."/Ticketsatisfaction/$fin_url";
$url = $this->api_url ."/Ticketsatisfaction/8609/$fin_url";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Session-Token: '.$sess_token)
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$json = curl_exec($ch);
Last edited by ben2249 (2020-02-25 09:06:23)
Offline
bonsoir,
voici un bout de mon code avec lequel je peux remplir mes enquêtes de satisfaction :
function glpi_get($itemtype){
$url=$_SESSION['api_url'] .$itemtype;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $_SESSION['headers']);
$json = curl_exec($ch);
//print_r($json);
curl_close ($ch);
$obj = json_decode($json,true);
return $obj;
}
function glpi_post($itemtype,$fields){
$url=$_SESSION['api_url'] .$itemtype;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $_SESSION['headers']);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$json = curl_exec($ch);
//print_r($json);
curl_close ($ch);
$obj = json_decode($json,true);
return $obj;
}
function glpi_put($itemtype,$fields){
$url=$_SESSION['api_url'] .$itemtype;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $_SESSION['headers']);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$json = curl_exec($ch);
//print_r($json);
curl_close ($ch);
$obj = json_decode($json,true);
return $obj;
}
$ticketid=2878;
$url="/Ticket/".$ticketid."/Ticketsatisfaction/";
$obj=glpi_get($url);
$satisfactionid=$obj[0]['id'];
$comment="not too bad";
$satisfaction=3;
$url="/Ticketsatisfaction/".$satisfactionid."/";
$json=' {
"input":
{
"tickets_id":"'.$ticketid.'",
"comment":"' . $comment .'",
"satisfaction":"'.$satisfaction.'"
}
}
';
$obj=glpi_put($url,$json);
print_r($obj);
je ne vois pas tellement de différence sauf que vous avez le sessionid à la fois dans l'url et dans le header,
je n'utilise que le header avec le apptoken dans le header pas dans l'url
j'ai essayé d'ajouter "id":860 dans le Json, ça ne change rien ça marche .
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Merci pour votre aide. Ça avance.. J'ai retiré le sessionid de l'url et j'ai à présent une réponse :
array(2) {
[0]=>
string(17) "ERROR_GLPI_UPDATE"
[1]=>
NULL
}
Je m'interroge du coup sur mon user. En fait c'est mon compte, un compte de super-admin. C'est un compte ( comme tous les autres ) qui s'identifie sur LDAP. J'aurais pu me demander si c'était cela qui posait problème. Pourtant le initsession me renvoie bien un session_token, donc je ne comprends pas trop. Car j'ai été capable avec mon compte de procéder au vote via l'interface..
Offline
avez vous fait un getactiveprofile pour vérfier que vous avez le bon profil actif dans l'API ?
ceci dit même en tant que super admin on n'a pas accès à toutes les enquêtes
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
avez vous fait un getactiveprofile pour vérfier que vous avez le bon profil actif dans l'API ?
Non, j'y vais de ce pas
ceci dit même en tant que super admin on n'a pas accès à toutes les enquêtes
Oui mais je suis super admin et j'ai une enquête qui m'est adressée car je l'ai demandée à un autre technicien
Offline
Alors, getActiveProfile ne m'a pas beaucoup aidé car mon compte et celui créé pour l'appli sont tous deux super-admin.
Par contre, j'ai utilisé getFullSession pour vérifier quel utilisateur était connecté. C'est bien mon compte perso, celui qui a les droits pour remplir l'enquête de satisfaction..
Bilan .. Je ne comprends pas... J'aurais espéré m'être planté à ce niveau.. Mauvais utilisateur -> pas les droits -> bah oui patate, connecte le bon .. Mais non
Offline
ça devient compliqué de vous aider car je ne reproduis pas votre comportement sur mon instance. (glpi9.4.5)
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Alors aussi étonnant que ça puisse paraître, je suis revenu sur le projet après une longue pause et .. ça a marché ... sans que je n'ai à faire quoi que ce soit de plus que ce qui n'avait déjà été fait...
Offline
Pages: 1