Producto

Canales e integraciones

El cliente escribe donde quiere, el agente responde desde una sola pantalla. El canal de origen se mantiene para que la respuesta regrese por el mismo camino.

Correo electrónico primero

Es el canal que soporta la mayor parte del volumen, por lo que es el que más cuidamos: análisis limpio, gestión de rebotes, DKIM en sus envíos.

Chat y WhatsApp

El chat del widget crea un ticket tan pronto como nadie está disponible. WhatsApp Business pasa por un número que usted proporciona.

API para el resto

Todo lo que hace la interfaz es accesible por REST: tickets, mensajes, contactos, artículos, reglas, exportaciones.

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

Canales conectados y registro de entrega de webhooks.

En detalle

Interfaces disponibles

API REST
Versionada bajo /api/v1, respuestas JSON, paginación por cursor, 600 solicitudes por minuto.
Autenticación
Tokens personales o claves de servicio, con alcances de lectura y escritura por recurso.
Webhooks
Firma HMAC SHA-256, reintentos 5 veces en backoff, registro de entregas de 7 días.
Slack y Teams
Notificación por vista o por equipo, respuesta desde el hilo en las ofertas Equipo y superiores.
Importar
Zendesk, Freshdesk, Front y CSV, con correspondencia de campos personalizados.
Exportar
CSV y NDJSON bajo demanda, además de acceso SQL de solo lectura en la oferta Empresa.
Registro
Cada llamada a la API aparece en el registro de auditoría con la clave utilizada.

Verificar la firma de un 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));
}