
Intégrations
FlowHunt s'intègre à vos outils de service client et de productivité préférés afin que vous puissiez profiter de chatbots IA et d'automatisation partout. Parcou...

Référence complète pour l’intégration de FlowHunt JS API v2. Apprenez à intégrer le chatbot, vous abonner aux 10 événements, utiliser les variables de flux, suivre les interactions avec les paramètres URL et contrôler la fenêtre de chat par programmation.
La FlowHunt JS API vous donne un contrôle total sur la façon dont votre chatbot s’intègre à votre site web. En utilisant le code d’intégration v2, vous pouvez intégrer le chatbot, vous abonner aux événements de cycle de vie et d’interaction, transmettre des données dynamiques via des variables de flux, suivre les interactions avec des paramètres URL et contrôler la fenêtre de chat par programmation.
Ce guide couvre tous les aspects de la JS API avec des exemples de code que vous pouvez copier et adapter à votre projet.
Lorsque vous créez un chatbot dans FlowHunt, vous obtenez un extrait de code d’intégration. Copiez-le et collez-le dans votre HTML juste avant la balise fermante </body> :
<script id="fh-chatbot-script-YOUR_CHATBOT_ID">
var currentScript = document.currentScript
|| document.getElementById('fh-chatbot-script-YOUR_CHATBOT_ID');
var script = document.createElement('script');
script.async = true;
script.src = 'https://app.flowhunt.io/api/chatbot/YOUR_CHATBOT_ID'
+ '?workspace_id=YOUR_WORKSPACE_ID&v=2';
script.onload = function() {
window.FHChatbot_YOUR_CHATBOT_ID.init(function(chatbotManager) {
// The chatbot is ready — use chatbotManager here
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
Remplacez YOUR_CHATBOT_ID et YOUR_WORKSPACE_ID par les valeurs de votre tableau de bord FlowHunt. L’ID du chatbot dans le nom de la variable globale (window.FHChatbot_YOUR_CHATBOT_ID) utilise des underscores au lieu de tirets.
Avant d’appeler init(), vous pouvez remplacer les paramètres par défaut du chatbot en utilisant setConfig() :
<script id="fh-chatbot-script-YOUR_CHATBOT_ID">
var currentScript = document.currentScript
|| document.getElementById('fh-chatbot-script-YOUR_CHATBOT_ID');
var script = document.createElement('script');
script.async = true;
script.src = 'https://app.flowhunt.io/api/chatbot/YOUR_CHATBOT_ID'
+ '?workspace_id=YOUR_WORKSPACE_ID&v=2';
script.onload = function() {
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
headerTitle: 'Support Assistant',
maxWindowWidth: '700px',
showChatButton: false,
flowVariables: {
userId: '12345',
plan: 'enterprise'
},
urlSuffix: '?utm_source=chatbot'
});
window.FHChatbot_YOUR_CHATBOT_ID.init(function(chatbotManager) {
// Chatbot initialized with custom config
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
| Option | Type | Description |
|---|---|---|
headerTitle | string | Texte personnalisé du titre de l’en-tête |
maxWindowWidth | string | Largeur maximale de la fenêtre de chat (par exemple, '700px') |
maxWindowHeight | string | Hauteur maximale de la fenêtre de chat |
inputPlaceholder | string | Texte d’espace réservé pour le champ de saisie des messages |
showChatButton | boolean | Afficher ou masquer le bouton de chat flottant par défaut |
openChatPanel | boolean | Ouvrir automatiquement le panneau de chat au chargement de la page |
flowVariables | object | Paires clé-valeur de données personnalisées transmises au flux |
urlSuffix | string | Chaîne de requête ajoutée à toutes les URL générées par le chatbot |
cookieConsent | boolean | Activer la persistance de session via les cookies |
embedded | string | Activer le mode intégré (pas de bouton de fermeture) |
theme | string | Mode de thème |
Les variables de flux vous permettent d’envoyer des données personnalisées depuis votre site web vers le flux du chatbot. Cela permet des conversations personnalisées en fonction du contexte utilisateur.
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
flowVariables: {
userId: getCurrentUserId(),
userEmail: getCurrentUserEmail(),
currentPage: window.location.pathname,
plan: 'enterprise'
}
});
Une fois définies, ces variables sont accessibles dans la logique du flux de votre chatbot, vous permettant de personnaliser les réponses, d’orienter les conversations ou de transmettre du contexte aux agents IA.
Le paramètre urlSuffix ajoute une chaîne de requête à chaque URL générée par le chatbot. Ceci est utile pour suivre le trafic provenant du chatbot dans les outils d’analyse :
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
urlSuffix: '?utm_source=chatbot&utm_medium=widget'
});
Cas d’utilisation :
La FlowHunt JS API envoie 10 événements personnalisés sur l’objet window. Tous les événements utilisent l’API CustomEvent
avec bubbles: true et composed: true.
Déclenché lorsque le widget du chatbot est entièrement rendu et prêt à être utilisé.
Déclenché lorsqu’une nouvelle session de chat est créée sur le serveur. Se déclenche également lors du redémarrage de la session.
Déclenché lorsque l’utilisateur ouvre la fenêtre de chat.
Déclenché lorsque l’utilisateur ferme la fenêtre de chat.
Déclenché lorsque l’utilisateur envoie un message.
event.detail.metadata) :{
"content": "Hello, I need help with...",
"createdAt": "2026-02-19T10:30:00.000Z"
}
Déclenché lorsque le chatbot reçoit et affiche une réponse.
event.detail.metadata) :{
"flow_id": "abc123",
"message_id": "msg_456",
"message": "Sure, I can help you with that!",
"sender": {
"sender_name": "Support Agent",
"sender_avatar": "https://example.com/avatar.png"
}
}
Le champ sender est optionnel et n’est présent que lorsqu’un agent humain est impliqué.
Déclenché lorsque l’utilisateur soumet des données de formulaire via le chatbot.
event.detail.metadata) :{
"objectData": { "name": "John", "email": "john@example.com" },
"createdAt": "2026-02-19T10:31:00.000Z"
}
Déclenché lorsqu’un utilisateur donne un avis positif ou négatif sur un message du chatbot.
event.detail.metadata) :{
"message_id": "msg_456",
"content": "Optional feedback text",
"feedback": "P"
}
La valeur de feedback est "P" pour positif (pouce en haut) ou "N" pour négatif (pouce en bas).
Déclenché lorsqu’un outil ou une action est exécuté pendant le traitement du flux.
event.detail.metadata) :{
"metadata": {
"flow_id": "abc123",
"message_id": "msg_789",
"message": "Calling search API..."
},
"createdAt": "2026-02-19T10:32:00.000Z"
}
Note : Déclenché uniquement dans les modes flowAssistant et flowAssistantV3, pas en mode chatbot standard.
Déclenché lorsqu’une erreur survient pendant le fonctionnement du chatbot.
event.detail.metadata) :{
"metadata": {
"flow_id": "abc123",
"message_id": "msg_err",
"message": "Flow execution failed"
},
"createdAt": "2026-02-19T10:33:00.000Z"
}
Il existe deux façons de s’abonner aux événements du chatbot.
Utilisez window.addEventListener n’importe où dans votre page. Cela fonctionne même avant le chargement du chatbot :
<script>
document.addEventListener('DOMContentLoaded', function() {
// Chatbot lifecycle events
window.addEventListener('onFHChatbotReady', function(event) {
console.log('Chatbot is ready');
});
window.addEventListener('onFHChatbotSessionCreated', function(event) {
console.log('Session created');
});
window.addEventListener('onFHChatbotWindowOpened', function(event) {
console.log('Chat window opened');
});
window.addEventListener('onFHChatbotWindowClosed', function(event) {
console.log('Chat window closed');
});
// Message events
window.addEventListener('onFHMessageSent', function(event) {
console.log('User sent:', event.detail.metadata.content);
});
window.addEventListener('onFHMessageReceived', function(event) {
console.log('Bot replied:', event.detail.metadata.message);
});
window.addEventListener('onFHFormDataSent', function(event) {
console.log('Form submitted:', event.detail.metadata.objectData);
});
// Feedback
window.addEventListener('onFHFeedback', function(event) {
var feedback = event.detail.metadata;
console.log('Feedback on message', feedback.message_id, ':',
feedback.feedback);
});
// Tool calls (flowAssistant modes only)
window.addEventListener('onFHToolCall', function(event) {
console.log('Tool called:', event.detail.metadata);
});
// Errors
window.addEventListener('onFHError', function(event) {
console.error('Chatbot error:', event.detail.metadata);
});
});
</script>
Pour cesser d’écouter un événement, utilisez removeEventListener avec la même référence de fonction :
var handleMessage = function(event) {
console.log(event.detail.metadata);
};
window.addEventListener('onFHMessageReceived', handleMessage);
// Later, when you want to stop listening:
window.removeEventListener('onFHMessageReceived', handleMessage);
À l’intérieur du callback init(), utilisez les méthodes intégrées du gestionnaire de chatbot :
window.FHChatbot_YOUR_CHATBOT_ID.init(function(chatbotManager) {
chatbotManager.onSessionCreated(function() {
console.log('Session created');
});
chatbotManager.onWindowOpened(function() {
console.log('Window opened');
});
chatbotManager.onWindowClosed(function() {
console.log('Window closed');
});
chatbotManager.onMessageSent(function(event) {
console.log('User sent:', event.metadata);
});
chatbotManager.onMessageReceived(function(event) {
console.log('Bot replied:', event.metadata);
});
chatbotManager.onFormDataSent(function(event) {
console.log('Form data:', event.metadata);
});
chatbotManager.onFeedback(function(event) {
console.log('Feedback:', event.metadata);
});
chatbotManager.onToolCall(function(event) {
console.log('Tool call:', event.metadata);
});
chatbotManager.onError(function(event) {
console.error('Error:', event.metadata);
});
});
| Method | Parameters | Description |
|---|---|---|
onSessionCreated(fn) | fn: () => void | Écouter la création de session |
onWindowOpened(fn) | fn: () => void | Écouter l’ouverture de la fenêtre |
onWindowClosed(fn) | fn: () => void | Écouter la fermeture de la fenêtre |
onMessageSent(fn) | fn: (event) => void | Écouter les messages de l’utilisateur |
onMessageReceived(fn) | fn: (event) => void | Écouter les réponses du bot |
onFormDataSent(fn) | fn: (event) => void | Écouter les soumissions de formulaires |
onFeedback(fn) | fn: (event) => void | Écouter les retours de l’utilisateur |
onToolCall(fn) | fn: (event) => void | Écouter les exécutions d’outils |
onError(fn) | fn: (event) => void | Écouter les erreurs |
openChat() | — | Ouvre le panneau de chat |
closeChat() | — | Ferme le panneau de chat |
Pour contrôler entièrement quand le chatbot apparaît, masquez le bouton flottant par défaut et ouvrez le chat par programmation — par exemple, depuis votre propre bouton personnalisé.
<!-- Your custom chat button -->
<button id="my-chat-button">Chat with us</button>
<!-- FlowHunt integration with hidden default button -->
<script id="fh-chatbot-script-YOUR_CHATBOT_ID">
var currentScript = document.currentScript
|| document.getElementById('fh-chatbot-script-YOUR_CHATBOT_ID');
var script = document.createElement('script');
script.async = true;
script.src = 'https://app.flowhunt.io/api/chatbot/YOUR_CHATBOT_ID'
+ '?workspace_id=YOUR_WORKSPACE_ID&v=2';
script.onload = function() {
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
showChatButton: false
});
window.FHChatbot_YOUR_CHATBOT_ID.init(function(chatbotManager) {
// Open chat when your custom button is clicked
document.getElementById('my-chat-button')
.addEventListener('click', function() {
chatbotManager.openChat();
});
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
Vous pouvez combiner l’activation masquée avec des écouteurs d’événements pour créer des interactions avancées :
<button id="open-chat" style="display:none;">Need help?</button>
<script>
// Show a custom button only when the chatbot is ready
window.addEventListener('onFHChatbotReady', function() {
document.getElementById('open-chat').style.display = 'block';
});
</script>
<!-- FlowHunt integration -->
<script id="fh-chatbot-script-YOUR_CHATBOT_ID">
var currentScript = document.currentScript
|| document.getElementById('fh-chatbot-script-YOUR_CHATBOT_ID');
var script = document.createElement('script');
script.async = true;
script.src = 'https://app.flowhunt.io/api/chatbot/YOUR_CHATBOT_ID'
+ '?workspace_id=YOUR_WORKSPACE_ID&v=2';
script.onload = function() {
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
showChatButton: false
});
window.FHChatbot_YOUR_CHATBOT_ID.init(function(chatbotManager) {
document.getElementById('open-chat')
.addEventListener('click', function() {
chatbotManager.openChat();
});
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
Un exemple fonctionnel complet qui démontre les remplacements de configuration, le suivi des événements et l’activation personnalisée du chat ensemble :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>FlowHunt Chatbot Integration</title>
</head>
<body>
<h1>My Website</h1>
<button id="open-chat-btn">Talk to our AI assistant</button>
<button id="close-chat-btn">Close chat</button>
<!-- Subscribe to events before the chatbot loads -->
<script>
document.addEventListener('DOMContentLoaded', function() {
window.addEventListener('onFHChatbotReady', function() {
console.log('Chatbot widget is ready');
});
window.addEventListener('onFHChatbotSessionCreated', function() {
console.log('New chat session started');
});
window.addEventListener('onFHMessageSent', function(event) {
console.log('User message:', event.detail.metadata.content);
});
window.addEventListener('onFHMessageReceived', function(event) {
console.log('Bot response:', event.detail.metadata.message);
});
window.addEventListener('onFHFeedback', function(event) {
var fb = event.detail.metadata;
if (fb.feedback === 'P') {
console.log('Positive feedback on message', fb.message_id);
} else {
console.log('Negative feedback on message', fb.message_id);
}
});
window.addEventListener('onFHError', function(event) {
console.error('Chatbot error:', event.detail.metadata);
});
});
</script>
<!-- FlowHunt integration -->
<script id="fh-chatbot-script-YOUR_CHATBOT_ID">
var currentScript = document.currentScript
|| document.getElementById('fh-chatbot-script-YOUR_CHATBOT_ID');
var script = document.createElement('script');
script.async = true;
script.src = 'https://app.flowhunt.io/api/chatbot/YOUR_CHATBOT_ID'
+ '?workspace_id=YOUR_WORKSPACE_ID&v=2';
script.onload = function() {
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
showChatButton: false,
headerTitle: 'AI Assistant',
maxWindowWidth: '600px',
flowVariables: {
source: 'website',
page: window.location.pathname
},
urlSuffix: '?utm_source=chatbot'
});
window.FHChatbot_YOUR_CHATBOT_ID.init(function(chatbotManager) {
document.getElementById('open-chat-btn')
.addEventListener('click', function() {
chatbotManager.openChat();
});
document.getElementById('close-chat-btn')
.addEventListener('click', function() {
chatbotManager.closeChat();
});
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
</body>
</html>

FlowHunt s'intègre à vos outils de service client et de productivité préférés afin que vous puissiez profiter de chatbots IA et d'automatisation partout. Parcou...

Un guide complet pour configurer les messages de bienvenue du chatbot et comprendre l'expérience d’onboarding FlowHunt pour les nouveaux utilisateurs, incluant ...

Intégrez les chatbots IA FlowHunt avec Tawk.to pour un transfert humain intelligent. Laissez l'IA gérer les requêtes courantes et transférez facilement les util...
Consentement aux Cookies
Nous utilisons des cookies pour améliorer votre expérience de navigation et analyser notre trafic. See our privacy policy.