
MCP-PIF-CLJS
Integrieren Sie FlowHunt mit MCP-PIF-CLJS, einem sich selbst modifizierenden Model Context Protocol Server, entwickelt in ClojureScript. Ermöglichen Sie KI-Agen...

Vollständige Referenz für die FlowHunt JS API v2-Integration. Erfahren Sie, wie Sie den Chatbot einbetten, alle 10 Events abonnieren, Flow-Variablen verwenden, Interaktionen mit URL-Parametern verfolgen und das Chat-Fenster programmatisch steuern.
Die FlowHunt JS API gibt Ihnen die volle Kontrolle darüber, wie sich Ihr Chatbot in Ihre Website integriert. Mit dem v2-Integrationscode können Sie den Chatbot einbetten, Lebenszyklus- und Interaktions-Events abonnieren, dynamische Daten über Flow-Variablen übergeben, Interaktionen mit URL-Parametern verfolgen und das Chat-Fenster programmatisch steuern.
Dieser Leitfaden behandelt jeden Aspekt der JS API mit Codebeispielen, die Sie kopieren und an Ihr Projekt anpassen können.
Wenn Sie einen Chatbot in FlowHunt erstellen, erhalten Sie ein Integrations-Snippet. Kopieren Sie es und fügen Sie es in Ihr HTML direkt vor dem schließenden </body>-Tag ein:
<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>
Ersetzen Sie YOUR_CHATBOT_ID und YOUR_WORKSPACE_ID durch die Werte aus Ihrem FlowHunt-Dashboard. Die Chatbot-ID im globalen Variablennamen (window.FHChatbot_YOUR_CHATBOT_ID) verwendet Unterstriche anstelle von Bindestrichen.
Bevor Sie init() aufrufen, können Sie die Standard-Chatbot-Einstellungen mit setConfig() überschreiben:
<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 | Beschreibung |
|---|---|---|
headerTitle | string | Benutzerdefinierter Header-Titeltext |
maxWindowWidth | string | Maximale Breite des Chat-Fensters (z. B. '700px') |
maxWindowHeight | string | Maximale Höhe des Chat-Fensters |
inputPlaceholder | string | Platzhaltertext für das Nachrichteneingabefeld |
showChatButton | boolean | Standard-Schwebenden-Chat-Button anzeigen oder ausblenden |
openChatPanel | boolean | Chat-Panel beim Seitenaufruf automatisch öffnen |
flowVariables | object | Schlüssel-Wert-Paare mit benutzerdefinierten Daten, die an den Flow übergeben werden |
urlSuffix | string | Abfragezeichenfolge, die an alle vom Chatbot generierten URLs angehängt wird |
cookieConsent | boolean | Sitzungspersistenz über Cookies aktivieren |
embedded | string | Eingebetteten Modus aktivieren (kein Schließen-Button) |
theme | string | Designmodus |
Flow-Variablen ermöglichen es Ihnen, benutzerdefinierte Daten von Ihrer Website in den Chatbot-Flow zu senden. Dies ermöglicht personalisierte Gespräche basierend auf dem Benutzerkontext.
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
flowVariables: {
userId: getCurrentUserId(),
userEmail: getCurrentUserEmail(),
currentPage: window.location.pathname,
plan: 'enterprise'
}
});
Einmal festgelegt, sind diese Variablen in Ihrer Chatbot-Flow-Logik zugänglich, sodass Sie Antworten personalisieren, Gespräche weiterleiten oder Kontext an KI-Agenten übergeben können.
Der Parameter urlSuffix hängt eine Abfragezeichenfolge an jede vom Chatbot generierte URL an. Dies ist nützlich, um chatbot-bezogenen Traffic in Analysetools zu verfolgen:
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
urlSuffix: '?utm_source=chatbot&utm_medium=widget'
});
Anwendungsfälle:
Die FlowHunt JS API löst 10 benutzerdefinierte Events auf dem window-Objekt aus. Alle Events verwenden die CustomEvent
-API mit bubbles: true und composed: true.
Wird ausgelöst, wenn das Chatbot-Widget vollständig gerendert und einsatzbereit ist.
Wird ausgelöst, wenn eine neue Chat-Sitzung auf dem Server erstellt wird. Wird auch beim Neustart der Sitzung ausgelöst.
Wird ausgelöst, wenn der Benutzer das Chat-Fenster öffnet.
Wird ausgelöst, wenn der Benutzer das Chat-Fenster schließt.
Wird ausgelöst, wenn der Benutzer eine Nachricht sendet.
event.detail.metadata):{
"content": "Hello, I need help with...",
"createdAt": "2026-02-19T10:30:00.000Z"
}
Wird ausgelöst, wenn der Chatbot eine Antwort empfängt und anzeigt.
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"
}
}
Das Feld sender ist optional und nur vorhanden, wenn ein menschlicher Agent beteiligt ist.
Wird ausgelöst, wenn der Benutzer Formulardaten über den Chatbot übermittelt.
event.detail.metadata):{
"objectData": { "name": "John", "email": "john@example.com" },
"createdAt": "2026-02-19T10:31:00.000Z"
}
Wird ausgelöst, wenn ein Benutzer eine Daumen-hoch- oder Daumen-runter-Bewertung zu einer Chatbot-Nachricht abgibt.
event.detail.metadata):{
"message_id": "msg_456",
"content": "Optional feedback text",
"feedback": "P"
}
Der Wert von feedback ist "P" für positiv (Daumen hoch) oder "N" für negativ (Daumen runter).
Wird ausgelöst, wenn ein Tool oder eine Aktion während der Flow-Verarbeitung ausgeführt wird.
event.detail.metadata):{
"metadata": {
"flow_id": "abc123",
"message_id": "msg_789",
"message": "Calling search API..."
},
"createdAt": "2026-02-19T10:32:00.000Z"
}
Hinweis: Wird nur in den Modi flowAssistant und flowAssistantV3 ausgelöst, nicht im Standard-Chatbot-Modus.
Wird ausgelöst, wenn während des Chatbot-Betriebs ein Fehler auftritt.
event.detail.metadata):{
"metadata": {
"flow_id": "abc123",
"message_id": "msg_err",
"message": "Flow execution failed"
},
"createdAt": "2026-02-19T10:33:00.000Z"
}
Es gibt zwei Möglichkeiten, Chatbot-Events zu abonnieren.
Verwenden Sie window.addEventListener überall auf Ihrer Seite. Dies funktioniert auch, bevor der Chatbot geladen wurde:
<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>
Um ein Event nicht mehr abzuhören, verwenden Sie removeEventListener mit derselben Funktionsreferenz:
var handleMessage = function(event) {
console.log(event.detail.metadata);
};
window.addEventListener('onFHMessageReceived', handleMessage);
// Later, when you want to stop listening:
window.removeEventListener('onFHMessageReceived', handleMessage);
Innerhalb des init()-Callbacks verwenden Sie die integrierten Methoden des Chatbot-Managers:
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 | Beschreibung |
|---|---|---|
onSessionCreated(fn) | fn: () => void | Auf Sitzungserstellung lauschen |
onWindowOpened(fn) | fn: () => void | Auf Fensteröffnung lauschen |
onWindowClosed(fn) | fn: () => void | Auf Fensterschließung lauschen |
onMessageSent(fn) | fn: (event) => void | Auf Benutzernachrichten lauschen |
onMessageReceived(fn) | fn: (event) => void | Auf Bot-Antworten lauschen |
onFormDataSent(fn) | fn: (event) => void | Auf Formularübermittlungen lauschen |
onFeedback(fn) | fn: (event) => void | Auf Benutzerfeedback lauschen |
onToolCall(fn) | fn: (event) => void | Auf Tool-Ausführungen lauschen |
onError(fn) | fn: (event) => void | Auf Fehler lauschen |
openChat() | — | Öffnet das Chat-Panel |
closeChat() | — | Schließt das Chat-Panel |
Um vollständig zu kontrollieren, wann der Chatbot erscheint, blenden Sie den standardmäßigen schwebenden Button aus und öffnen Sie den Chat programmatisch — zum Beispiel über Ihren eigenen benutzerdefinierten Button.
<!-- 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>
Sie können die versteckte Aktivierung mit Event-Listenern kombinieren, um erweiterte Interaktionen zu erstellen:
<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>
Ein vollständiges Arbeitsbeispiel, das Konfigurationsüberschreibungen, Event-Tracking und benutzerdefinierte Chat-Aktivierung zusammen demonstriert:
<!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>

Integrieren Sie FlowHunt mit MCP-PIF-CLJS, einem sich selbst modifizierenden Model Context Protocol Server, entwickelt in ClojureScript. Ermöglichen Sie KI-Agen...

Integrieren Sie FlowHunt mit interactive-mcp, um eine sichere, Echtzeit-Kommunikation zwischen großen Sprachmodellen und Nutzern auf lokalen Maschinen zu ermögl...

FlowHunt integriert sich mit Ihren bevorzugten Kundenservice- und Produktivitätstools, sodass Sie KI-Chatbots und Automatisierung überall nutzen können. Durchst...
Cookie-Zustimmung
Wir verwenden Cookies, um Ihr Surferlebnis zu verbessern und unseren Datenverkehr zu analysieren. See our privacy policy.