Installation
Le SDK est disponible sous deux formes : un bundle ES Module pour les projets avec bundler (Vite, Webpack…) et un bundle IIFE pour un chargement direct via <script>.
Via npm
Via CDN / balise script (IIFE global)
Import ES Module
Démarrage rapide
En moins de 10 lignes, un widget de chat complet est monté dans votre page, Shadow DOM isolé, bouton flottant inclus.
AiChatWebClient
Le client HTTP encapsule la communication avec l'API REST. Il gère l'authentification Bearer et peut être utilisé indépendamment du widget visuel.
Constructeur
| Option | Type | Description |
|---|---|---|
| baseUrl | string | URL de base de votre instance AiChat (ex: https://votre-domaine.com) |
| apiKey | string | Clé API Bearer générée dans le tableau de bord |
| timeout | number? | Délai d'expiration en ms (optionnel) |
Méthode sendMessage
AiChatChatbot
Le widget visuel complet. Il compose automatiquement un header, une liste de messages, une zone de saisie et un bouton launcher flottant — le tout dans un Shadow DOM isolé.
Fonctionnalités intégrées
- ▸ Shadow DOM — isolation CSS totale, pas de conflits avec votre application
- ▸ Rendu Markdown — gras, italique, code inline, blocs de code, listes, blockquotes, liens
- ▸ Launcher flottant — bouton circulaire avec badge de messages non lus, positions bottom-right / bottom-left
- ▸ Indicateur de frappe — trois points animés pendant la génération de la réponse
- ▸ Textarea auto-redimensionnable — s'agrandit jusqu'à 120px, Enter pour envoyer, Shift+Enter pour un saut de ligne
- ▸ Human-in-the-loop — carte d'approbation intégrée pour les outils IA nécessitant validation
- ▸ Horodatages optionnels — affichés sur chaque bulle de message
Positions disponibles
Options complètes
Référence complète de toutes les options acceptées par AiChatChatbot.
| Option | Type | Description |
|---|---|---|
| client | AiChatWebClient | Instance du client HTTP (requis) |
| agentId | string | UUID de l'agent à utiliser (requis) |
| mount | string | Element | Sélecteur CSS ou élément DOM cible (requis) |
| title | string? | Titre affiché dans le header |
| subtitle | string? | Sous-titre affiché sous le titre |
| welcomeMessage | string? | Message initial de l'assistant (Markdown supporté) |
| position | string? | inline | bottom-right | bottom-left |
| showTimestamps | boolean? | Afficher l'heure sur chaque message |
| theme | ChatbotTheme? | Overrides des design tokens CSS (voir section Thèmes) |
| onApprove | function? | Callback HITL — appelé quand l'utilisateur approuve un outil |
| onReject | function? | Callback HITL — appelé quand l'utilisateur rejette un outil |
Exemple complet
Thèmes
Le widget est entièrement personnalisable via l'objet theme. Chaque propriété correspond à un token CSS --ac-* injecté dans le Shadow DOM.
Thèmes prédéfinis
accentColor: #c9a84c
accentColor: #a5b4fc
accentColor: #86efac
accentColor: #fda4af
Propriétés du thème (ChatbotTheme)
| Propriété | Type | Description |
|---|---|---|
| primaryColor | string? | Couleur principale (header, bulles utilisateur, launcher) |
| accentColor | string? | Couleur d'accentuation (boutons, focus) |
| headerBackground | string? | Fond du header |
| headerTextColor | string? | Texte du header |
| userBubbleBackground | string? | Fond des bulles utilisateur |
| userBubbleTextColor | string? | Texte des bulles utilisateur |
| assistantBubbleBackground | string? | Fond des bulles assistant |
| assistantBubbleTextColor | string? | Texte des bulles assistant |
| widgetBackground | string? | Fond général du widget |
| widgetBorderColor | string? | Couleur de bordure du widget |
| borderRadius | string? | Rayon des coins (ex: 16px, 20px) |
| shadowIntensity | string? | none | low | medium | high |
Exemple — thème Indigo
Human-in-the-loop (HITL)
Lorsque l'agent IA souhaite exécuter un outil nécessitant une validation humaine, le SDK affiche automatiquement une carte d'approbation dans le chat. L'utilisateur peut approuver ou rejeter l'action sans quitter l'interface.
metadata.approval_required: true.
Callbacks
Structure de la réponse HITL
Événements & méthodes
L'instance AiChatChatbot expose des méthodes publiques et un système d'événements pour interagir programmatiquement avec le widget.
Méthodes
| Méthode | Type | Description |
|---|---|---|
| toggle(force?) | void | Ouvre ou ferme le widget. force=true pour forcer l'ouverture, false pour fermer. |
| destroy() | void | Démonte le widget et libère toutes les ressources DOM. |
| on(event, cb) | void | Abonne un callback à un événement. |
| off(event, cb) | void | Désabonne un callback d'un événement. |
Événements disponibles
| Événement | Payload | Description |
|---|---|---|
| ready | — | Widget monté et prêt à l'emploi |
| toggle | boolean | Widget ouvert (true) ou fermé (false) |
| message | ChatMessage | Nouveau message reçu de l'assistant |
| error | Error | Erreur lors de l'envoi ou de la réception |
Exemple
API REST
Le SDK consomme l'API REST AiChat. Voici l'endpoint principal utilisé par AiChatWebClient.sendMessage().
/api/conversations/send
— Envoyer un message à un agent
En-têtes requis
Corps de la requête