script-srcLe fichier du chargeur, servi depuis notre domaine.
Ce document décrit exactement ce que fait le code livré : ce que la ligne injecte dans votre page, ce que le serveur vérifie avant d’ouvrir quoi que ce soit, ce que votre navigateur doit permettre, et comment retirer l’ensemble. Rien de ce qui suit n’est une recommandation générale — chaque phrase correspond à un comportement du produit.
La ligne
Une balise, trois attributs, aucune dépendance. Le fichier chargé est un script autonome : dans votre page, il ne pose aucun cookie, n’écrit rien dans le stockage du navigateur et ne contient aucun secret. La clé de signature de votre installation reste sur nos serveurs.
<script src="https://www.cerfland.fr/cerfi/widget.js" data-cerfi-site="wc_VOTRE-CLE" async></script>Coller la ligne deux fois n’affiche pas deux Cerfi : le chargeur pose un drapeau sur la fenêtre et la seconde exécution s’arrête immédiatement.
Collez-la dans le gabarit de votre site, juste avant la balise de fin de page. Le chargeur attend le document si nécessaire, mais la fin de page reste la position recommandée : elle garantit que rien de votre contenu n’est retardé.
Sous 480 px de large, le conteneur occupe toute la largeur et se colle au bas de l’écran.
La clé et les domaines
Avant d’afficher quoi que ce soit, le chargeur adresse une requête à nos serveurs. Le navigateur y attache l’adresse réelle de votre page — une valeur que le code de la page ne peut pas falsifier. C’est la seule autorité : le serveur la compare à la liste des domaines de votre installation et ne délivre un jeton que si elle correspond. Sans jeton, rien n’est inséré dans votre page.
Le comparateur du serveur accepte une écriture générique de la forme *.exemple.fr, mais le champ « Domaines autorisés » du tableau de bord la refuse à l’enregistrement : une entrée qui ne commence pas par une lettre ou un chiffre est écartée en silence, et une liste qui n’en contenait que de celles-là est rejetée. En pratique : inscrivez chaque hôte en toutes lettres.
L’essai à blanc
Les deux champs ci-dessous exécutent, dans votre navigateur, les fonctions de comparaison utilisées par le serveur. Elles ne sont pas réécrites pour la démonstration : c’est le même module.
Ce contrôle ne consulte pas votre compte. Il ne peut donc pas savoir si votre installation est active, en pause ou révoquée — il vérifie uniquement que la forme de vos domaines et l’adresse de votre page se répondent.
Ce que votre site doit permettre
Aucune modification n’est nécessaire sur un site ordinaire. Si votre site publie un en-tête Content-Security-Policy, en revanche, il doit autoriser les quatre choses que le chargeur fait réellement — et seulement celles-là. Une politique trop stricte n’affiche aucune erreur visible : le navigateur bloque, et vous ne voyez rien.
script-srcLe fichier du chargeur, servi depuis notre domaine.
connect-srcLa requête de contrôle qui valide votre domaine et délivre le jeton.
frame-srcLe panneau de conversation, ouvert dans un cadre isolé.
style-srcLe chargeur insère une feuille de style construite en mémoire. Sans autorisation, elle est écartée : le bouton existe, mais sans position ni dimension.
Rien d’autre n’est demandé : aucune police distante, aucune image externe, aucun appel de mesure d’audience.
frame-ancestorsReferrer-PolicyLe microphone
Le panneau écrit fonctionne partout. La voix, elle, dépend d’une permission que seule votre page peut accorder, parce qu’elle appartient au document qui héberge le cadre.
Le chargeur délègue déjà le microphone au cadre de conversation, en nommant explicitement notre origine.
L’en-tête, tel qu’il s’écrit
Permissions-Policy: microphone=(self "https://www.cerfland.fr")Si votre site publie un en-tête Permissions-Policy, il doit nommer notre origine, faute de quoi la délégation reste sans effet. S’il n’en publie aucun, les navigateurs appliquent leur liste par défaut — le document lui-même — et la délégation vers une autre origine n’aboutit pas non plus. La voix à l’intérieur d’un site tiers est donc un fonctionnement au mieux, et le produit ne prétend pas l’inverse.

La barre vocale du panneau. Capture réelle · www.cerfland.fr · 6 septembre 2026.
Contexte sécurisé
La capture audio n’existe que dans un contexte sécurisé. Sur une page servie en HTTP, le panneau signale une indisponibilité — il ne dit pas « bloqué », parce que ce serait faux.
Ce que dit le panneau
« Le microphone est bloqué » n’apparaît que sur un refus réel du visiteur. Toute autre cause affiche un message d’interruption, et la conversation se poursuit par écrit sans rien perdre.
Le diagnostic précis
Pour un diagnostic précis, la racine du panneau porte un attribut data-voice-fail-stage qui nomme l’étape exacte : microphone indisponible, refus, aucun périphérique, session refusée, socket interrompue.
Le bouton n’apparaît pas
Si le bouton « Parler » n’apparaît pas du tout, ce n’est pas l’installation : la voix est une décision de votre Maison — la surface publiée dans votre tableau de bord — croisée avec le droit à la voix de votre formule.
Vérifier
Ouvrez une page de votre site sur un domaine autorisé. Le bouton apparaît dans le coin, du côté publié dans votre tableau de bord.
Cliquez : le panneau s’ouvre. Sur un écran court, il se limite à la hauteur réellement visible.
Dans votre tableau de bord, à la ligne de cette installation, « Dernière détection » se renseigne d’elle-même.
En service
Le script a été chargé depuis un domaine autorisé dans les 48 dernières heures.
Vérifiée
Le script a déjà été observé chez vous, mais pas dans les 48 dernières heures.
Script non détecté
Aucun chargement n’a jamais été observé sur un domaine autorisé.
La détection est estampillée au plus une fois toutes les cinq minutes : recharger la page une seconde fois dans ce délai ne change rien à l’affichage. C’est la seule preuve de présence dont dispose la plateforme — elle ne mesure ni votre fréquentation, ni le nombre de conversations, qui ne sont pas rattachées à une installation.
Retirer
Ils ne sont pas interchangeables. Deux se rattrapent, un se rattrape à condition de recoller la ligne, un est définitif.
Le geste
Ce qui se passe
Plus rien ne se charge. L’installation reste dans votre compte et sa dernière détection vieillit.
Retour possible
Oui — recollez la ligne.
Le geste
Ce qui se passe
La clé cesse de résoudre. Le chargeur ne reçoit rien et n’insère rien : ni bouton, ni bulle. La ligne peut rester dans votre page.
Retour possible
Oui — réactivez-la.
Le geste
Ce qui se passe
Une nouvelle clé est émise et l’ancienne cesse de résoudre à la seconde même. La ligne déjà posée ne charge plus rien.
Retour possible
Oui — collez la nouvelle ligne.
Le geste
Ce qui se passe
La clé ne résout plus jamais et la ligne est conservée pour l’audit. La réactivation est refusée par le serveur.
Retour possible
Non — il faut créer une nouvelle installation.
Les premières pannes
Quatre causes couvrent la quasi-totalité des premières installations. Elles ont un point commun qui les rend déroutantes : le produit est conçu pour ne rien afficher plutôt que d’afficher un bouton mort, donc l’échec est silencieux.
La cause
Une installation est créée EN PAUSE. C’est le choix du produit : rien ne s’affiche chez vous avant que vous l’ayez décidé. Une installation révoquée, ou un compte restreint, produisent exactement le même silence — et si le cadre a eu le temps de s’ouvrir, il demande au chargeur de se retirer entièrement.
Le geste
Tableau de bord, Sites, votre installation : « Activer l’installation ».
La suite
Chaque installation y porte sa ligne, ses domaines et son état réel. Si un point de ce document ne correspond pas à ce que vous observez, dites-le-nous : c’est le document qui a tort.