Produkt

Kanaler og integrasjoner

Kunden skriver der han vil, agenten svarer fra én enkelt skjerm. Den opprinnelige kanalen beholdes slik at svaret sendes tilbake samme vei.

E-post først

Dette er kanalen som bærer mesteparten av volumet, så den vi behandler mest nøye: ren parsing, håndtering av returer, DKIM på dine utsendelser.

Chat og WhatsApp

Widgetens chat oppretter en ticket så snart ingen er tilgjengelig. WhatsApp Business går via et nummer du oppgir.

API for resten

Alt grensesnittet gjør, er tilgjengelig via REST: tickets, meldinger, kontakter, artikler, regler, eksporter.

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

Tilkoblede kanaler og webhook-leveringslogg.

Funksjoner i detalj

Et API som gjør alt

Alt grensesnittet gjør, er tilgjengelig under /api/v1: JSON-svar, cursorpaginering, 600 kall i minuttet — nok til å bygge uten å spørre om lov.

Nøkler som bare åpner det nødvendige

Personlige tokens eller tjenestenøkler, med lese- og skrivetilganger per ressurs: integrasjonen din får bare rettighetene den trenger.

Webhooks du kan stole på

HMAC SHA-256-signatur, fem nye forsøk med backoff, leveringslogg i 7 dager: systemet ditt vet alltid hva som er sendt til det.

Der teamet ditt allerede prater

Slack- og Teams-varsler per visning eller team, og svar rett fra tråden på Team-planen og oppover.

Dataene dine kommer og går fritt

Vi flytter Zendesk-historikken din med numrene og datoene sine. Og siden kjernen er under AGPL-3.0, kan du installere den hos deg selv og få tilgang til databasen direkte.

Hvert kall etterlater et spor

Alle API-kall vises i revisjonsloggen med nøkkelen som ble brukt: hvem som gjorde hva, er aldri et mysterium.

Verifiser signaturen til en webhook

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));
}