Produkt

Kanäle und Integrationen

Der Kunde schreibt, wo er will, der Agent antwortet von einem einzigen Bildschirm aus. Der ursprüngliche Kanal bleibt erhalten, damit die Antwort auf dem gleichen Weg zurückgeht.

E-Mail zuerst

Dies ist der Kanal, der den Großteil des Volumens trägt, also der, den wir am meisten pflegen: sauberes Parsing, Bounce-Management, DKIM für Ihre Sendungen.

Chat und WhatsApp

Der Chat des Widgets erstellt ein Ticket, sobald niemand verfügbar ist. WhatsApp Business läuft über eine von Ihnen bereitgestellte Nummer.

API für den Rest

Alles, was die Oberfläche leistet, ist über REST zugänglich: Tickets, Nachrichten, Kontakte, Artikel, Regeln, Exporte.

acme.open-helpdesk.com/app/settings/channels
Emailsupport@acme.fr · MX vérifié412 ce mois
Chatwidget web · 14 ko97 ce mois
WhatsApp+33 6 12 ** ** **58 ce mois
APIclé srv_live_… · lecture/écriture1 903 appels

POST /webhooks/acme · ticket.created

200 · 84 ms · signature vérifiée

200 · 91 ms · signature vérifiée

502 · nouvelle tentative dans 30 s

Verbundene Kanäle und Lieferprotokoll der Webhooks.

Im Detail

Verfügbare Schnittstellen

REST API
Version unter /api/v1, JSON-Antworten, Paginierung per Cursor, 600 Anfragen pro Minute.
Authentifizierung
Persönliche Token oder Dienstschlüssel, mit Lese- und Schreibberechtigungen pro Ressource.
Webhooks
HMAC SHA-256-Signatur, 5 Wiederholungsversuche mit Backoff, Lieferprotokoll für 7 Tage.
Slack und Teams
Benachrichtigung pro Ansicht oder pro Team, Antwort aus dem Thread bei Team- und höheren Angeboten.
Import
Zendesk, Freshdesk, Front und CSV, mit Abgleich von benutzerdefinierten Feldern.
Export
CSV und NDJSON auf Anfrage, plus schreibgeschützter SQL-Zugriff im Enterprise-Angebot.
Protokollierung
Jeder API-Aufruf erscheint im Audit-Log mit dem verwendeten Schlüssel.

Signatur eines Webhooks überprüfen

import { createHmac, timingSafeEqual } from "node:crypto";

export function verify(raw: string, header: string, secret: string) {
  const expected = createHmac("sha256", secret).update(raw).digest("hex");
  return timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}