Produkt

Kanały i integracje

Klient pisze, gdzie chce, agent odpowiada z jednego ekranu. Oryginalny kanał jest zachowany, aby odpowiedź wróciła tą samą drogą.

E-mail przede wszystkim

To kanał, który generuje większość ruchu, dlatego tak bardzo o niego dbamy: czysty parsing, zarządzanie odbiciami, DKIM dla Twoich wysyłek.

Czat i WhatsApp

Czat widżetu tworzy zgłoszenie, gdy nikt nie jest dostępny. WhatsApp Business działa przez podany przez Ciebie numer.

API dla reszty

Wszystko, co robi interfejs, jest dostępne przez REST: zgłoszenia, wiadomości, kontakty, artykuły, reguły, eksporty.

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

Połączone kanały i dziennik dostarczeń webhooków.

Szczegóły funkcji

API, które robi wszystko

Wszystko, co potrafi interfejs, jest dostępne pod /api/v1: odpowiedzi JSON, paginacja kursorem, 600 zapytań na minutę — dość, by budować bez proszenia o pozwolenie.

Klucze, które otwierają tylko to, co trzeba

Tokeny osobiste albo klucze serwisowe, z zakresami odczytu i zapisu per zasób: Twoja integracja ma tylko te uprawnienia, na które zasłużyła.

Webhooki, na których można polegać

Podpis HMAC SHA-256, pięć ponowień z backoffem, dziennik dostarczeń z 7 dni: Twój system zawsze wie, co do niego wysłano.

Tam, gdzie rozmawia Twój zespół

Powiadomienia Slack i Teams per widok albo per zespół, a odpowiadanie prosto z wątku w planie Zespół i wyższych.

Twoje dane wchodzą i wychodzą swobodnie

Przenosimy twoją historię z Zendesk z jej numerami i datami. A ponieważ rdzeń jest na licencji AGPL-3.0, możesz zainstalować go u siebie i sięgnąć wprost do bazy.

Każde wywołanie zostawia ślad

Wszystkie wywołania API trafiają do dziennika audytu razem z użytym kluczem: kto co zrobił, nigdy nie jest zagadką.

Weryfikacja podpisu webhooka

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