Szenario

Angenommen, es existiert ein Reporting-System, in dem die Statusangaben zu den Tickets aus Enneo dargestellt werden sollen. Das Drittsystem verfügt über eine technische Schnittstelle (API), über die die Informationen zu den Tickets übermittelt werden können. Das Drittsystem benötigt als Eingabeparameter beim Aufruf der Schnittstelle den Absender des Tickets sowie den Status des Tickets.

Lösungsmöglichkeit

Jede Statusänderung eines Tickets triggert ein “TicketUpdated” Event. Um diesen Ablauf zu konfigurieren, gehe zu Einstellungen -> Integration in Umsysteme -> Events und erstelle einen neuen Event Hook, indem das “TicketUpdated” Event ausgewählt wird. Anschließend kann mit der Konfiguration begonnen werden.

Einsehen der Daten im Event

Die Daten, die im Event zur Verfügung gestellt werden, können an einem der Tickets eingesehen werden. Hier ein Beispiel der Daten:

{
  "userId": 123,
  "changes": {
    "status": "closed"
  },
  "ticketId": 456
}

In diesem Fall wurde das Ticket mit der ID 456 vom User mit der ID 123 geschlossen.

Beispiel für den kundenspezifischen Code

Falls die im Event zur Verfügung stehenden Daten nicht ausreichen, können im kundenspezifischen Code weitere Daten mit Hilfe der Enneo SDK nachgeladen werden.

Konfigurierte Eingabeparameter werden von Enneo geladen und stehen in der Input-Variable zur Verfügung. Als Output wird ein valides JSON_objekt erwartet, welches nach der Ausführung in den technischen Details des Aktivitätsprotokolls am Ticket angezeigt wird.

In diesem Code-Beispiel wird zur besseren Übersichtlichkeit bewusst auf das Fehlerhandling verzichtet.

<?php

use EnneoSDK\Api;
use EnneoSDK\ApiEnneo;

require(getenv()['SDK'] ?? 'sdk.php');

/** @var stdClass $in - enthält alle definierten Eingabeparameter aus dem Event */

// Nachladen der notwendigen Daten aus enneo
$ticket = ApiEnneo::getTicket($in['ticketId']);
$sender = $ticket->sender;

// Aufruf des Drittsystems mit erforderlichen Parametern
$result = Api::call(
    method: 'POST',
    url: 'https://third-party-system/api/ticket-status-update',
    headers: [
        'x-api-key: tokenExampleHere',
        'Accept: application/json'
    ],
    params: [
        'ticketSender' => $sender,
        'ticketStatus' => $in['status']
    ]
);

echo json_encode($result);