Intégrations
Ce que l'agent recueille ne sert à rien s'il reste ici. Chaque rendez-vous, message, contact, préqualification et transmission à une personne peut être envoyé à une adresse de votre choix, dès que cela se produit.
Une adresse, et non trente connecteurs prêts à l'emploi — parce que la connexion à votre CRM, votre agenda, votre logiciel de facturation ou au logiciel écrit par votre entreprise est réalisée par nous, de zéro, sur mesure. Nous n'utilisons aucun service d'automatisation tiers. Parlez-nous pour évaluer la connexion dont vous avez besoin.
Disponible à partir du forfait Pro.
Mise en place
Dans les réglages de l'agent, Envoyez-le vers vos propres outils :
- Collez l'adresse de destination. Elle doit commencer par
https://. - Choisissez quoi envoyer — seulement les rendez-vous, par exemple.
- Appuyez sur Envoyer un test. Il arrive en quelques secondes, au format exact d'un envoi réel.
L'adresse est vérifiée au moment où vous l'enregistrez. Si elle est refusée, nous disons pourquoi.
Ce que vous recevez
Un POST avec 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": "Première consultation."
}
}
Les événements possibles sont booking.created, message.taken, lead.captured,
screening.recorded, document.requested et handover.
Vérifier que cela vient bien de nous
Votre adresse est publique. Sans vérification, quiconque la découvre peut créer de faux rendez-vous dans votre CRM.
Chaque envoi porte trois en-têtes :
| En-tête | Ce que c'est |
| --- | --- |
| x-nexiagent-event | L'événement, pour router sans lire le corps. |
| x-nexiagent-timestamp | Secondes depuis 1970, incluses dans la signature. |
| x-nexiagent-signature | HMAC-SHA256 de {timestamp}.{corps}, en hexadécimal. |
La clé de signature est sur le même écran. En Node :
import { createHmac, timingSafeEqual } from "node:crypto";
function estValide(corpsBrut, entetes, cle) {
const ts = entetes["x-nexiagent-timestamp"];
const recue = Buffer.from(entetes["x-nexiagent-signature"] ?? "");
const attendue = Buffer.from(
createHmac("sha256", cle).update(`${ts}.${corpsBrut}`).digest("hex"),
);
// Refusez ce qui est ancien : sans cela, un envoi capturé peut être rejoué.
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
return recue.length === attendue.length && timingSafeEqual(recue, attendue);
}
En Python :
import hmac, hashlib, time
def est_valide(corps_brut: bytes, entetes, cle: str) -> bool:
ts = entetes.get("x-nexiagent-timestamp", "")
if abs(time.time() - float(ts or 0)) > 300:
return False
attendue = hmac.new(
cle.encode(), f"{ts}.".encode() + corps_brut, hashlib.sha256
).hexdigest()
return hmac.compare_digest(attendue, entetes.get("x-nexiagent-signature", ""))
Deux choses qui tournent souvent mal :
- Signez le corps brut, tel qu'il est arrivé. Si vous le décodez puis le ré-encodez, un espace en trop change la signature.
- Comparez en temps constant (
timingSafeEqual,compare_digest). Un===ordinaire révèle, par le temps qu'il met, combien de caractères vous avez devinés.
Quand votre adresse ne répond pas
Nous n'abandonnons pas. Nous réessayons après 1 minute, 5, 25, environ 2 heures et environ 10 — six tentatives sur une demi-journée, ce qui couvre un déploiement, un certificat expiré ou une mauvaise après-midi chez votre hébergeur.
Si cela échoue encore ensuite, l'envoi est marqué comme échoué et l'adresse affiche N'arrive pas avec l'erreur exacte. Les tentatives récentes sont visibles sur le même écran.
Répondez 2xx pour que nous comptions l'envoi comme livré. Répondez vite — au-delà de
10 secondes nous abandonnons cette tentative. Si vous avez du travail lent à faire,
enregistrez ce qui est arrivé et faites-le ensuite.
Ce que nous refusons
L'adresse est utilisée par nos serveurs, donc :
httpsuniquement. Les données de vos clients ne circulent pas en clair.- Adresses publiques uniquement. Nous refusons
localhost,127.0.0.1,10.x,192.168.x,169.254.xet leurs équivalents IPv6 — vérifié après résolution du nom, pas seulement d'après le texte de l'adresse.
Ce n'est pas de la paperasse : sans ces deux règles, une adresse pointée vers l'intérieur ferait lire notre propre infrastructure par nos serveurs, en votre nom.
Sécurité
- La clé de signature est un secret. Gardez-la comme un mot de passe.
- Si vous la pensez exposée, supprimez l'adresse et recréez-la — la nouvelle clé est différente.
- Nous ne vous demandons jamais le mot de passe de l'un de vos outils.