Ormio Hilfe

Hilfe › Ormio Support › OrmioSupport

OrmioSupport: Webhooks

Ereignisse an Zapier, Make, n8n, Slack oder dein eigenes Skript melden (Pro).

Was Webhooks tun

Mit einem Webhook ruft OrmioSupport eine Adresse deiner Wahl auf, wenn mit einem Ticket etwas passiert. Damit hängst du Zapier, Make, n8n, eine Slack-Brücke oder ein eigenes Skript an, etwa: Nachricht in Slack bei einem überfälligen Ticket, Eintrag in eine Tabelle bei einem neuen Ticket, ein KlickTipp-Tag bei 5 Sternen. Webhooks gehören zu Pro.

Einrichten

OrmioSupport → Einstellungen → Webhooks → Einen Webhook hinzufügen: Name, Adresse (https://…), die Ereignisse und auf Wunsch ein Projekt. Das Geheimnis erscheint nach dem Hinzufügen einmal. „Test senden“ schickt einen Ping, das Ergebnis steht in der Spalte „Letzter Aufruf“.

Die Ereignisse

  • ticket.created: ein Ticket wurde angelegt
  • message.customer: der Kunde hat geschrieben
  • message.agent: ein Mitarbeiter hat geantwortet (interne Notizen werden nie gesendet)
  • ticket.status_changed: der Status hat sich geändert
  • ticket.assigned: ein Ticket wurde zugewiesen
  • rating.received: ein Kunde hat bewertet
  • sla.overdue: eine Antwort ist überfällig

Die Nachricht

Ein POST mit JSON: event, delivered_at, ticket (Nummer, Betreff, Status, Priorität, Projekt, Abteilung, Zuständiger, Kunde mit Name und E-Mail, Tags, Link) und extra (je nach Ereignis, zum Beispiel ein Textauszug oder der neue Status). Die Header sind X-OrmioSupport-Event, X-OrmioSupport-Delivery und X-OrmioSupport-Signature.

Die Signatur prüfen

Der Header hat die Form t=<Unix-Zeit>,v1=<Signatur>. Die Signatur ist HMAC-SHA256(Geheimnis, "<Unix-Zeit>.<Inhalt>") als Hex-Text. Prüfe sie, bevor du dem Aufruf traust, und lehne zu alte Zeiten ab (zum Beispiel älter als 5 Minuten):

$header = $_SERVER['HTTP_X_ORMIOSUPPORT_SIGNATURE'];
preg_match('/t=(\d+),v1=([a-f0-9]+)/', $header, $m);
$body = file_get_contents('php://input');
$expected = hash_hmac('sha256', $m[1] . '.' . $body, $secret);
$ok = hash_equals($expected, $m[2]) && abs(time() - (int) $m[1]) < 300;

Wenn die Gegenseite nicht antwortet

Antwortet die Adresse nicht mit einem Erfolgscode (2xx), wird der Aufruf nach 1, 4, 9 und 16 Minuten wiederholt. Gibt die Gegenseite danach nicht auf, steht der Aufruf unter den fehlgeschlagenen Aufgaben im Dashboard. Die Adresse muss mit https:// beginnen und von außen erreichbar sein; Adressen im Netzwerk deines Servers werden nicht aufgerufen.