Produs

Canale și integrări

Clientul scrie unde vrea, agentul răspunde dintr-un singur ecran. Canalul original este păstrat, astfel încât răspunsul să plece pe aceeași cale.

Emailul pe primul loc

Este canalul care poartă cea mai mare parte a volumului, deci cel de care ne ocupăm cel mai mult: parsare curată, gestionarea respingerilor, DKIM pe trimiterile dumneavoastră.

Chat și WhatsApp

Chat-ul widget-ului creează un bilet de îndată ce nimeni nu este disponibil. WhatsApp Business trece printr-un număr pe care îl furnizați.

API pentru restul

Tot ceea ce face interfața este accesibil prin REST: bilete, mesaje, contacte, articole, reguli, exporturi.

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

Canale conectate și jurnal de livrare a webhook-urilor.

În detaliu

Interfețe disponibile

API REST
Versionat sub /api/v1, răspunsuri JSON, paginare prin cursor, 600 de cereri pe minut.
Autentificare
Token-uri personale sau chei de serviciu, cu permisiuni de citire și scriere per resursă.
Webhooks
Semnătură HMAC SHA-256, reîncercare de 5 ori cu backoff, jurnal de livrări pe 7 zile.
Slack și Teams
Notificare pe vizualizare sau pe echipă, răspuns din fir pe ofertele Echipă și superioare.
Import
Zendesk, Freshdesk, Front și CSV, cu potrivire a câmpurilor personalizate.
Export
CSV și NDJSON la cerere, plus acces SQL în mod citire-doar pe oferta Enterprise.
Jurnalizare
Fiecare apel API apare în jurnalul de audit cu cheia utilizată.

Verificarea semnăturii unui 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));
}