
Kuinka luoda FlowHunt AI Chatbot Shopifylle
Vaiheittainen opas FlowHuntin integrointiin Shopifyhin, Shopify-chatbotin lisäämiseen Flow-kirjastosta, sen julkaisemiseen ja upottamiseen Shopify-verkkokauppaa...

Taydellinen viite FlowHunt JS API v2 -integraatioon. Upota chatbot, tilaa kaikki 11 tapahtumaa, kayta vuomuuttujia, laukaise Chat Hook -trigger keskella keskustelua sendHook()-metodilla, seuraa vuorovaikutuksia URL-parametreilla ja hallitse chat-ikkunaa ohjelmallisesti.
FlowHunt JS API antaa sinulle tayden hallinnan chatbotin integroimiseen verkkosivustollesi. Kayttamalla v2-integrointikoodia voit upottaa chatbotin, tilata elinkaari- ja vuorovaikutustapahtumia, valittaa dynaamista dataa vuomuuttujien kautta, laukaista Chat Hook -triggerin keskella keskustelua sendHook()-metodilla, seurata vuorovaikutuksia URL-parametreilla ja hallita chat-ikkunaa ohjelmallisesti.
Tama opas kattaa kaikki JS API:n osa-alueet koodiesimerkein, joita voit kopioida ja mukauttaa projektiisi.
Kopioi ja liita alla oleva koodinpatka HTML-koodiisi juuri ennen sulkevaa </body>-tagia. Korvaa YOUR_CHATBOT_ID ja YOUR_WORKSPACE_ID FlowHunt-chatbotin asetuksista loytyvilla arvoilla.
<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>
Chatbot-tunnus globaalissa muuttujanimessa (window.FHChatbot_YOUR_CHATBOT_ID) kayttaa alaviivoita tavuviivojen sijaan.
setConfig()-funktiollaEnnen init()-kutsua voit ylikirjoittaa chatbotin oletusasetukset setConfig()-funktiolla:
<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 initialised with custom config
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
| Asetus | Tyyppi | Kuvaus |
|---|---|---|
headerTitle | string | Mukautettu otsikkoteksti |
maxWindowWidth | string | Chat-ikkunan enimmaisleveys (esim. "700px") |
maxWindowHeight | string | Chat-ikkunan enimmaiskorkeus |
inputPlaceholder | string | Viestikentan paikkamerkkiteksti |
showChatButton | boolean | Nayta tai piilota oletuskelluva chat-painike |
openChatPanel | boolean | Avaa chat-paneeli automaattisesti sivun latautuessa |
flowVariables | object | Avain-arvo-parit mukautetusta datasta, joka valitetaan vuohon. Arvot voivat olla mita tahansa JSON-serialisoitavaa tyyppia (string, number, boolean, object, array). |
urlSuffix | string | Kyselymerkkijono, joka lisataan kaikkiin chatbotin luomiin URL-osoitteisiin |
cookieConsent | boolean | Ota kayttoon istunnon sailyttaminen evasteiden avulla |
embedded | string | Aseta upotettu tila kayttoon (ei sulje-painiketta) |
theme | string | Teematila |
flowVariables yhdistetaan jokaiseen chatbotin luomaan istuntoon. Niita kaytetaan tyypillisesti staattisena kontekstina (tunnetaan sivun latautuessa): kayttajan tunnus, tilaus, nykyinen lokaali jne.
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
flowVariables: {
userId: getCurrentUserId(),
userEmail: getCurrentUserEmail(),
currentPage: window.location.pathname,
plan: 'enterprise',
},
});
Jos kayttaja navigoi chatin avaamisen jalkeen, taalla valitetut arvot vanhenevat. Paivittaaksesi niita keskella keskustelua, kutsu
chatbotManager.sendHook()parametrillaoptions.flowVariables— katso Kommunikointi isantasivulta vuoon kesken keskustelun alla.
urlSuffix-parametri lisaa kyselymerkkijonon jokaiseen chatbotin luomaan URL-osoitteeseen. Tama on hyodyllista chatbot-lahtoisen liikenteen seurannassa analytiikkatyokaluissa:
window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
urlSuffix: '?utm_source=chatbot&utm_medium=widget',
});
Kayttotapaukset:
Lisatty huhtikuussa 2026 osana FlowHuntin Chat Hook -ominaisuutta.
Yhden sivun sovelluksissa (SPA) chat-ikkuna pysyy yleensa avoinna, kun kayttaja navigoi naytoilta toisille. Kun chat on kaynnissa, setConfig()-kautta valitetut flowVariables vanhenevat, eika ole tapaa kertoa vuolle isantasivulla tapahtuneista asioista. Yksi hallitsijan metodi — sendHook(name, payload, options?) — kattaa seka “laukaise trigger”- etta “vain paivita kontekstia” -kayttotapaukset:
name ja (valinnaisesti) payload laukaistaksesi vuon Chat Hook -triggerin. Vuon tekija pudottaa yhden Chat Hook -noden kankaalle ja haarauttaa {ChatHook.hook_name}-arvon perusteella paattaakseen, mita tehdaan.options.flowVariables yhdistaaksesi istuntomuuttujat samalla — arvot sailytetaan ennen triggerin laukeamista ja ne pysyvat kaytettavissa muulle istunnolle.options.flowVariables yhdistetaan silti, mutta yhtaan triggeria ei suoriteta eika krediitteja veloiteta. Tama tarkoittaa, etta isantasivut voivat kutsua sendHook()-metodia optimistisesti tietamatta, onko vuon tekija jo kytkenyt triggerin.sendHook() on turvallinen no-op ennen istunnon olemassaoloa (puskuroidaan sisaisesti ja huuhdellaan, kun istunto luodaan) eika koskaan heita poikkeusta isantasivulle — verkkovirheet kirjataan vain console.warn-kutsulla.
Palvelin- ja asiakaspuolen rajoitukset, jotka koskevat sendHook()-metodia. Niiden rikkominen ei kaada — backend palauttaa HTTP 422 ja hallitsija lokittaa console.warn-kutsulla heittamatta.
| Rajoite | Raja | Missa pakotetaan | Rikkoessa |
|---|---|---|---|
sendHook name -pituus | 1–256 merkkia | Backend (Pydantic) | HTTP 422, trigger ei laukea |
Avainten maara options.flowVariables-objektissa | ≤ 64 | Backend (Pydantic) | HTTP 422, mitaan ei sailyteta |
Kunkin avaimen pituus options.flowVariables-objektissa | ≤ 128 merkkia | Backend (Pydantic) | HTTP 422, mitaan ei sailyteta |
| Esiistuntokutsut hallitsijan puskurissa | 50 | Widget (selaimessa) | Vanhin jonossa oleva kutsu pudotetaan ja console.warn lokitetaan |
Esiistuntopuskurin yliraja merkitsee vain sivuilla, joilla istunnon luonti epaonnistuu loputtomiin (esim. pysyva verkkovirhe). Normaaleissa olosuhteissa jono huuhdellaan heti, kun onFHChatbotSessionCreated laukeaa.
onFHError-tapahtumalla).hook_name, payload, flow_variables) niihin alavirran vaiheisiin, jotka haluat laukaista (Generator, Chat Output, Tool Calls, ehdolliset haarat hook_name-arvon perusteella jne.).name, jonka isantasivu valittaa sendHook()-metodille, on etiketti, jonka perusteella vuosi haarautuu, ei reititysavain — backend ei vertaa nimia node-nimiin. Sen sijaan vuon yksi Chat Hook -trigger laukeaa ja paljastaa nimen muodossa {ChatHook.hook_name}, johon viittaat vuon logiikassa paattaaksesi, mita tehda.
Esimerkki system-promptista:
If {ChatHook.hook_name} is "screen_changed", briefly summarise the page at
{ChatHook.payload.url}. If it is "user_action", acknowledge the action and
update memory. Otherwise, continue the conversation normally.
Monimutkaisempaa reititysta varten kytke ehdollinen vaihe {ChatHook.hook_name}-arvolle ja haaraudu useisiin alavirran polkuihin.
chatbotManager.sendHook(name, payload, options?)chatbotManager.sendHook(
name: string,
payload?: Record<string, unknown>,
options?: { flowVariables?: Record<string, unknown> }
): Promise<void>;
Argumentit
| Argumentti | Tyyppi | Pakollinen | Kuvaus |
|---|---|---|---|
name | string | kylla | Etiketti, joka valitetaan vuolle muodossa {ChatHook.hook_name}. Trigger laukeaa arvosta riippumatta; vuon logiikkasi haarautuu sen perusteella. |
payload | object | ei | JSON-payload, joka valitetaan triggerille muodossa {ChatHook.payload}. Validoidaan noden skeemaa vasten, jos kaytossa. Oletus {}. |
options.flowVariables | object | ei | Istuntomuuttujat yhdistettavaksi ennen triggerin laukeamista. Kaytettavissa alavirran vaiheille ja tuleville kayttajaviesteille. |
Kayttaytyminen
onFHChatbotSessionCreated-tapahtumaa on turvallista; kutsu puskuroidaan ja huuhdellaan, kun istunto on olemassa. Puskurilla on yliraja — katso Syoterajat ylla.sendHook()-metodia optimistisesti ennen kuin vuon tekija on kytkenyt triggerin. options.flowVariables sailytetaan silti tassakin tapauksessa, joten sama kutsu toimii myos pelkkana kontekstipaivityksena.onFHError-tapahtumalla).name ja options.flowVariables ovat rajoitettuja — katso Syoterajat ylla. Rikkomukset palauttavat HTTP 422, eika mitaan sailyteta.onFHChatbotFlowVariablesUpdate-tapahtuman, jos options.flowVariables annettiin (katso Tapahtumaviite).console.warn-kutsulla.Esimerkki — proaktiivinen ehdotus SPA-navigoinnissa
window.FHChatbot_YOUR_CHATBOT_ID.init(function (chatbotManager) {
window.addEventListener('hashchange', function () {
chatbotManager.sendHook('screen_changed', {
url: window.location.href,
screen_name: getScreenName(),
}, {
flowVariables: { current_page_url: window.location.href },
});
});
});
Esimerkki — pelkka kontekstipaivitys (Chat Hook ei ole kytketty)
Jos vuolla ei ole Chat Hook -triggeria, kutsu on hiljainen 200 — joten sama API voi pitaa flow_variables-arvot synkassa laukaisematta mitaan:
window.FHChatbot_YOUR_CHATBOT_ID.init(function (chatbotManager) {
window.addEventListener('hashchange', function () {
chatbotManager.sendHook('navigate', {}, {
flowVariables: {
current_page_url: window.location.href,
screen_name: getScreenName(),
},
});
});
});
{ChatHook.hook_name} ja {ChatHook.payload.foo} — sendHook('x', { foo: 1 })-kutsulla valitetut arvot paljastetaan Chat Hook -triggerin suorituspolulla. Vain kaytettavissa polulla, jonka hook-laukaisu kaynnistaa.{flow_variables.foo} — options.flowVariables-kautta valitetut arvot yhdistetaan istunnon muuttujapankkiin ennen triggerin laukeamista. Jokainen suorituspolku (mukaan lukien tavalliset Chat Input -laukaisemat kayttajaviestit) voi lukea ne.Jos haluat seuraavan kayttajaviestin nakevan uuden arvon, laita se options.flowVariables-kenttaan — pelkka payload vaikuttaa vain siihen suoritusajoon, jonka kyseinen hook kaynnistaa.
FlowHunt JS API lahettaa 11 mukautettua tapahtumaa window-objektille. Kaikki tapahtumat kayttavat CustomEvent
-API:a asetuksilla bubbles: true ja composed: true.
onFHChatbotReadyLaukeaa, kun chatbot-widget on taydellisesti renderoitu ja valmis kaytettavaksi.
onFHChatbotSessionCreatedLaukeaa, kun uusi chat-istunto luodaan palvelimella.
event.detail.sessionId — juuri luodun istunnon tunnus.onFHChatbotWindowOpenedLaukeaa, kun kayttaja avaa chat-ikkunan. Ei laukea upotetussa tilassa.
onFHChatbotWindowClosedLaukeaa, kun kayttaja sulkee chat-ikkunan. Ei laukea upotetussa tilassa.
onFHMessageSentLaukeaa, kun kayttaja lahettaa viestin.
event.detail.metadata = {
content: 'Hello, I need help with...',
createdAt: '2026-02-19T10:30:00.000Z',
};
onFHMessageReceivedLaukeaa, kun chatbot vastaanottaa ja nayttaa vastauksen.
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',
},
};
sender on valinnainen ja esiintyy vain, kun ihmisagentti on mukana.
onFHFormDataSentLaukeaa, kun kayttaja lahettaa lomakedataa chatbotin kautta.
event.detail.metadata = {
objectData: { name: 'John', email: 'john@example.com' },
createdAt: '2026-02-19T10:31:00.000Z',
};
onFHFeedbackLaukeaa, kun kayttaja antaa peukku ylos- tai peukku alas -palautteen chatbot-viestista.
event.detail.metadata = {
message_id: 'msg_456',
content: 'Optional feedback text',
feedback: 'P', // 'P' = positive, 'N' = negative
};
onFHToolCallLaukeaa, kun tyokalu tai toiminto suoritetaan vuon kasittelyn aikana. Laukeaa vain flowAssistant- ja flowAssistantV3-tiloissa.
event.detail.metadata = {
metadata: {
flow_id: 'abc123',
message_id: 'msg_789',
message: 'Calling search API...',
},
createdAt: '2026-02-19T10:32:00.000Z',
};
onFHErrorLaukeaa, kun chatbotin toiminnan aikana tapahtuu virhe.
event.detail.metadata = {
metadata: {
flow_id: 'abc123',
message_id: 'msg_err',
message: 'Flow execution failed',
},
createdAt: '2026-02-19T10:33:00.000Z',
};
onFHChatbotFlowVariablesUpdateLisatty huhtikuussa 2026.
Laukeaa onnistuneen chatbotManager.sendHook(...)-kutsun jalkeen, joka antoi options.flowVariables-arvon. Ei laukea sendHook()-kutsuille, joista flowVariables puuttuu.
event.detail = {
variables: {
current_page_url: 'https://example.com/products',
screen_name: 'products',
},
};
Kayta sita havainnoidaksesi yhdistettyja muuttujia (esim. synkronoidaksesi oman isantasivun tilan, debuggausta varten tai paivittaaksesi UI-elementin, joka riippuu samasta datasta).
Chatbot-tapahtumien tilaamiseen on kaksi tapaa.
Kayta window.addEventListener-menetelmaa missa tahansa sivullasi. Tama toimii jopa ennen chatbotin latautumista:
<script>
document.addEventListener('DOMContentLoaded', function () {
window.addEventListener('onFHChatbotReady', function () {
console.log('Chatbot is ready');
});
window.addEventListener('onFHChatbotSessionCreated', function (event) {
console.log('Session created:', event.detail.sessionId);
});
window.addEventListener('onFHChatbotWindowOpened', function () {
console.log('Chat window opened');
});
window.addEventListener('onFHChatbotWindowClosed', function () {
console.log('Chat window closed');
});
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);
});
window.addEventListener('onFHFeedback', function (event) {
var fb = event.detail.metadata;
console.log('Feedback on message', fb.message_id, ':', fb.feedback);
});
window.addEventListener('onFHToolCall', function (event) {
console.log('Tool called:', event.detail.metadata);
});
window.addEventListener('onFHError', function (event) {
console.error('Chatbot error:', event.detail.metadata);
});
window.addEventListener('onFHChatbotFlowVariablesUpdate', function (event) {
console.log('Variables merged:', event.detail.variables);
});
});
</script>
Poistaaksesi kuuntelijan, sailyta kasittelijaviite:
var handleMessage = function (event) {
console.log(event.detail.metadata);
};
window.addEventListener('onFHMessageReceived', handleMessage);
// Later …
window.removeEventListener('onFHMessageReceived', handleMessage);
init()-callbackin sisalla kayta chatbot-hallitsijan sisaanrakennettuja metodeja:
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);
});
});
| Metodi | Parametrit | Kuvaus |
|---|---|---|
onSessionCreated(fn) | fn: () => void | Kuuntele istunnon luontia |
onWindowOpened(fn) | fn: () => void | Kuuntele ikkunan avaamista |
onWindowClosed(fn) | fn: () => void | Kuuntele ikkunan sulkemista |
onMessageSent(fn) | fn: (event) => void | Kuuntele kayttajaviesteja |
onMessageReceived(fn) | fn: (event) => void | Kuuntele bottivastauksia |
onFormDataSent(fn) | fn: (event) => void | Kuuntele lomakelahetyksia |
onFeedback(fn) | fn: (event) => void | Kuuntele kayttajapalautetta |
onToolCall(fn) | fn: (event) => void | Kuuntele tyokalujen suorituksia |
onError(fn) | fn: (event) => void | Kuuntele virheita |
openChat() | — | Avaa chat-paneelin |
closeChat() | — | Sulkee chat-paneelin |
sendHook(name, payload?, options?) (uusi) | name: string, payload?: object, options?: { flowVariables?: object } | Laukaisee Chat Hook -triggerin kaynnissa olevassa vuossa (tai yhdistaa options.flowVariables-arvot hiljaa, jos triggeria ei ole kytketty) |
Hallitaksesi taydellisesti chatbotin nayttamista, piilota oletuskelluva painike ja avaa chat ohjelmallisesti — esimerkiksi omasta mukautetusta painikkeestasi.
<button id="my-chat-button">Chat with us</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) {
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>
Voit yhdistaa piilotetun aktivoinnin tapahtumakuuntelijoihin luodaksesi edistyneita vuorovaikutuksia:
<button id="open-chat" style="display:none;">Need help?</button>
<script>
window.addEventListener('onFHChatbotReady', function () {
document.getElementById('open-chat').style.display = 'block';
});
</script>
<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>
Taydellinen toimiva esimerkki, joka esittelee asetusten ylikirjoituksia, tapahtumien seurantaa, mukautettua chat-aktivointia ja uutta sendHook()-metodia yhdessa:
<!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 (event) {
console.log('New chat session started:', event.detail.sessionId);
});
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('onFHChatbotFlowVariablesUpdate', function (event) {
console.log('Context updated:', event.detail.variables);
});
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',
current_page_url: window.location.href,
},
urlSuffix: '?utm_source=chatbot',
});
window.FHChatbot_YOUR_CHATBOT_ID.init(function (chatbotManager) {
// Open / close from custom buttons
document.getElementById('open-chat-btn')
.addEventListener('click', function () {
chatbotManager.openChat();
});
document.getElementById('close-chat-btn')
.addEventListener('click', function () {
chatbotManager.closeChat();
});
// Keep the flow's context in sync with SPA navigation and
// optionally fire the Chat Hook trigger (if the flow has one wired).
// If the flow has no Chat Hook, the call is a silent 200 — the
// flow_variables still get merged, so the same line covers both
// "notify the flow" and "just update context".
window.addEventListener('hashchange', function () {
chatbotManager.sendHook('screen_changed', {
url: window.location.href,
}, {
flowVariables: { current_page_url: window.location.href },
});
});
});
};
if (currentScript && currentScript.parentNode) {
currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
} else {
document.head.appendChild(script);
}
</script>
</body>
</html>

Vaiheittainen opas FlowHuntin integrointiin Shopifyhin, Shopify-chatbotin lisäämiseen Flow-kirjastosta, sen julkaisemiseen ja upottamiseen Shopify-verkkokauppaa...

FlowHunt 2.6.12 tuo mukanaan Slack-integraation, aieluokittelun ja Gemini-mallin, parantaen AI-chatbotin toiminnallisuutta, asiakasymmärrystä ja tiimin työnkulk...

Integroi FlowHunt AI -chatbotit Tawk.to-palveluun älykkäällä ihmisen siirtämisellä. Anna tekoälyn käsitellä rutiinikyselyt ja siirrä käyttäjät saumattomasti liv...
Evästeiden Suostumus
Käytämme evästeitä parantaaksemme selauskokemustasi ja analysoidaksemme liikennettämme. See our privacy policy.