You are not logged in.
Pages: 1
Bonjour,
Nous avons un problème depuis 1 semaine,
Notre but étant de crée un ticket en passant pas l'api REST,
sur note serveur de test, la création de ticket fonctionne et renvoie bien "Objet déplacé" & {"id":"xxx","name":"xxx" ...}
Tant dis que sur notre serveur de production, le ticket ne se crée simplement pas (curl affiche "Objet déplacé" et plus rien.)
Nous avons vérifié les tokens, si l'api été bien activé sur glpi etc... Mais ça ne fonctionne toujours pas.
Peut-être est-ce une paramètre, une configuration sur glpi qui est érroné ?
Si vous avez n'importe quelle questions/pistes je suis preneur.
Merci !
Offline
avez vous tentez le debug en vérifiant la valeur du json envoyé par le "cURLexec".
recupérez vous le session token ?
est ce que le compte utiisé a le droit de creer un ticket dans l'entité courante ?
avec vous des champs obligatoires qui ne sont pas dans les paramètres du json ?
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 tentez le debug en vérifiant la valeur du json envoyé par le "cURLexec"."
Non, comment pourrait-on faire cela ?
"recupérez vous le session token ?"
Oui, le session token se recupére bien
"est ce que le compte utiisé a le droit de creer un ticket dans l'entité courante ?"
Oui, le compte utiliser a bien les droits pour pouvoir crée des tickets
"avec vous des champs obligatoires qui ne sont pas dans les paramètres du json ?"
Non, les champs obligatoires sont bien présent dans les paramètre du json
Merci pour vos réponses
Offline
avez vous tentez le debug en vérifiant la valeur du json envoyé par le "cURLexec".
recupérez vous le session token ?
est ce que le compte utiisé a le droit de creer un ticket dans l'entité courante ?
avec vous des champs obligatoires qui ne sont pas dans les paramètres du json ?
Après plusieurs tests, nous avons réussi à récupéré ce que return le cURL,
Sur le glpi de prod : " Objet déplacé
Ce document peut être consulté ici "
Sur un glpi de test : " Objet déplacé
Ce document peut être consulté ici{"id":51547,"message":"Élément ajouté : Ticket d'appel automatique"} "
Voici le code qui nous permet de crée le ticket :
//fonction qui permet de créer un ticket sur glpi via le restapi
function creationTicket(){
global $ini;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Session-Token: '.getSessionToken(),
'App-token: '.$ini['app_token'])
);
curl_setopt($ch, CURLOPT_URL, $ini['urlAPI']."/ticket/");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"input": {
"name": "'.$ini['title'].'",
"content": "'.$ini['desc'].'",
"requesttypes_id": "3",
"actiontime": "0",
"itilcategories_id": "1",
"type": "1",
"status": "1"
}}'
);
$res = curl_exec($ch));
echo 'avant res';
echo $res;
echo 'après res';
curl_close($ch);
//deleteTicketUsersID();
//creationTicketUser(getLastTicketID());
}
Une idée de pourquoi le ticket ne se crée pas ?
Offline
plutôt que un echo $res; essayez un
print_r($res)
d'autre part il y a une parenthèses en trop sur le $res = curl_exec($ch));
je vous propose pour le debug d'insérer ce code à partir de cotre cURLexec
attention aussi à la casse : Ticket <> ticket
$res = curl_exec($ch));
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "<br/>*** httpcode***<br/>";
print_r($httpcode);
echo "<br/>**********json**********<br/>";
print_r($res);
echo "<br/>********************<br/>";
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
plutôt que un echo $res; essayez un
print_r($res)
d'autre part il y a une parenthèses en trop sur le $res = curl_exec($ch));
je vous propose pour le debug d'insérer ce code à partir de cotre cURLexec
attention aussi à la casse : Ticket <> ticket
$res = curl_exec($ch));
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "<br/>*** httpcode***<br/>";
print_r($httpcode);
echo "<br/>**********json**********<br/>";
print_r($res);
echo "<br/>********************<br/>";
Merci pour votre réponse,
On va tester votre méthode tout à l'heure;
Pour le moment nous avons fait des logs/trace pour voir d'ou viendrait le problème pendant la phase de création du ticket et voici le résultat :
Sur notre glpi de test (ou ça fonctionne) :
[2020-06-24 12:17:52] apirest.php
[2020-06-24 12:17:53] apirest.class
[2020-06-24 12:17:53] api.class
[2020-06-24 12:17:53] apirest.class - call()
[2020-06-24 12:17:53] apirest.class - parseIncomingParams()
[2020-06-24 12:17:53] api.class - retrieveSession()
[2020-06-24 12:17:53] api.class - initApi()
[2020-06-24 12:17:53] api.class - initApi() // Load GLPI configuration
[2020-06-24 12:17:53] api.class - initApi() // construct api url
[2020-06-24 12:17:53] api.class - initApi() // check if api is enabled
[2020-06-24 12:17:53] api.class - initApi() // retrieve ip of client
[2020-06-24 12:17:53] api.class - initApi() // check ip access
[2020-06-24 12:17:53] api.class - initApi() // if $this->ipnum
[2020-06-24 12:17:53] api.class - initApi() // initApi() fin
[2020-06-24 12:17:53] apirest.class - manageUploadedFiles()
[2020-06-24 12:17:53] apirest.class - getItemtype()
[2020-06-24 12:17:53] ticket.class
[2020-06-24 12:17:53] apirest.class - getItemtype()
[2020-06-24 12:17:53] apirest.class - getId()
[2020-06-24 12:17:53] api.class - createItems()
[2020-06-24 12:17:53] api.class - checkAppToken()
[2020-06-24 12:17:53] api.class - checkSessionToken()
[2020-06-24 12:17:53] ticket.class - canCreateItem()
[2020-06-24 12:17:53] ticket.class - prepareInputForAdd()
[2020-06-24 12:17:53] ticket_ticket.class
[2020-06-24 12:17:53] ticket.class - post_addItem()
[2020-06-24 12:17:53] ticket_user.class
[2020-06-24 12:17:53] ticket_user.class - post_addItem()
[2020-06-24 12:17:53] ticket.class - updateDateMod()
[2020-06-24 12:17:54] ticket.class - manageValidationAdd()
[2020-06-24 12:17:54] ticket.class - getTicketTypeName()
[2020-06-24 12:17:54] ticket_ticket.class - getLinkedTicketsTo()
[2020-06-24 12:17:56] apirest.class - returnResponse()
Sur notre glpi de prod (ou ça ne fonctionne pas) :
[2020-06-23 18:48:56] apirest.php
[2020-06-23 18:48:56] apirest.class
[2020-06-23 18:48:56] api.class
[2020-06-23 18:48:56] apirest.class - call()
[2020-06-23 18:48:56] apirest.class - parseIncomingParams()
[2020-06-23 18:48:56] api.class - retrieveSession()
[2020-06-23 18:48:56] api.class - initApi()
[2020-06-23 18:48:56] api.class - initApi() // Load GLPI configuration
Et en regardant plus en profondeur, c'est cette ligne qui pose problème dans la fonction initApi() :
error_log('['.date('Y-m-d H:i:s')."] api.class - initApi() // Load GLPI configuration
", 3, DEBUG_LOG_FILE);
include_once (GLPI_ROOT . '/inc/includes.php'); // <-----------------------
error_log('['.date('Y-m-d H:i:s')."] api.class - initApi() // includeonce
", 3, DEBUG_LOG_FILE);
On a aussi mis des traces dans le fichier include.php, mais il n'est pas utilisé...
Last edited by iwizzwold (2020-06-24 15:30:32)
Offline
est ce que le fichier de log est défini et autorisé en écriture ?
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
est ce que le fichier de log est défini et autorisé en écriture ?
le fichier de log qu'on a crée est définit comme ça dans GLPI/apirest.php :
define('DEBUG_LOG_FILE', 'debug.log');
Offline
Pages: 1