Frequently Asked Question

Wie kann ich die API nutzen?

Last Updated 3 years ago

Über die API lassen sich bisher nur neue Tickets anlegen. (V1.15.2)

Was Sie zur Nutzung der API benötigen:

  • die IP-Adresse des Servers, auf dem die API-Schnittstelle läuft (i.d.R. der Server auf dem osTicket läuft)
  • einen in osTicket eingerichteten API-Schlüssel
  • auf der Seite muss PHP-Code ausführbar sein

Das müssen Sie auf Ihrer Seite einfügen, damit ein neues Ticket in osTicket über die API angelegt werden kann:

Zuerst benötigen wir die Daten zum Verbindungsaufbau:

$config = array(
'url'=>'/api/tickets.json',
'key'=>''
);

Hinweis:
Sollte die URL /api/tickets.json nicht funktionieren, testen Sie bitte die URL /api/http.php/tickets.json.

Als nächstes benötigen wir die Daten die übermittelt werden sollen:


$data = array(
'name' => 'der Name des Kunden',
'email' => 'die eMail des Kunden',
'phone' => 'die Telefonnummer des Kunden',
'subject' => 'der Betreff des Tickets',
'message' => 'die Nachricht des Tickets',
.....
);


folgende Felder können ebenfalls übergeben werden und in dem obigen Array integriert werden....

'ip' => $_SERVER['REMOTE_ADDR'], // Die IP-Adresse des absendenden Servers
'alert' => true, // soll der Mitarbeiter benachrichtigt werden? - mögl. Werte: true oder false
'autorespond' => true, //Sollen automatische Antworten versendet werden? - Werte: true oder false
'priority' => 2, //Prioritäts-ID 1-4
'source' => 'API', //Herkunft des Tickets, falls nicht angegeben standardmäßig: API
'topicId' => 'Hilfethemen-ID', // die ID des Hilfethemas, mit dem das Ticket verknüpft werden soll
'notes' => 'interne Notizen', // interne Notizen zum Ticket
'attachments' => array(), // Array mit Dateien als Dateianhang


wenn eigene Formular-Felder übermittelt werden sollen....

das ist ebenfalls möglich. Dazu benötigen wir den Wert, der als Platzhalter für das betreffende Feld angegeben wurde.
(Der Platzhalter ist in osTicket in der Zeile des eigenen Feldes ganz rechts zu finden.)
angegeben werden kann das eigene Feld dann wie folgt:

'platzhalter' => 'Wert für das Feld',

Nun können wir die Daten wie folgt versenden:

prüfen, ob die benötigten Funktionen verfügbar sind und somit ein versenden möglich ist...

#pre-checks
function_exists('curl_version') or die('CURL-Unterstützung erforderlich');
function_exists('json_encode') or die('JSON-Unterstützung erforderlich');


timeout setzen, damit das Skript im Problemfall nicht ewig läuft:

#set timeout
set_time_limit(30);


und nun gehts an das versenden...

#curl post
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $config['url']);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_USERAGENT, 'osTicket API Client v1.8');
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Expect:', 'X-API-Key: '.$config['key']));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result=curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);


und nun zum überprüfen, ob es funktioniert hat:

if ($code != 201)
die('Ticket konnte nicht erstellt werden: '.$result);


zur Erklärung: Wenn der HTTP-Code nicht 201 ist, also 'OK', brich mit der Fehlermedung ab....

Wenn die Übermittlung erfolgreich war, kann nun mit der Variablen $result die neu generierte Ticket-ID ausgegeben werden...

Zum leichteren Verständins ist ein Beispielskript dieser Hilfeseite angehängt.

Eine Übersicht der verfügbaren Felder gibt es auch auf der Github-Seite von osTicket:
https://github.com/osTicket/osTicket/blob/develop/setup/doc/api/tickets.md

Please Wait!

Please wait... it will take a second!