expo-IP CMS Benutzerhandbuch

Für die Nutzung des expo-IP CMS benötigen Sie einen beliebigen aktuellen Browser, der fehlerfrei den aktuellen HTML5 Standard unterstützt. Hierzu zählt NICHT der Browser: Microsoft INTERNET EXPLORER.

Trackingdaten – Automatischer Abruf

Die erfassten Tracking-Daten werden 90 Tage lang gespeichert und pro Tag als eine Datei bereitgestellt. Die Tracking-Daten (pro Tag) werden im nachstehend beschriebenen JSON Format in eine Datei exportiert und die Datei gezippt. Messe-Veranstalter können diese Daten über eine API-Schnittstelle abrufen.

Abruf Liste der Export-Dateien

Der Abruf der Daten kann z.B. mit curl erfolgen. Die Authentifizierung erfolgt mit bereits vorhandenem API-Key.

Über die Route

https://xxxxxapi.expo-ip.com/tracking/export/filelist

kann eine Liste der vorhandenen Export-Dateien abgerufen werden. xxxxx steht dabei für den Messenamen (in Kleinbuchstaben).

Der Abruf ist nur einmal pro Minute möglich. Erfolgt der Abruf häufiger als einmal pro Minute, reagiert das System mit einer entsprechenden Meldung (ebenfalls JSON):

{"name":"Too Many Requests","message":"Rate limit exceeded.","code":0,"status":429}

Beispiel für den Abruf der Dateiliste mit curl:

curl -XGET -H "X-API-KEY: 01234567890123456789" -k https://xxxxapi.expo-ip.com/tracking/export/filelist

01234567890123456789 muss durch den API-Key der Messe ersetzt werden. xxxxx steht wieder für den Namen der Messe.

Das Ergebnis ist eine Liste von Dateien im JSON Format:

["tracking_xxxxx_20210702.zip"]

Der Datumsstempel im Dateinamen gibt den Tag des Trackings an.

Abruf einer einzelnen Export-Datei

Ist der Name der Export-Datei bekannt, kann die Datei wie folgt abgerufen werden:

curl -XGET -H "X-API-KEY: 01234567890123456789" -k https://xxxxxapi.expo-ip.com/tracking/export/file/tracking_xxxxx_20210702.zip > tracking_xxxxx_20210702.zip

Die Exportdateien enthalten die Datensätze im JSON Format:

[
    {
        "„created“":1625179345,
        "„fair_name“":"“testmesse“",
        "„user_id“":2,
        "„event“":"“ENTER“",
        "„object_type“":"“booth“",
        "„object_id“":1,
        "„note“":"““",
        "„object_ref“":{
            "„title“":"“entrance“"
        },
        "„user_ref“":{
            "„firstname“":"“Max“",
            "„lastname“":"“Mustermann“",
            "„email“":"“service@expo-ip.com“"
        }
    }
    ...
]

Exportierte Datensätze werden mit aufgelösten Referenzen bereitgestellt, d.h.

– zusätzlich zu einer Stand ID wird auch der Name des Stands eingefügt
– zusätzlich zu einer Benutzer ID die Stammdaten eines Benutzers

 

Beispiel Script

Dieses Beispiel Script für den Abruf der Tracking-Daten ruft die jüngste der zur Verfügung stehenden Dateien mit Trackingdaten vom expo-IP System ab und speichert die Datei lokal.

/*
Beispiel für das Abrufen der Tracking-Daten 
*/

// API Key hier einsetzen
$apiKey = '00000xxxx000xxxx0000';

// MESSENAME durch den tatsächlichen Namen der Messe ersetzen
$fairname = 'MESSENAME';

$strFilelistURL = 'https://' . $fairname . 'api.expo-ip.com/tracking/export/filelist';

$ch = curl_init($strFilelistURL);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false); // Header nicht im Rückgabewert einschließen
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-API-KEY: ' . $apiKey));
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_VERBOSE, '1');
curl_setopt($ch, CURLINFO_HEADER_OUT, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

if( ! $result = curl_exec($ch)) {
    die('Ein Fehler ist aufgetreten: ' . curl_error($ch));
}

// Weitere Daten zum Request:
// $err     = curl_errno( $ch );
// $errmsg  = curl_error( $ch );
// $header  = curl_getinfo( $ch );
        

// $result enthält Daten in einem der beiden Formate:
// ["tracking_testmesse_20210702.zip"]
// {"name":"Too Many Requests","message":"Rate limit exceeded.","code":0,"status":429}
// {"name":"Unauthorized","message":"Your request was made with invalid credentials.","code":0,"status":401}

if ($result) {
    $arrResult = json_decode($result, true);
    
    if (isset($arrResult['status'])) {
        // ein Fehler ist aufgetreten
        print 'Fehler ' . $arrResult['status'] . ': ' . 
            $arrResult['name'] . '
' . $arrResult['message'] . "\n";
        exit(1);
    }

    if (!is_array($arrResult)) {
        print 'Fehler: unerwartete Rückgabewerte';
        exit(1);
    }
    
    // die erste Datei in der Liste herunterladen
    $strFilename = $arrResult[0];
    $strFilelistURL = 'https://' . $fairname . 'api.expo-ip.com/tracking/export/file/' . $strFilename;

    $ch = curl_init($strFilelistURL);

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false); // Header nicht im Rückgabewert einschließen
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-API-KEY: ' . $apiKey));
    curl_setopt($ch, CURLOPT_HTTPGET, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, '1');
    curl_setopt($ch, CURLINFO_HEADER_OUT, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    if(!$result = curl_exec($ch)) {
        die('Ein Fehler ist aufgetreten: ' . curl_error($ch));
    }
    
    $bFileStored = file_put_contents($strFilename, $result);
    if (!$bFileStored) {
        print 'Fehler: Datei ' . $strFilename . ' konnte nicht gespeichert werden.';
    }
    else {
        print 'Trackingdaten wurden in ' . $strFilename . ' gespeichert.';
    }
    
}