Szenario

In manchen Fällen ist es notwendig, dass bestimmte Tickets und die dazugehörigen Konversationen in einem weiteren Ticketsystem verfügbar sind. So kann beispielsweise eine Antwort eines Kunden auf eine Anfrage aus dem Ticket auch im parallel laufenden System angezeigt werden. Dies kann durch den Einsatz eines Webhooks ermöglicht werden.

Lösungsmöglichkeit

Um sicherzustellen, dass neue Konversationen in beiden Systemen synchronisiert werden, kann ein Webhook implementiert werden. Unter Einstellungen -> Kommunikationskanäle -> E-Mail Konten muss dazu das entsprechende E-Mail Konto ausgewählt werden. Falls die Webhooks an diesem Konto noch nicht aktiv sind, muss der Switch Webhooks aktiviert werden, damit die Felder zur Konfiguration des Webhooks “Neue E-Mail” erscheinen.

Beispiel für den kundenspezifischen Code

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

Der folgende PHP-Code nutzt das Enneo SDK, um Informationen von einem Ticket-System abzurufen und diese an ein drittes System zu übermitteln.

<?php

use EnneoSDK\ApiEnneo;

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

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

// get agent profile
$agent = ApiEnneo::get('/api/mind/profile/' . $in->userId)->profile;

// get ticket details
$ticket = ApiEnneo::get('/api/mind/ticket/'. $in->ticketId .'?includeRawData=true');

// get conversations
$conversationData = ApiEnneo::get('/api/mind/ticket/' . $in->ticketId  . '/conversation?includeRawData=true');

// find current conversation
$conversation = null;
foreach ($conversationData->conversations as $c) {
    if ($c->id === $in->conversationId) {
        $conversation = $c;
        break;
    }
}

// prepare payload
$payload = [
    "ticketId" => $ticket->externalTicketId,
    "enneoId" => $ticket->id,
    "agent" => $agent,
    "conversationContent" => $conversation->bodyPlain
];

// send data to third-party-system using predefined custom code
$result = ApiEnneo::executeUdf(
    name: 'send-to-third-party',
    parameters: ['method' => 'POST', 'api' => 'redirect', 'params' => $payload]
);

echo json_encode($result);

In diesem Beispiel wird mithilfe des Enneo SDK zunächst das Nutzerprofil geladen. Anschließend werden erweiterte Daten zum Ticket sowie die Konversationen geladen. Am Ende des Codeausschnitts werden die Daten der aktuellen Konversation an das externe Ticketsystem übertragen. Hierbei wird eine Funktion send-to-third-party verwendet, die zuvor als “User defined Function” hinterlegt werden muss.