INOCHAT est l'assistant de discussion de CONTROL : une bulle sur votre site, un assistant qui répond depuis vos propres réponses, suit une commande, et passe la main à votre équipe quand il ne sait pas. Une balise à coller, rien à installer.
Les guides par stack (HTML, Next.js, WordPress) reprennent les mêmes étapes avec les détails propres à chacune.
Une clé publique au format INOCHT_PUB_…, fournie par INOVERTIX. Elle est publique par nature : elle vit dans le HTML de votre page. Ce qui la protège n'est pas son secret, c'est la liste des domaines autorisés attachée à votre site — une clé recopiée ailleurs ne répond pas.
INOCHT_PUB_…
Communiquez à INOVERTIX tous les domaines depuis lesquels la bulle doit s'afficher, avec leur schéma exact :
https://votresite.com https://www.votresite.com
La comparaison est stricte : www.votresite.com et votresite.com sont deux origines différentes, et http ne vaut pas https.
www.votresite.com
votresite.com
http
https
Juste avant </body> :
</body>
<script src="https://messagerie.inovertix.com/inochat.js" data-site="INOCHT_PUB_votre_cle_publique" data-endpoint="https://messagerie.inovertix.com/api/inochat" defer></script>
C'est tout. La bulle apparaît en bas à droite (ou à gauche, selon votre réglage), et l'assistant répond dès le premier message.
defer n'est pas décoratif : il garantit que le script n'entre jamais dans le chemin critique de votre page. En cas de problème — clé invalide, réseau coupé, service indisponible — le widget ne s'affiche simplement pas. Il n'affiche jamais d'erreur sur votre site et ne bloque jamais un chargement.
defer
Ouvrez votre site, cliquez sur la bulle, posez une question dont la réponse est dans votre base. Trois choses doivent se produire :
Si la bulle n'apparaît pas, voyez Dépannage.
Si le traqueur inotrack.js est déjà posé sur votre site, il n'y a rien à faire : INOCHAT récupère l'identifiant de session et la conversation porte le parcours du visiteur. C'est ce qui permet à votre équipe de voir quelles pages ont précédé une question.
inotrack.js
Quand il ne trouve pas, il le dit — et propose de transmettre à votre équipe. Il n'improvise jamais : une réponse qu'aucun article ne porte n'existe pas.
Quatre situations font basculer le widget en mode formulaire — un mot d'accueil et trois champs (nom, contact, message) :
Dans les quatre cas, le message déposé crée une vraie demande dans la file de votre équipe, avec un numéro de suivi et un accusé par email. Votre visiteur ne voit ni erreur, ni mur, ni « réessayez plus tard » : juste une autre façon d'être servi.
Le panneau s'ouvre en plein écran sous 480 px de large. C'est délibéré : un panneau flottant de 380 px sur un téléphone, c'est une fenêtre qui déborde et un clavier qui la recouvre. La zone de saisie reste visible au-dessus du clavier, et le champ est en 16 px — en dessous, iOS zoome et casse la mise en page.
Tout se règle côté CONTROL, pas dans votre code : couleur, position de la bulle, texte de la bulle, sous-titre de l'en-tête, message d'accueil. Le nom et l'avatar de l'assistant viennent de l'assistant lui-même — il s'appelle pareil partout.
Un seul attribut est disponible dans la balise :
data-launcher="off"
Il retire la bulle flottante tout en gardant l'API : à vous d'ouvrir le panneau depuis votre propre bouton.
<button onclick="window.INOCHAT.open()">Poser une question</button>
Trois fonctions sont exposées : window.INOCHAT.open(), .close() et .reset() (oublie la conversation en cours).
window.INOCHAT.open()
.close()
.reset()
Un jeton de conversation dans le localStorage de votre domaine, et rien d'autre. Pas de cookie : un cookie posé depuis notre domaine serait un cookie tiers, bloqué par défaut dans la moitié des navigateurs et soumis à votre bannière de consentement. Le localStorage du widget appartient à votre domaine et ne voyage avec aucune requête que vous n'avez pas voulue.
localStorage
Côté serveur, seule l'empreinte de ce jeton est conservée : un vol de la base ne livrerait aucun jeton utilisable.