📖 Documentation

Design de la Chatbox TALKR.ai

Guide complet : structure, tokens CSS, composants et personnalisation du widget de chat

🖥️ Aperçu

La chatbox TALKR.ai est un widget de conversation autonome, léger (un seul fichier HTML) et entièrement personnalisable. Elle se connecte à l'API TALKR pour offrir une expérience conversationnelle fluide.

💬
Messages animés
Bulles bot/utilisateur avec animation fade-in et indicateur de frappe (3 points rebondissants).
🔄
Refresh conversation
Bouton de réinitialisation : vide les messages, reset la session et relance l'accueil du bot.
Popover TALKR
Bouton éclair affichant le logo TALKR.ai avec un lien vers le site. Se ferme au clic extérieur.
📱
Responsive
Adapté mobile : max-width 95vw, max-height 90vh. Fonctionne sur tous les écrans.

🏗️ Structure HTML

Le widget suit une architecture BEM simple avec 4 zones principales :

<div .chat>
<div .chat__header>
├─ .chat__avatar — Icône / emoji du bot
├─ .chat__title + .chat__subtitle
└─ .chat__header-actions
   ├─ #refreshBtn — Nouvelle conversation
   └─ #boltBtn + .popover
<div .chat__messages>
├─ .msg--bot — Bulle du bot
├─ .msg--user — Bulle utilisateur
├─ .msg--error — Message d'erreur
└─ .msg--typing — Indicateur de frappe
<div .chat__input>
├─ <input> — Champ texte
└─ <button #sendBtn> — Envoi

🎨 Design Tokens CSS

Les variables CSS personnalisables sont définies dans :root :

Couleurs

--purple
#7B2FBE — Accent principal, boutons, bulles user
--cyan
#2CC4D1 — Avatar du bot
--navy
#001B39 — Texte foncé, header gradient
--bg
#f4f5f7 — Fond de page
--gray-100
#f0f1f3 — Bulles bot, champ désactivé
--gray-300
#d1d5db — Bordures, scrollbar
--gray-500
#6b7280 — Texte secondaire, dots typing
--white
#ffffff — Fond chatbox, texte sur fond sombre

Dimensions

Token Valeur Usage
--radius 1rem Border-radius global (container, bulles)
width 420px Largeur fixe du widget
max-width 95vw Limite mobile
height 680px Hauteur fixe du widget
max-height 90vh Limite viewport

Typographie

Élément Font Taille
Corps / messages Inter 400 .9rem
Titre header Poppins 700 1rem
Sous-titre Inter 400 .75rem
Popover texte Inter 400 .8rem
Popover lien Poppins 600 .85rem

🧩 Composants

Header
Barre supérieure avec dégradé purple → navy. Contient l'avatar, le titre, le statut en ligne (pastille verte) et les boutons d'action.
.chat__header .chat__avatar .chat__title .chat__subtitle .chat__status .chat__header-actions
Bulles de message
Trois variantes : bot (gris, aligné à gauche), user (violet, aligné à droite), error (rouge pâle, centré). Max-width 82%. Animation fadeIn au rendu.
.msg .msg--bot .msg--user .msg--error
Indicateur de frappe
Trois points animés (bounce décalé de 0.15s chacun) affichés pendant l'appel API. Automatiquement supprimé à la réception de la réponse.
.msg--typing
Zone de saisie
Input arrondi (border-radius: 2rem) + bouton d'envoi circulaire violet avec icône flèche SVG. Focus = bordure violette. Désactivé pendant l'envoi.
.chat__input #userInput #sendBtn
Boutons d'action (header)
Cercles semi-transparents (rgba(255,255,255,.15)) avec icônes SVG blanches. Hover = plus opaque. Refresh : réinitialise session + messages. Éclair : toggle un popover avec logo TALKR et lien vers le site.
.chat__header-btn #refreshBtn #boltBtn .popover

✨ Animations

Animation Durée Cible Effet
fadeIn 0.25s ease Toutes les bulles .msg Slide-up 6px + fade opacity 0→1
bounce 0.6s infinite alternate Dots du typing indicator Translation Y -6px + opacity →0.4
Transitions 0.2s Boutons, input focus, popover link Background-color, border-color, transform

🔧 Personnalisation

Changer les couleurs

Modifiez les variables CSS dans :root pour adapter le widget à votre charte graphique :

CSS :root { --purple: #E63946; /* Accent → rouge */ --cyan: #457B9D; /* Avatar → bleu */ --navy: #1D3557; /* Header → bleu foncé */ --radius: 0.5rem; /* Coins moins arrondis */ }

Changer l'avatar

Remplacez l'emoji dans .chat__avatar par une image :

HTML <div class="chat__avatar"> <img src="logo.png" alt="Bot" style="width:100%;height:100%;border-radius:50%;object-fit:cover"> </div>

Changer l'endpoint API

Modifiez la constante API_URL dans le <script> :

JavaScript const API_URL = 'https://api-production.talkr.ai/{workspace}/bots/{id}/api/web';

Dimensions du widget

Ajustez width et height dans la classe .chat :

CSS .chat { width: 360px; /* Plus étroit */ height: 600px; /* Plus court */ }

⚙️ Logique JavaScript

Flux de conversation

Le widget gère automatiquement la session avec l'API TALKR :

  • Initialisation — Appel POST sans session → le bot retourne son message d'accueil + un ID de session
  • Messages suivants — Chaque appel envoie session, tracking et le message utilisateur
  • Réponse — Extraction des messages intermédiaires (data.messages) et de la réponse finale (variables.bot_answer)
  • Refresh — Reset de session et tracking à null, vidage des messages, re-init

Fonctions principales

Fonction Rôle
init() Charge le message d'accueil du bot au démarrage
callAPI(msg) Envoie une requête POST à l'API TALKR
extractBotResponse(data) Parse la réponse API et retourne un tableau de textes
sendMessage() Gère l'envoi d'un message utilisateur (UI + API)
addMessage(text, type) Ajoute une bulle dans le DOM
showTyping() / hideTyping() Affiche/masque l'indicateur de frappe
setEnabled(bool) Active/désactive l'input pendant un envoi

📋 Exemple complet

Le widget est un fichier HTML autonome. Voici la structure minimale pour l'intégrer :

HTML <!-- 1. Inclure Google Fonts --> <!-- 2. Copier le CSS (variables + composants) dans un <style> --> <!-- 3. Structure HTML --> <div class="chat"> <div class="chat__header">...</div> <div class="chat__messages" id="messages"></div> <div class="chat__input"> <input type="text" id="userInput"> <button id="sendBtn">...</button> </div> </div> <!-- 4. Configurer l'API URL dans le <script> --> <script> const API_URL = 'https://api-production.talkr.ai/{workspace}/bots/{id}/api/web'; // ... logique complète </script>

Le fichier complet est disponible dans le dossier chatbox/ du projet.

Prêt à intégrer votre chatbox ?

Consultez la documentation API pour configurer votre bot et le connecter au widget.

📡 Documentation API 🚀 Guide de démarrage