Integraciones

Lo que el agente recoge no sirve de nada atrapado aquí. Cada reserva, recado, contacto, cribado y paso a una persona puede enviarse a una dirección que usted elija, en el momento en que ocurre.

Una dirección, y no treinta conectores hechos — porque la conexión con su CRM, su agenda, su programa de facturación o el software que escribió su empresa la hacemos nosotros, desde cero, a medida de su sistema. No usamos servicios de automatización de terceros. Hable con nosotros para evaluar la conexión que necesita.

Disponible a partir del plan Pro.

Configurarlo

En los ajustes del agente, Envíalo a tus propias herramientas:

  1. Pegue la dirección de destino. Tiene que empezar por https://.
  2. Elija qué enviar — solo las reservas, por ejemplo.
  3. Pulse Enviar una prueba. Llega en segundos, con el mismo formato de un envío real.

La dirección se comprueba en el momento de guardarla. Si se rechaza, decimos por qué.

Qué recibe

Un POST con Content-Type: application/json:

{
  "event": "booking.created",
  "at": "2026-08-07T10:32:11.204Z",
  "data": {
    "id": "bk_7Kd2…",
    "kind": "booking",
    "channel": "voice",
    "contactName": "Ana Silva",
    "contactPhone": "+351910000000",
    "contactEmail": null,
    "scheduledFor": "2026-08-12T15:00:00.000Z",
    "notes": "Primera consulta."
  }
}

Los eventos posibles son booking.created, message.taken, lead.captured, screening.recorded, document.requested y handover.

Comprobar que viene realmente de nosotros

Su dirección es pública. Sin una comprobación, cualquiera que la descubra puede crear reservas falsas en su CRM.

Cada envío lleva tres cabeceras:

| Cabecera | Qué es | | --- | --- | | x-nexiagent-event | El evento, para enrutar sin leer el cuerpo. | | x-nexiagent-timestamp | Segundos desde 1970, incluidos en la firma. | | x-nexiagent-signature | HMAC-SHA256 de {timestamp}.{cuerpo}, en hexadecimal. |

La clave de firma está en la misma pantalla. En Node:

import { createHmac, timingSafeEqual } from "node:crypto";

function esValido(cuerpoBruto, cabeceras, clave) {
  const ts = cabeceras["x-nexiagent-timestamp"];
  const recibida = Buffer.from(cabeceras["x-nexiagent-signature"] ?? "");
  const esperada = Buffer.from(
    createHmac("sha256", clave).update(`${ts}.${cuerpoBruto}`).digest("hex"),
  );

  // Rechace lo antiguo: sin esto, un envío capturado puede repetirse.
  if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;

  return (
    recibida.length === esperada.length && timingSafeEqual(recibida, esperada)
  );
}

En Python:

import hmac, hashlib, time

def es_valido(cuerpo_bruto: bytes, cabeceras, clave: str) -> bool:
    ts = cabeceras.get("x-nexiagent-timestamp", "")
    if abs(time.time() - float(ts or 0)) > 300:
        return False
    esperada = hmac.new(
        clave.encode(), f"{ts}.".encode() + cuerpo_bruto, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(esperada, cabeceras.get("x-nexiagent-signature", ""))

Dos cosas que suelen salir mal:

  • Firme el cuerpo en bruto, tal como llegó. Si lo descodifica y lo vuelve a codificar, un espacio de más cambia la firma.
  • Compare en tiempo constante (timingSafeEqual, compare_digest). Un === normal revela, por lo que tarda, cuántos caracteres ha acertado.

Cuando su dirección está caída

No lo descartamos. Lo intentamos de nuevo tras 1 minuto, 5, 25, unas 2 horas y unas 10 — seis intentos a lo largo de medio día, que cubre un deploy, un certificado caducado o una mala tarde de su proveedor.

Si después de eso sigue fallando, el envío se marca como fallido y la dirección aparece con No está llegando y el error exacto. Los intentos recientes se ven en la misma pantalla.

Responda 2xx para que lo contemos como entregado. Responda rápido — si tarda más de 10 segundos abandonamos ese intento. Si tiene trabajo lento que hacer, guarde lo que ha llegado y hágalo después.

Qué no aceptamos

La dirección la usan nuestros servidores, así que:

  • Solo https. Los datos de sus clientes no viajan sin cifrar.
  • Solo direcciones públicas. Rechazamos localhost, 127.0.0.1, 10.x, 192.168.x, 169.254.x y sus equivalentes en IPv6 — comprobado tras resolver el nombre, no solo por el texto de la dirección.

Esto no es burocracia: sin esas dos reglas, una dirección apuntada hacia dentro haría que nuestros servidores leyeran nuestra propia infraestructura en su nombre.

Seguridad

  • La clave de firma es un secreto. Guárdela como guarda una contraseña.
  • Si cree que ha quedado expuesta, quite la dirección y créela de nuevo — la clave nueva es distinta.
  • Nunca le pedimos la contraseña de ninguna de sus herramientas.