Cette page t'a-t-elle aidé ?
Cette page t'a-t-elle aidé ?
Référence
Gilbert s'intègre dans votre app comme un widget standard. Deux formes : script tag (iframe injectée automatiquement) ou iframe directe (vous gérez le placement).
Dernière mise à jour : 10 juin 2026
Le snippet embed.jsinjecte une iframe Gilbert responsive juste après la balise script, là où vous la placez dans la page. C'est la forme la plus simple pour démarrer. (La bulle flottante en bas à droite est à venir.)
<script
src="https://gilbert.solveholding.com/embed.js"
data-product="solve-web"
data-theme="light"
defer
></script>Le script lit ses configs via les attributs data-*. Tous sont optionnels : sans rien, Gilbert tourne en mode démo publique.
Le workspace cible est porté par le claim issdu JWT SSO (voir l'iframe directe ci-dessous), pas par un attribut data-*. Pour rattacher l'iframe à votre workspace authentifié, passez par l'iframe directe avec ?token=….
Si vous voulez Gilbert en pleine page ou dans un panel custom, posez l'iframe vous-même :
<iframe
src="https://gilbert.solveholding.com/embed?token=JWT&theme=light"
sandbox="allow-scripts allow-same-origin allow-forms allow-popups"
width="100%"
height="640"
style="border: 0; border-radius: 16px;"
title="Assistant Gilbert"
></iframe>Si votre application définit un Content-Security-Policy, autorisez les origines Gilbert :
Content-Security-Policy:
script-src 'self' https://gilbert.solveholding.com;
frame-src https://gilbert.solveholding.com;
connect-src https://gilbert.solveholding.com;script-src est nécessaire seulement si vous utilisez le snippet script tag. frame-src est requis dans tous les cas. connect-srcn'est utile que si votre propre code parent fait des fetch vers Gilbert (les requêtes de l'iframe elle-même ne passent pas par votre CSP).
| Param | Type | Description |
|---|---|---|
| token | JWT | Signé HS256. Si présent, prioritaire sur tous les autres params d'identité. Voir JWT SSO. |
| product | string | product_context. Ignoré si token est fourni (claim product_context du JWT prioritaire). |
| theme | enum | light · dark. Défaut : light. |
| dossier | uuid | ID de dossier à pré-sélectionner. Utile si l'user a plusieurs contextes parallèles. |
| intent | enum | embed-setup · explore · client-build. dev-docs rejeté en iframe. |
L'iframe notifie la page hôte de son cycle de vie via postMessage. Trois événements existent aujourd'hui, tous préfixés gilbert: (séparateur deux-points) :
| type | Payload | Émis quand |
|---|---|---|
| gilbert:ready | Aucun | L'iframe a hydraté. |
| gilbert:error | code (ex : bad_signature, expired) | L'exchange du token SSO a échoué. |
| gilbert:close | Aucun | L'UI Gilbert demande la fermeture du panneau hôte. |
window.addEventListener('message', (e) => {
if (e.origin !== 'https://gilbert.solveholding.com') return
switch (e.data.type) {
case 'gilbert:ready':
console.log('Gilbert prêt')
break
case 'gilbert:error':
console.warn('Exchange SSO échoué', e.data.code)
break
case 'gilbert:close':
// fermer votre drawer / panel
break
}
})