Webhooks-Integration mit TSplus Remote Support
Übersicht
Webhooks ermöglichen es Ihnen, TSplus Remote Support mit Ihren eigenen Systemen (Ticketing, CRM, SIEM, internen Tools) zu verbinden. Wenn ein Ereignis in Ihrem Abonnement eintritt, sendet Remote Support eine HTTP
POST
Anfrage — die eine JSON-Nutzlast beschreibt, die das Ereignis an eine URL sendet, die Sie kontrollieren.
Jede Anfrage ist kryptografisch signiert damit Ihr Server überprüfen kann, dass es tatsächlich von Remote Support stammt und nicht manipuliert wurde.
Typische Anwendungsfälle:
- Automatisch ein Ticket erstellen oder aktualisieren, wenn eine Support-Sitzung endet.
- Archivieren Sie die Chatprotokolle der Sitzung in Ihrem eigenen Speicher.
- Interne Benachrichtigungen oder Automatisierungs-Workflows auslösen.
Voraussetzungen
Um Webhooks zu konfigurieren, stellen Sie sicher, dass Sie Folgendes haben:
- Ein Abonnement Administrator Konto.
-
Ein öffentlich erreichbarer
HTTPS
Endpunkt, der empfangen kann
POSTAnfragen. - Die Fähigkeit, HTTP-Anforderungsheader und den Rohanforderungstext auf Ihrem Server zu lesen (erforderlich, um die Signatur zu überprüfen).
Webhook konfigurieren
-
Öffnen Sie die TSplus Remote Support Admin-Konsole.
-
Im linken Menü erweitern Integration und klicken Webhooks .
-
Klicken Webhook hinzufügen .
-
Füllen Sie das Formular aus:
- URL — der HTTPS-Endpunkt, der die Ereignisse empfangen wird.
- Beschreibung (optional) — ein Label, um Ihnen zu helfen, diesen Endpunkt zu identifizieren.
- Veranstaltungen — Wählen Sie mindestens einen Ereignistyp aus, um sich anzumelden.
-
Klicken Speichern .
-
A geheim wird generiert und angezeigt einmal Kopieren Sie es jetzt und speichern Sie es sicher — es wird verwendet, um die Signatur eingehender Anfragen zu überprüfen und wird nicht erneut angezeigt.
Sicherheit: Zu Ihrem Schutz wird die URL validiert, wenn Sie sie speichern. Endpunkte, die auf
localhostoder private/interne IP-Adressen werden abgelehnt.
Verwalten Ihrer Webhooks
Aus der Liste der Webhooks können Sie:
- Senden Sie ein Testereignis (flask icon) — stellt eine Beispielübermittlung in die Warteschlange, damit Sie bestätigen können, dass Ihr Endpunkt Anfragen empfängt und akzeptiert.
- Bearbeiten (Bleistiftsymbol) — Ändern Sie die URL, Beschreibung, abonnierten Ereignisse oder aktivieren/deaktivieren Sie den Endpunkt.
- Löschen ( Papierkorb-Symbol ) — Endpunkt dauerhaft entfernen.
Jedes Endgerät zeigt ein Status :
- Aktiv — der Endpunkt ist aktiviert und empfängt Ereignisse.
- Deaktiviert — der Endpunkt wurde manuell deaktiviert.
- Automatisch deaktiviert — Remote Support hat den Endpunkt nach dem automatischen Deaktivieren deaktiviert 10 aufeinanderfolgende fehlgeschlagene Lieferungen Fixen Sie den Endpunkt und aktivieren Sie ihn erneut über das Bearbeitungsformular.
Payload-Format
Jedes Ereignis wird als ein geliefert
POST
Anfrage mit einem JSON-Body und den folgenden Headern:
| Kopfzeile | Beschreibung |
|---|---|
Inhaltstyp
|
application/json
|
X-Webhook-Signatur
|
HMAC-SHA256-Signatur des Rohkörpers, vorangestellt mit
sha256=
|
X-Webhook-Id
|
Eindeutiger Ereignisbezeichner (verwenden Sie ihn für Idempotenz auf Ihrer Seite) |
X-Webhook-Zeitstempel
|
ISO 8601-Zeitstempel der Lieferung |
Benutzer-Agent
|
RemoteSupport-Webhook/1.0
|
Alle Ereignisse teilen sich eine gemeinsame Hülle. Nur der Inhalt von
Daten
Änderungen abhängig von der Ereignisart:
{ "id": "evt_abc123def456", "type": "session.ended", "created_at": "2026-07-10T15:00:00Z", "subscription_key": "XXXX-XXXX-XXXX", "data": { }}
Sitzung.beendet
Gesendet, wenn eine Support-Sitzung endet (alle Teilnehmer getrennt). Die Nutzlast enthält das vollständige Chatprotokoll, das während der Sitzung gesammelt wurde.
{ "id": "evt_xyz789ghi012", "type": "session.ended", "created_at": "2026-07-10T15:00:00Z", "subscription_key": "XXXX-XXXX-XXXX", "data": { "remote_support_id": "ABC123", "computer_name": "Front-desk PC", "started_at": "2026-07-10T14:30:00Z", "ended_at": "2026-07-10T15:00:00Z", "duration_seconds": 1800, "is_abnormal_closure": false, "chat_transcript": [ { "timestamp": "2026-07-10T14:31:00Z", "sender": "agent", "user_id": 42, "message": "Hello, how can I help you?" }, { "timestamp": "2026-07-10T14:31:30Z", "sender": "client", "message": "My screen is black" } ] }}
ist_abnormale_schließungistwahrnur wenn eine Sitzung von der Plattform nach einem unerwarteten Relay-Neustart geschlossen wird. In diesem Fall wird dieChat-Protokollist leer.
Die Signatur überprüfen
Ihr Endpunkt sollte immer die Signatur überprüfen, bevor er einer Anfrage vertraut. Jeder, der Ihre URL kennt, könnte sonst gefälschte Ereignisse senden; ohne das Geheimnis können sie keine gültige Signatur erzeugen.
Um eine Anfrage zu überprüfen:
- Lies die roher Anfragekörper (die genauen empfangenen Bytes — das JSON nicht erneut serialisieren).
-
Berechnen
HMAC-SHA256(rawBody, yourSecret)und hex-kodieren Sie es. -
Prefix es mit
sha256=und vergleichen Sie es mit demX-Webhook-SignaturHeader, der einen Vergleich in konstanter Zeit verwendet.
Node.js
const crypto = require('crypto');
function verifyWebhook(rawBody, signatureHeader, secret) { const expected = 'sha256=' + crypto .createHmac('sha256', secret) .update(rawBody, 'utf8') .digest('hex');
const a = Buffer.from(expected); const b = Buffer.from(signatureHeader || ''); return a.length === b.length && crypto.timingSafeEqual(a, b);}
Python
import hmacimport hashlib
def verify_webhook(raw_body: bytes, signature_header: str, secret: str) -> bool: expected = "sha256=" + hmac.new( secret.encode("utf-8"), raw_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(expected, signature_header or "")
Lieferung und Wiederholungen
- Ihr Endpunkt sollte mit einem antworten 2xx Statuscode so schnell wie möglich. Die Anfrage nach 10 Sekunden abgelaufen .
- Wenn eine Lieferung fehlschlägt, versucht der Remote Support es mit einem exponentiellen Backoff-Zeitplan erneut: 10s, 30s, 1min, 5min, 15min, 1h, 4h, 24h (maximal 8 Versuche über 24 Stunden).
-
Wiederholungen treten bei Verbindungsfehlern auf, HTTP
429und5xxAntworten. Andere4xxAntworten werden als dauerhafte Fehler behandelt und sind nicht wiederholt. - Nach 10 aufeinanderfolgende fehlgeschlagene Lieferungen , der Endpunkt ist automatisch deaktiviert .
Um zu vermeiden, dass dasselbe Ereignis zweimal verarbeitet wird (zum Beispiel nach einem erneuten Versuch), verwenden Sie die
X-Webhook-Id
header (oder die
id
Feld im Payload als Idempotenzschlüssel.
Verfügbare Ereignisse
| Veranstaltung | Beschreibung |
|---|---|
Sitzung.beendet
|
Eine Support-Sitzung ist beendet. Enthält Dauer und das vollständige Chat-Protokoll. |
In zukünftigen Versionen werden weitere Ereignistypen hinzugefügt.