Produkt

Kanaler och integrationer

Kunden skriver var de vill, agenten svarar från en enda skärm. Den ursprungliga kanalen behålls så att svaret skickas tillbaka på samma sätt.

E-post först

Det är kanalen som står för den största volymen, så det är den vi vårdar mest: ren parsning, hantering av returer, DKIM på dina utskick.

Chatt och WhatsApp

Chatten i widgeten skapar ett ärende så snart ingen är tillgänglig. WhatsApp Business använder ett nummer du tillhandahåller.

API för resten

Allt gränssnittet gör är tillgängligt via REST: ärenden, meddelanden, kontakter, artiklar, regler, exporter.

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

Anslutna kanaler och leveranslogg för webhooks.

Funktioner i detalj

Ett API som gör allt

Allt som gränssnittet gör finns under /api/v1: JSON-svar, cursorpaginering, 600 anrop per minut — nog för att bygga utan att be om lov.

Nycklar som bara öppnar det nödvändiga

Personliga tokens eller tjänstenycklar, med läs- och skrivbehörigheter per resurs: din integration får bara de rättigheter den behöver.

Webhooks att lita på

HMAC SHA-256-signatur, fem nya försök med backoff, leveranslogg i 7 dagar: ditt system vet alltid vad som skickats till det.

Där ditt team redan pratar

Slack- och Teams-notiser per vy eller team, och svar direkt från tråden på Team-planen och uppåt.

Din data rör sig fritt in och ut

Vi flyttar din Zendesk-historik med dess nummer och dess datum. Och eftersom kärnan står under AGPL-3.0 kan du installera den hos dig själv och komma åt databasen direkt.

Varje anrop lämnar spår

Alla API-anrop syns i granskningsloggen med nyckeln som användes: vem som gjorde vad är aldrig ett mysterium.

Verifiera signaturen för 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));
}