Продукт

Канали и интеграции

Клиентът пише където иска, агентът отговаря от един екран. Оригиналният канал се запазва, така че отговорът да тръгне по същия път.

Имейл на първо място

Това е каналът, който носи по-голямата част от обема, затова ние се грижим най-много за него: чисто парсиране, управление на откази, DKIM на вашите изпращания.

Чат и WhatsApp

Чатът на уиджета създава тикет веднага щом никой не е на разположение. WhatsApp Business преминава през номер, който предоставяте.

API за останалото

Всичко, което прави интерфейсът, е достъпно в REST: тикети, съобщения, контакти, статии, правила, експорти.

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

Свързани канали и дневник на доставките на уебкукове.

Подробности за функциите

API, което прави всичко

Всичко, което прави интерфейсът, е достъпно под /api/v1: JSON отговори, странициране с курсор, 600 заявки в минута — достатъчно да строите, без да искате разрешение.

Ключове, които отварят само необходимото

Лични токени или сервизни ключове, с обхвати за четене и запис по ресурс: интеграцията ви има само правата, които заслужава.

Webhooks, на които може да се разчита

Подпис HMAC SHA-256, пет нови опита с backoff, журнал на доставките за 7 дни: системата ви винаги знае какво ѝ е било изпратено.

Там, където екипът ви разговаря

Известия в Slack и Teams по изглед или по екип, и отговор направо от нишката в плановете Team и нагоре.

Данните ви влизат и излизат свободно

Прехвърляме историята ви от Zendesk с номерата и датите ѝ. А ядрото е под AGPL-3.0, така че можете да го инсталирате при себе си и да достъпвате базата данни директно.

Всяко извикване оставя следа

Всички API извиквания се появяват в одитния журнал с използвания ключ: кой какво е направил никога не е загадка.

Проверка на подписа на уебкука

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