Démarrage rapide
Ajoutez deux blocs avant la balise fermante </body> — c'est tout :
<script>
window.JamiiAIWidget = {
apiUrl: "https://api.jamiiai.com"
};
</script>
<script src="https://cdn.jamiiai.com/widget/jamiiai-widget.js"></script>
Un bouton de chat flottant apparaît en bas à droite de votre page. Le widget injecte automatiquement ses propres styles CSS — aucune feuille de style supplémentaire n'est nécessaire.
Fonctionnement
Le widget chatbot suit un flux simple :
- Cliquez sur le bouton flottant pour ouvrir le panneau
- Connectez-vous avec votre courriel (nom d'utilisateur) et votre réponse secrète
- Discutez avec l'assistant IA en temps réel
- Réinitialisez la conversation à tout moment avec le bouton ↻
- Déconnectez-vous pour effacer la session (jeton stocké dans
sessionStorage)
Le widget est entièrement autonome — un seul fichier JavaScript avec styles intégrés, internationalisation, authentification et fonctionnalités de chat. Avec le plan Pro, il offre une interface de chat simple utilisant trois points d'accès principaux. Avec le plan Entreprise, il déverrouille une expérience multi-modalité complète avec 82 points d'accès répartis sur 15 modalités — incluant la génération de code, l'analyse d'images et vidéos, la voix, la génération de documents, la base de connaissances, et bien plus.
Options de configuration
Toutes les options sont définies sur window.JamiiAIWidget avant le chargement du script :
| Option | Type | Par défaut | Description |
|---|---|---|---|
apiUrl | string | "" | Requis. URL de base de votre API Jamii AI |
lang | string | "en" | "en" ou "fr" |
position | string | "bottom-right" | "bottom-right" ou "bottom-left" |
plan | string | "pro" | "pro" ou "enterprise" |
theme | object | {} | Couleurs personnalisées (Entreprise uniquement) |
branding | object | {} | Marque personnalisée (Entreprise uniquement) |
Options de thème Entreprise
Les clients Entreprise peuvent entièrement personnaliser l'apparence visuelle du widget :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
primaryColor | string | "#7c3aed" | Boutons, bulles utilisateur, accents |
accentColor | string | "#22d3ee" | Couleur secondaire du dégradé d'en-tête |
fontFamily | string | "'Inter', system-ui, sans-serif" | Police du widget |
window.JamiiAIWidget = {
apiUrl: "https://api.jamiiai.com",
plan: "enterprise",
theme: {
primaryColor: "#0066ff",
accentColor: "#00ccaa",
fontFamily: "'Poppins', sans-serif"
}
};
Options de marque Entreprise
Les utilisateurs Entreprise peuvent personnaliser le widget avec leur propre marque :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
title | string | null | Texte du titre dans l'en-tête |
subtitle | string | null | Texte du sous-titre dans l'en-tête |
logo | string | null | Balisage SVG du logo personnalisé |
showPoweredBy | boolean | false | Afficher/masquer « Propulsé par Jamii AI » |
branding: {
title: "Support Acme",
subtitle: "Nous sommes là pour vous aider",
logo: '<svg viewBox="0 0 32 32">...</svg>',
showPoweredBy: false
}
Comparaison des plans
| Fonctionnalité | Pro | Entreprise |
|---|---|---|
| Widget chatbot intégrable | ✅ | ✅ |
| Support bilingue (EN / FR) | ✅ | ✅ |
| Connexion / Chat / Réinitialisation | ✅ | ✅ |
| Adaptatif mobile | ✅ | ✅ |
| Personnalisation de la position | ✅ | ✅ |
| Badge « Propulsé par Jamii AI » | Requis | Optionnel |
| Marque personnalisée (titre, logo) | — | ✅ |
| Couleurs de thème personnalisées | — | ✅ |
| Mode marque blanche | — | ✅ |
| Multi-modalité (Entreprise uniquement) | ||
| Génération, révision et refactorisation de code | — | ✅ |
| Texte IA (traduction, résumé, sentiment, extraction) | — | ✅ |
| Génération et description d'images | — | ✅ |
| Voix (parole-texte, texte-parole, chat audio) | — | ✅ |
| Transcription et description de vidéos | — | ✅ |
| Génération de documents (Word, PowerPoint, PDF) | — | ✅ |
| Requêtes en langage naturel sur base de données | — | ✅ |
| Résumé de pages web | — | ✅ |
| IA en langues africaines (chat, traduction, détection) | — | ✅ |
| Afrique Vie (agriculture, éducation, juridique) | — | ✅ |
| Afrique Culture (proverbes, contes) | — | ✅ |
| Agent IA (exécution autonome de tâches) | — | ✅ |
| Embeddings et mémoire (stocker / rappeler / effacer) | — | ✅ |
| Base de connaissances (ingérer, requête, gérer) | — | ✅ |
| Téléversement et téléchargement de fichiers | — | ✅ |
| Streaming par événements serveur (SSE) | — | ✅ |
Exemple — Plan Pro (Minimal)
<script>
window.JamiiAIWidget = {
apiUrl: "https://api.jamiiai.com",
lang: "en"
};
</script>
<script src="https://cdn.jamiiai.com/widget/jamiiai-widget.js"></script>
Exemple — Plan Pro (Français, à gauche)
<script>
window.JamiiAIWidget = {
apiUrl: "https://api.jamiiai.com",
lang: "fr",
position: "bottom-left"
};
</script>
<script src="https://cdn.jamiiai.com/widget/jamiiai-widget.js"></script>
Exemple — Entreprise (Marque blanche)
<script>
window.JamiiAIWidget = {
apiUrl: "https://api.votreentreprise.com",
plan: "enterprise",
lang: "fr",
position: "bottom-left",
theme: {
primaryColor: "#0066ff",
accentColor: "#00ccaa",
fontFamily: "'Poppins', sans-serif"
},
branding: {
title: "Support Acme",
subtitle: "Nous sommes là pour vous aider",
logo: '<svg viewBox="0 0 32 32"><circle cx="16" cy="16" r="14" fill="#0066ff"/><text x="16" y="21" text-anchor="middle" fill="#fff" font-size="14" font-weight="bold">A</text></svg>',
showPoweredBy: false
}
};
</script>
<script src="https://cdn.jamiiai.com/widget/jamiiai-widget.js"></script>
Auto-hébergement
Téléchargez jamiiai-widget.js et hébergez-le depuis votre propre domaine :
<script>
window.JamiiAIWidget = {
apiUrl: "https://api.jamiiai.com"
};
</script>
<script src="/assets/jamiiai-widget.js"></script>
Un fichier CSS autonome optionnel (jamiiai-widget.css) est également fourni pour les clients qui préfèrent héberger les styles séparément. Le fichier JS injecte les styles automatiquement par défaut, le fichier CSS n'est pas requis.
Création de compte et abonnement
Avant d'utiliser le widget chatbot, les utilisateurs doivent créer un compte et souscrire à un plan. Le site web propose un formulaire d'inscription qui collecte :
- Nom complet
- Courriel (également utilisé comme nom d'utilisateur — la partie avant
@) - Téléphone
- Question secrète et réponse (utilisée pour la connexion au widget)
Après l'inscription, l'utilisateur est redirigé vers Stripe Checkout pour choisir un plan (Starter 19 $/mois, Pro 49 $/mois, Entreprise 199 $/mois). Après un paiement réussi, l'abonnement est enregistré automatiquement via webhook.
Points d'accès associés
| Méthode | Chemin | Description |
|---|---|---|
POST | /auth/signup | Créer un nouveau compte client |
POST | /auth/subscribe | Créer une session Stripe Checkout |
POST | /auth/stripe-webhook | Gérer les événements de paiement Stripe |
GET | /auth/stripe-key | Récupérer la clé publique Stripe |
Points d'accès API utilisés
Avec le plan Pro, le widget utilise trois points d'accès principaux. Avec le plan Entreprise, le widget a accès à 82 points d'accès répartis sur 15 modalités — les points d'accès principaux ci-dessous plus ceux listés dans le tableau des modalités.
Authentifier un utilisateur avec son courriel (nom d'utilisateur) et sa réponse secrète.
Requête
{
"username": "jean",
"secret_answer": "mon-secret"
}
Réponse
{
"access_token": "eyJhbGciOi...",
"token_type": "bearer"
}
Envoyer un message et recevoir une réponse de l'IA.
Requête
{
"message": "Que pouvez-vous faire ?"
}
Réponse
{
"response": "Je peux vous aider avec..."
}
Réinitialiser l'historique de conversation et recommencer.
Réponse
{
"message": "Chat reset successfully"
}
Points d'accès des modalités Entreprise
Les utilisateurs Entreprise disposent d'une barre de sélection de modalité dans le widget donnant accès à :
| Modalité | Actions | Points d'accès |
|---|---|---|
| Chat | Chat, Streaming | /chat, /chat/stream |
| Code | Générer, Réviser, Expliquer, Refactoriser | /code/generate, /code/review, /code/explain, /code/refactor |
| Texte IA | Traduire, Résumer, Sentiment, Extraire | /text/translate, /text/summarize, /text/sentiment, /text/extract |
| Web | Résumer URL | /web/summarize |
| Base de données | Requête | /db/chat |
| Afrique Lang | Chat, Traduire, Détecter la langue | /africa/chat, /africa/translate, /africa/detect-language |
| Afrique Vie | Agriculture, Éducation, Juridique | /africa/agriculture/ask, /africa/education/ask, /africa/legal/ask |
| Afrique Culture | Proverbes, Contes | /africa/proverbs/get, /africa/storytelling/tell |
| Agent | Tâche | /agent/task |
| Mémoire | Stocker, Rappeler, Effacer | /memory/store, /memory/recall, /memory/clear |
| Base de connaissances | Ingérer, Ingérer URL, Requête, Lister, Effacer | /kb/ingest, /kb/ingest-url, /kb/query, /kb/list, /kb/clear |
| Image | Décrire, Q&R, Générer | /image/image-to-text, /image/image-to-answer, /image/text-to-image |
| Document | Word, PowerPoint, PDF | /document/text-to-word, /document/text-to-powerpoint, /document/text-to-pdf |
| Voix | Parole→Texte, Texte→Parole, Chat audio | /voice/speech-to-text, /voice/text-to-speech, /voice/audio-to-audio |
| Vidéo | Transcrire, Décrire | /video/video-to-text, /video/video-to-description |
Flux d'authentification
- L'utilisateur clique sur le bouton de chat flottant
- Un formulaire de connexion demande le courriel (nom d'utilisateur) et la réponse secrète
- Les identifiants sont envoyés à
/auth/customer/login, qui retourne un JWT - Le JWT est stocké dans
sessionStorage(effacé à la déconnexion ou à la fermeture de l'onglet) - Tous les appels API suivants incluent le jeton comme
Authorization: Bearer - En cas de réponse 401 (jeton expiré), l'utilisateur est redirigé vers le formulaire de connexion
Navigateurs supportés
| Navigateur | Version minimale |
|---|---|
| Chrome | 60+ |
| Firefox | 55+ |
| Safari | 12+ |
| Edge | 79+ |
Dépannage
| Problème | Cause | Solution |
|---|---|---|
| Le bouton de chat n'apparaît pas | Script non chargé | Vérifiez que le chemin de la balise <script> se charge sans erreur 404 |
| Erreur « URL de l'API non configurée » | apiUrl manquant | Définissez apiUrl dans window.JamiiAIWidget avant le chargement du script |
| « Impossible de joindre le serveur » | Problème CORS ou réseau | Assurez-vous que votre API autorise les requêtes depuis le domaine d'intégration |
| Échec de connexion avec des identifiants valides | Mauvais point d'accès | Confirmez que votre API possède le point d'accès /auth/customer/login |
| Conflits de styles du widget | Conflit de spécificité CSS | Toutes les classes du widget utilisent le préfixe jcb- — aucune collision attendue |