
Integracje
FlowHunt integruje się z Twoimi ulubionymi narzędziami do obsługi klienta i produktywności, dzięki czemu możesz korzystać z chatbotów AI i automatyzacji gdzieko...

Kompletna dokumentacja integracji FlowHunt JS API v2. Dowiedz sie, jak osadzic chatbota, subskrybowac wszystkie 10 zdarzen, uzywac zmiennych przeplywu, sledzic interakcje za pomoca parametrow URL i programowo sterowac oknem czatu.
FlowHunt JS API daje pelna kontrole nad sposobem integracji chatbota z Twoja strona internetowa. Korzystajac z kodu integracyjnego v2, mozesz osadzic chatbota, subskrybowac zdarzenia cyklu zycia i interakcji, przekazywac dynamiczne dane za pomoca zmiennych przeplywu, sledzic interakcje za pomoca parametrow URL i programowo sterowac oknem czatu.
Ten przewodnik obejmuje kazdy aspekt JS API z przykladami kodu, ktore mozesz skopiowac i dostosowac do swojego projektu.
Po utworzeniu chatbota w FlowHunt otrzymujesz fragment kodu integracyjnego. Skopiuj go i wklej do swojego HTML tuz przed zamykajacym tagiem </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>
Zastap YOUR_CHATBOT_ID i YOUR_WORKSPACE_ID wartosciami z panelu FlowHunt. Identyfikator chatbota w nazwie zmiennej globalnej (window.FHChatbot_YOUR_CHATBOT_ID) uzywa podkreslnikow zamiast myslnikow.
Przed wywolaniem init() mozesz nadpisac domyslne ustawienia chatbota za pomoca 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 | Opis |
|---|---|---|
headerTitle | string | Niestandardowy tekst naglowka |
maxWindowWidth | string | Maksymalna szerokosc okna czatu (np. '700px') |
maxWindowHeight | string | Maksymalna wysokosc okna czatu |
inputPlaceholder | string | Tekst zastepczy pola wiadomosci |
showChatButton | boolean | Pokaz lub ukryj domyslny plywajacy przycisk czatu |
openChatPanel | boolean | Automatycznie otworz panel czatu przy ladowaniu strony |
flowVariables | object | Pary klucz-wartosc z niestandardowymi danymi przekazywanymi do przeplywu |
urlSuffix | string | Ciag zapytania dolaczany do wszystkich URL-i generowanych przez chatbota |
cookieConsent | boolean | Wlacz trwalosc sesji za pomoca plikow cookie |
embedded | string | Ustaw, aby wlaczyc tryb osadzony (bez przycisku zamykania) |
theme | string | Tryb motywu |
Zmienne przeplywu umozliwiaja wysylanie niestandardowych danych z Twojej strony internetowej do przeplywu chatbota. Pozwala to na personalizowane rozmowy oparte na kontekscie uzytkownika.
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
flowVariables: {
userId: getCurrentUserId(),
userEmail: getCurrentUserEmail(),
currentPage: window.location.pathname,
plan: 'enterprise'
}
});
Po ustawieniu zmienne te sa dostepne w logice przeplywu chatbota, co umozliwia personalizowanie odpowiedzi, kierowanie rozmow lub przekazywanie kontekstu do agentow AI.
Parametr urlSuffix dolacza ciag zapytania do kazdego URL-a generowanego przez chatbota. Jest to przydatne do sledzenia ruchu generowanego przez chatbota w narzeddziach analitycznych:
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
urlSuffix: '?utm_source=chatbot&utm_medium=widget'
});
Przypadki uzycia:
FlowHunt JS API wysyla 10 niestandardowych zdarzen na obiekcie window. Wszystkie zdarzenia uzywaja API CustomEvent
z ustawieniami bubbles: true i composed: true.
Uruchamiane, gdy widget chatbota zostal w pelni wyrenderowany i jest gotowy do uzycia.
Uruchamiane, gdy na serwerze tworzona jest nowa sesja czatu. Uruchamiane rowniez przy ponownym uruchomieniu sesji.
Uruchamiane, gdy uzytkownik otwiera okno czatu.
Uruchamiane, gdy uzytkownik zamyka okno czatu.
Uruchamiane, gdy uzytkownik wysyla wiadomosc.
event.detail.metadata):{
"content": "Hello, I need help with...",
"createdAt": "2026-02-19T10:30:00.000Z"
}
Uruchamiane, gdy chatbot odbiera i wyswietla odpowiedz.
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"
}
}
Pole sender jest opcjonalne i wystepuje tylko wtedy, gdy zaangazowany jest ludzki agent.
Uruchamiane, gdy uzytkownik przesyla dane formularza przez chatbota.
event.detail.metadata):{
"objectData": { "name": "John", "email": "john@example.com" },
"createdAt": "2026-02-19T10:31:00.000Z"
}
Uruchamiane, gdy uzytkownik daje ocene kciuk w gore lub kciuk w dol na wiadomosc chatbota.
event.detail.metadata):{
"message_id": "msg_456",
"content": "Optional feedback text",
"feedback": "P"
}
Wartosc feedback to "P" dla pozytywnej opinii (kciuk w gore) lub "N" dla negatywnej (kciuk w dol).
Uruchamiane, gdy narzedzie lub akcja jest wykonywana podczas przetwarzania przeplywu.
event.detail.metadata):{
"metadata": {
"flow_id": "abc123",
"message_id": "msg_789",
"message": "Calling search API..."
},
"createdAt": "2026-02-19T10:32:00.000Z"
}
Uwaga: Uruchamiane tylko w trybach flowAssistant i flowAssistantV3, nie w standardowym trybie chatbota.
Uruchamiane, gdy podczas dzialania chatbota wystapi blad.
event.detail.metadata):{
"metadata": {
"flow_id": "abc123",
"message_id": "msg_err",
"message": "Flow execution failed"
},
"createdAt": "2026-02-19T10:33:00.000Z"
}
Istnieja dwa sposoby subskrybowania zdarzen chatbota.
Uzyj window.addEventListener w dowolnym miejscu swojej strony. Dziala to nawet przed zaladowaniem chatbota:
<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>
Aby przestac nasluchiwac zdarzenia, uzyj removeEventListener z ta sama referencja funkcji:
var handleMessage = function(event) {
console.log(event.detail.metadata);
};
window.addEventListener('onFHMessageReceived', handleMessage);
// Later, when you want to stop listening:
window.removeEventListener('onFHMessageReceived', handleMessage);
Wewnatrz callbacku init() uzyj wbudowanych metod menedzera chatbota:
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 | Opis |
|---|---|---|
onSessionCreated(fn) | fn: () => void | Nasluchuj tworzenia sesji |
onWindowOpened(fn) | fn: () => void | Nasluchuj otwierania okna |
onWindowClosed(fn) | fn: () => void | Nasluchuj zamykania okna |
onMessageSent(fn) | fn: (event) => void | Nasluchuj wiadomosci uzytkownika |
onMessageReceived(fn) | fn: (event) => void | Nasluchuj odpowiedzi bota |
onFormDataSent(fn) | fn: (event) => void | Nasluchuj wysylania formularzy |
onFeedback(fn) | fn: (event) => void | Nasluchuj opinii uzytkownikow |
onToolCall(fn) | fn: (event) => void | Nasluchuj wykonan narzedzi |
onError(fn) | fn: (event) => void | Nasluchuj bledow |
openChat() | — | Otwiera panel czatu |
closeChat() | — | Zamyka panel czatu |
Aby w pelni kontrolowac, kiedy chatbot sie pojawia, ukryj domyslny plywajacy przycisk i otworz czat programowo — na przyklad z wlasnego niestandardowego przycisku.
<!-- 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>
Mozesz polaczyc ukryta aktywacje z nasluchiwaczami zdarzen, aby tworzyc zaawansowane interakcje:
<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>
Pelny dzialajacy przyklad demonstrujacy nadpisywanie konfiguracji, sledzenie zdarzen i niestandardowa aktywacje czatu w jednym:
<!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 integruje się z Twoimi ulubionymi narzędziami do obsługi klienta i produktywności, dzięki czemu możesz korzystać z chatbotów AI i automatyzacji gdzieko...

Dowiedz się, jak stworzyć chatbota do generowania leadów za pomocą FlowHunt i zintegrować go z HubSpot, aby zautomatyzować pozyskiwanie, kwalifikację leadów ora...

Zintegruj FlowHunt z interactive-mcp, aby umożliwić bezpieczną, interaktywną komunikację w czasie rzeczywistym między dużymi modelami językowymi a użytkownikami...