Ein Webhook sendet eine HTTP-Anfrage an eine von Ihnen gewählte URL, sobald in Ihrem Salon etwas passiert, zum Beispiel wenn ein Termin erstellt oder ein Kunde aktualisiert wird. So halten Sie ein anderes System mit Softalon synchron.
Bevor Sie beginnen
- Ihr Salon nutzt den Tarif Ultimate.
- Sie haben die Rolle Super-Administrator oder Inhaber.
- Sie haben eine URL, die
POST-Anfragen mit JSON-Body annimmt und mithttps://oderhttp://beginnt.
Einen Webhook erstellen
- 1
Schritt 1 von 4
Webhooks öffnen
Gehen Sie zu Einstellungen › Entwickler › Webhooks und klicken Sie auf Webhook erstellen.
- 2
Schritt 2 von 4
Das Ziel eingeben
Geben Sie die Ziel-URL ein, zum Beispiel
https://example.com/webhook, und optional eine Beschreibung, damit Sie den Webhook später wiedererkennen. - 3
Schritt 3 von 4
Themen wählen
Wählen Sie unter Themen die gewünschten Ereignisse aus. Der Tab Alle Themen listet alle verfügbaren Themen auf, und Ausgewählte Themen zeigt Ihre Auswahl. Ihre URL erhält nur die Themen, die Sie auswählen.
- 4
Schritt 4 von 4
Speichern
Klicken Sie auf Webhook erstellen.
Das sehen Sie:Webhook erstellt, und der Webhook erscheint in der Tabelle mit aktiviertem Statusschalter.
Themen
Themen heißen resource.action. Diese sind verfügbar:
Was jeder Trigger bedeutet, erfahren Sie unter Trigger für Automatisierungen erklärt.
Was Softalon sendet
Jedes Ereignis ist eine POST-Anfrage mit einem JSON-Body:
{
"topic": "booking/appointment.created",
"event": {
"id": "...",
"type": "booking/appointment.created",
"resource": "booking/appointment",
"resourceId": "...",
"salonId": "...",
"data": {
"object": { "...": "the full object" },
"previousAttributes": { "...": "changed fields, for updates" }
}
}
}
Die Anfrage hat diese Header:
Die Signatur prüfen
Jeder Webhook hat ein Secret. Softalon signiert den Anfrage-Body damit per HMAC-SHA256 und sendet das Ergebnis in Hex-Darstellung in X-Webhook-Signature. Berechnen Sie denselben Wert aus dem unveränderten Anfrage-Body und vergleichen Sie. Stimmen die Werte nicht überein, ignorieren Sie die Anfrage.
const crypto = require("crypto");
function isValid(rawBody, header, secret) {
const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(header));
}
Zur Verwaltung des Secrets verwenden Sie die Schaltflächen in der Spalte Secret:
- Die Augen-Schaltfläche zeigt das vollständige Secret, die Kopieren-Schaltfläche kopiert es.
- Die Schaltfläche zum Neugenerieren erstellt sofort ein neues Secret. Das alte Secret funktioniert ab sofort nicht mehr. Aktualisieren Sie Ihr System daher gleichzeitig.
Zustellungen und Wiederholungen
- Ihre URL muss innerhalb von 10 Sekunden mit einem
2xx-Statuscode antworten. Alles andere gilt als Fehlschlag. - Eine fehlgeschlagene Zustellung wird wiederholt, insgesamt bis zu 5 Versuche. Die Wartezeiten zwischen den Versuchen werden länger: etwa 30 Sekunden, 1 Minute, 2 Minuten und 4 Minuten.
- Verwenden Sie
X-Webhook-Delivery-Id, um eine bereits verarbeitete Zustellung zu ignorieren.
Jede Zustellung hat einen dieser Status:
Die App zeigt noch kein Zustellungsprotokoll. Sie können Zustellungen über die API unter GET /v1/salons/:salonId/webhook-endpoints/:webhookEndpointId/deliveries abrufen. Siehe Eine API-App erstellen.
Sind die letzten 5 Zustellungen an einen Webhook alle erschöpft, schaltet Softalon den Webhook aus. Beheben Sie das Problem an Ihrem Endpunkt und schalten Sie den Statusschalter dann wieder ein. Ereignisse, die eintreten, während ein Webhook ausgeschaltet ist, werden nicht nachträglich gesendet.
Einen Webhook bearbeiten, pausieren oder löschen
- Pausieren: Schalten Sie den Schalter in der Spalte Status aus.
- Bearbeiten: Öffnen Sie das Menü der Zeile und wählen Sie Aktualisieren.
- Löschen: Öffnen Sie das Menü der Zeile und wählen Sie Löschen.
Webhooks senden nur, solange Ihr Salon ein aktives, in der Testphase befindliches oder überfälliges Abonnement mit einem Tarif hat, der Webhooks enthält.
Häufige Fragen
Jede Zustellung wird separat gesendet und nach ihrem eigenen Zeitplan wiederholt. Verlassen Sie sich daher nicht auf die Reihenfolge, in der Anfragen ankommen. Verwenden Sie stattdessen die Zeitstempel des Objekts.