Produto

Canais e integrações

O cliente escreve onde quiser, o agente responde de uma única tela. O canal de origem é mantido para que a resposta retorne pelo mesmo caminho.

E-mail em primeiro lugar

É o canal que representa a maior parte do volume, portanto, é o que mais cuidamos: análise limpa, gerenciamento de bounces, DKIM em seus envios.

Chat e WhatsApp

O chat do widget cria um ticket assim que ninguém está disponível. O WhatsApp Business usa um número que você fornece.

API para o resto

Tudo o que a interface faz é acessível via REST: tickets, mensagens, contatos, artigos, regras, exportações.

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

Canais conectados e log de entrega de webhooks.

Detalhe das funcionalidades

Uma API que faz tudo

Tudo o que a interface faz está acessível sob /api/v1: respostas JSON, paginação por cursor, 600 pedidos por minuto — o suficiente para construir sem pedir autorização.

Chaves que só abrem o necessário

Tokens pessoais ou chaves de serviço, com âmbitos de leitura e escrita por recurso: a sua integração só tem os direitos que merece.

Webhooks em que se pode confiar

Assinatura HMAC SHA-256, cinco novas tentativas com backoff, registo de entregas de 7 dias: o seu sistema sabe sempre o que lhe foi enviado.

Onde a sua equipa conversa

Notificações Slack e Teams por vista ou por equipa, e resposta diretamente a partir do fio nos planos Equipa e superiores.

Os seus dados entram e saem livremente

Migramos o seu histórico do Zendesk com os seus números e as suas datas. E como o núcleo está sob AGPL-3.0, pode instalá-lo em sua casa e aceder diretamente à base de dados.

Cada chamada deixa rasto

Todas as chamadas à API aparecem no registo de auditoria com a chave utilizada: quem fez o quê nunca é um mistério.

Verificar a assinatura de um 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));
}