$glpiUserToken] : ['login' => 'glpi', 'password' => 'glpi']; $ch = curl_init(rtrim($glpiUrl, '/') . '/initSession'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'App-Token: ' . $glpiAppToken, ], CURLOPT_POSTFIELDS => json_encode($initPayload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ]); $initResp = curl_exec($ch); if ($initResp === false) { die('initSession cURL error: ' . curl_error($ch)); } $initJson = json_decode($initResp, true); curl_close($ch); if (empty($initJson['session_token'])) { die("initSession failed:\n$initResp"); } $sessionToken = $initJson['session_token']; // 2) Update the ticket using POST $tuPayload = [ 'input' => [ 'tickets_id' => $ticketId, 'users_id' => $userId, 'type' => 2 // 1=requester, 2=assigned, 3=observer ] ]; $ch = curl_init(rtrim($glpiUrl, '/') . '/Ticket_User'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'App-Token: ' . $glpiAppToken, 'Session-Token: ' . $sessionToken, ], CURLOPT_POSTFIELDS => json_encode($tuPayload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ]); $tuResp = curl_exec($ch); $tuCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($tuResp === false) { die('Ticket_User add cURL error: ' . curl_error($ch)); } curl_close($ch); $rc=0;$done=1;$stdout="Ticket $ticketId assigned to $userId "; // 3) If Zabbix Ticket --> Call acknowledge WS $rs = Invoke_glpi("SELECT name, content FROM glpi_tickets WHERE id=$ticketId"); $ticketName = $rs[0]['name'] ?? ''; $ticketContent = $rs[0]['content'] ?? ''; if (preg_match('/eventid=(\d+)/', $ticketContent, $m)) { $eventId = $m[1]; $payload = json_encode(['eventId' => $eventId]); // Detect Zabbix source if (str_contains($ticketName, 'ZABBIX OT |')) { // Zabbix OT Case postJson("$BaseUrl/Zabbix/Acknowledge-OT-Event.php", $payload); $stdout .= "| Zabbix OT Acknowledged (Event $eventId)"; } elseif (str_contains($ticketName, 'ZABBIX IT |')) { // Zabbix IT Case postJson("$BaseUrl/Zabbix/Acknowledge-IT-Event.php", $payload); $stdout .= "| Zabbix IT Acknowledged (Event $eventId)"; } } //Answer $response = [ "RC" => $rc, "stdout" => $stdout, ]; header('Content-Type: application/json; charset=utf-8'); echo json_encode($response, JSON_UNESCAPED_UNICODE); // Log to dedicated Table log2DB(); ?>