Integrácia JS API

FlowHunt JavaScript API Chatbot Integration

FlowHunt JS API vám dáva plnú kontrolu nad tým, ako sa váš chatbot integruje s vašou webovou stránkou. Pomocou integračného kódu v2 môžete vložiť chatbot, prihlásiť sa na odber životného cyklu a interakčných udalostí, odosielať dynamické dáta cez premenné toku, spustiť trigger Chat Hook uprostred konverzácie pomocou sendHook(), sledovať interakcie cez URL parametre a programovo ovládať okno chatu.

Tento sprievodca pokrýva každý aspekt JS API s príkladmi kódu, ktoré môžete skopírovať a prispôsobiť svojmu projektu.

Integračný kód (v2)

Skopírujte a vložte nižšie uvedený snippet do svojho HTML tesne pred uzatváraciu značku </body>. Nahraďte YOUR_CHATBOT_ID a YOUR_WORKSPACE_ID hodnotami z nastavení vášho FlowHunt chatbota.

<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>

ID chatbota v názve globálnej premennej (window.FHChatbot_YOUR_CHATBOT_ID) používa podčiarkovníky namiesto pomlčiek.

Prepísanie konfigurácie pomocou setConfig()

Pred zavolaním init() môžete prepísať predvolené nastavenia chatbota pomocou 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 initialised with custom config
    });
  };

  if (currentScript && currentScript.parentNode) {
    currentScript.parentNode.insertBefore(script, currentScript.nextSibling);
  } else {
    document.head.appendChild(script);
  }
</script>

Dostupné konfiguračné možnosti

MožnosťTypPopis
headerTitlestringVlastný text nadpisu hlavičky
maxWindowWidthstringMaximálna šírka okna chatu (napr. "700px")
maxWindowHeightstringMaximálna výška okna chatu
inputPlaceholderstringZástupný text pre vstupné pole správy
showChatButtonbooleanZobraziť alebo skryť predvolené plávajúce tlačidlo chatu
openChatPanelbooleanAutomaticky otvoriť panel chatu pri načítaní stránky
flowVariablesobjectPáry kľúč–hodnota vlastných dát odoslaných do toku. Hodnoty môžu byť ľubovoľný typ serializovateľný do JSON (string, number, boolean, object, array).
urlSuffixstringReťazec dotazu pripojený ku všetkým URL generovaným chatbotom
cookieConsentbooleanPovoliť zachovanie relácie pomocou cookies
embeddedstringNastaviť pre povolenie vstavaného režimu (bez tlačidla zatvorenia)
themestringRežim témy

Premenné toku: Odosielanie dynamických dát

flowVariables sa zlučujú do každej relácie, ktorú chatbot vytvorí. Zvyčajne sa používajú ako statický kontext (známy pri načítaní stránky): ID používateľa, plán, aktuálne miestne nastavenia atď.

window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
  flowVariables: {
    userId: getCurrentUserId(),
    userEmail: getCurrentUserEmail(),
    currentPage: window.location.pathname,
    plan: 'enterprise',
  },
});

Ak používateľ naviguje po otvorení chatu, hodnoty odoslané týmto spôsobom sa stanú zastaranými. Ak ich chcete aktualizovať uprostred konverzácie, zavolajte chatbotManager.sendHook() s options.flowVariables — pozri Komunikácia hostiteľa → toku uprostred konverzácie nižšie.

URL Suffix: Sledovanie interakcií chatbota

Parameter urlSuffix pripojí reťazec dotazu ku každej URL generovanej chatbotom. To je užitočné na sledovanie návštevnosti pochádzajúcej z chatbota v analytických nástrojoch:

window.FHChatbot_YOUR_CHATBOT_ID.setConfig({
  urlSuffix: '?utm_source=chatbot&utm_medium=widget',
});

Príklady použitia:

  • Sledovanie konverzií z interakcií chatbota v Google Analytics.
  • Analýza správania používateľov po interakcii s chatbotom.
  • Priradenie kampaní, ktoré podporujú zapojenie chatbota.

Logo

Pripravení rozšíriť svoje podnikanie?

Začnite svoju 30-dňovú skúšobnú verziu ešte dnes a vidzte výsledky behom pár dní.

Komunikácia hostiteľa → toku uprostred konverzácie

Pridané v apríli 2026 ako súčasť funkcie FlowHunt Chat Hook.

V single-page aplikáciách okno chatu zvyčajne ostáva otvorené, kým používateľ naviguje medzi obrazovkami. Keď chat beží, hodnoty flowVariables odoslané cez setConfig() sa stanú zastaranými a neexistuje spôsob, ako tok upozorniť na niečo, čo sa stalo na hostiteľskej stránke. Jediná metóda managera — sendHook(name, payload, options?) — pokrýva oba prípady „spustiť trigger“ aj „len aktualizovať kontext“:

  • Odošlite name a (voliteľne) payload na spustenie triggera Chat Hook v toku. Autor toku umiestni jeden uzol Chat Hook na plátno a vetví sa podľa {ChatHook.hook_name}, aby rozhodol, čo urobiť.
  • Odošlite options.flowVariables na zlúčenie premenných relácie zároveň — hodnoty sa uložia pred spustením triggera a zostanú dostupné po zvyšok relácie.
  • Ak tok nemá trigger Chat Hook, volanie je tichý 200 no-op: options.flowVariables sa stále zlúči, ale žiadny trigger sa nespustí a žiadne kredity sa neúčtujú. To znamená, že hostiteľské stránky môžu volať sendHook() optimisticky bez toho, aby vedeli, či autor toku trigger už zapojil.

sendHook() je bezpečný no-op pred existenciou relácie (interne sa vyrovnáva v buffri a odošle sa, len čo je relácia vytvorená) a nikdy nevyhodí výnimku na hostiteľskej stránke — sieťové chyby sú zaznamenávané iba cez console.warn.

Vstupné limity

Limity na strane servera a klienta, ktoré platia pre sendHook(). Ich porušenie nie je crash — backend vráti HTTP 422 a manager loguje cez console.warn bez vyhodenia výnimky.

ObmedzenieLimitKde sa vynucujePri porušení
Dĺžka sendHook name1–256 znakovBackend (Pydantic)HTTP 422, trigger sa nespustí
Počet kľúčov v options.flowVariables≤ 64Backend (Pydantic)HTTP 422, nič sa neuloží
Dĺžka každého kľúča v options.flowVariables≤ 128 znakovBackend (Pydantic)HTTP 422, nič sa neuloží
Volania pred reláciou vyrovnávané managerom v buffri50Widget (v prehliadači)Najstaršie zaradené volanie sa zahodí a zaloguje console.warn

Limit buffra pred reláciou je dôležitý iba na stránkach, kde vytvorenie relácie zlyháva neobmedzene (napr. trvalá sieťová chyba). Za normálnych podmienok sa fronta odošle, len čo sa spustí onFHChatbotSessionCreated.

1. Pridanie triggera Chat Hook (strana autora toku)

  1. Otvorte tok asociovaný s vaším chatbotom v editore FlowHunt.
  2. Pretiahnite uzol triggera Chat Hook na plátno. Editor vynucuje jeden trigger na tok — viacero nie je povolených.
  3. (Voliteľne) Zapnite Validate Payload Schema a definujte JSON Schema, ktorému musí prichádzajúci payload zodpovedať. Validácia prebieha vnútri kroku — nezhoda sa prejaví ako udalosť chyby toku (endpoint stále vráti 200; chyba je viditeľná cez onFHError).
  4. Prepojte výstupy triggera (hook_name, payload, flow_variables) s ľubovoľnými následnými krokmi, ktoré chcete spustiť (Generator, Chat Output, Tool Calls, podmienené vetvy podľa hook_name atď.).
  5. Publikujte tok.

2. Vetvenie podľa rôznych názvov hookov vnútri toku

name, ktoré hostiteľská stránka odovzdá metóde sendHook(), je označenie pre vetvenie vo vašom toku, nie smerovací kľúč — backend nepriraďuje názvy k uzlom. Namiesto toho sa spustí jediný trigger Chat Hook v toku a sprístupní názov ako {ChatHook.hook_name}, ktorý odkazujete v logike svojho toku, aby ste rozhodli, čo urobiť.

Príklad systémového promptu:

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.

Pre zložitejšie smerovanie zapojte podmienený krok na {ChatHook.hook_name} a vetvte do viacerých následných ciest.

3. chatbotManager.sendHook(name, payload, options?)

chatbotManager.sendHook(
  name: string,
  payload?: Record<string, unknown>,
  options?: { flowVariables?: Record<string, unknown> }
): Promise<void>;

Argumenty

ArgumentTypPovinnýPopis
namestringánoOznačenie odovzdané do toku ako {ChatHook.hook_name}. Trigger sa spustí bez ohľadu na hodnotu; vaša logika toku sa podľa nej vetví.
payloadobjectnieJSON payload odovzdaný triggeru ako {ChatHook.payload}. Validovaný proti schéme uzla, ak je povolená. Predvolene {}.
options.flowVariablesobjectniePremenné relácie na zlúčenie pred spustením triggera. Dostupné pre následné kroky a budúce správy používateľa.

Správanie

  • Volanie pred onFHChatbotSessionCreated je bezpečné; volanie sa vyrovnáva v buffri a odošle, len čo relácia existuje. Buffer má limit — pozri Vstupné limity vyššie.
  • Ak tok nemá trigger Chat Hook, požiadavka je tichý 200 no-op — takže hostiteľské stránky môžu volať sendHook() optimisticky pred tým, ako autor toku zapojí trigger. options.flowVariables sa stále uloží aj v takom prípade, takže to isté volanie slúži ako aktualizácia iba kontextu.
  • Ak má trigger Chat Hook povolenú validáciu schémy a payload jej nevyhovuje, validácia prebieha vnútri kroku — endpoint vráti 200, ale tok vyšle udalosť chyby kroku (pozorovateľnú cez onFHError).
  • name a options.flowVariables sú obmedzené — pozri Vstupné limity vyššie. Porušenia vrátia HTTP 422 a nič sa neuloží.
  • Úspešné volania vyšlú udalosť onFHChatbotFlowVariablesUpdate, ak bolo odovzdané options.flowVariables (pozri Referenciu udalostí).
  • Nikdy nevyhodí výnimku. Sieťové zlyhania a odpovede mimo 2xx sú zaznamenávané cez console.warn.

Príklad — proaktívny návrh pri SPA navigácii

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 },
    });
  });
});

Príklad — aktualizácia iba kontextu (žiadny zapojený Chat Hook)

Ak tok nemá trigger Chat Hook, volanie je tichý 200 — takže to isté API môže udržiavať flow_variables synchronizované bez toho, aby čokoľvek spustilo:

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(),
      },
    });
  });
});

4. Ako autor toku spotrebúva tieto hodnoty

  • {ChatHook.hook_name} a {ChatHook.payload.foo} — hodnoty odovzdané cez sendHook('x', { foo: 1 }) sú vystavené na vykonávacej ceste triggera Chat Hook. Iba dostupné na ceste začatej spustením hooku.
  • {flow_variables.foo} — hodnoty odovzdané cez options.flowVariables sa zlúčia do vrecka premenných relácie pred spustením triggera. Každá vykonávacia cesta (vrátane bežných správ používateľa spustených cez Chat Input) ich môže čítať.

Ak chcete, aby ďalšia správa používateľa videla novú hodnotu, dajte ju do options.flowVariables — samotný payload ovplyvní iba spustenie vykonávania, ktoré sa začalo daným hookom.


Referencia udalostí

FlowHunt JS API odosiela 11 vlastných udalostí na objekte window. Všetky udalosti používajú CustomEvent API s bubbles: true a composed: true.

onFHChatbotReady

Vyvolaná, keď sa widget chatbota plne vykreslil a je pripravený na použitie.

  • Dáta udalosti: žiadne.
  • Kedy: po namontovaní DOM widgetu a zobrazení tlačidla chatu.

onFHChatbotSessionCreated

Vyvolaná, keď sa na serveri vytvorí nová relácia chatu.

  • Dáta udalosti: event.detail.sessionId — ID novovytvorenej relácie.
  • Kedy: po úspešnom API volaní na vytvorenie relácie.

onFHChatbotWindowOpened

Vyvolaná, keď používateľ otvorí okno chatu. Nevyvolá sa vo vstavanom režime.

onFHChatbotWindowClosed

Vyvolaná, keď používateľ zatvorí okno chatu. Nevyvolá sa vo vstavanom režime.

onFHMessageSent

Vyvolaná, keď používateľ odošle správu.

event.detail.metadata = {
  content: 'Hello, I need help with...',
  createdAt: '2026-02-19T10:30:00.000Z',
};

onFHMessageReceived

Vyvolaná, keď chatbot prijme a zobrazí odpoveď.

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 je voliteľný a je prítomný iba vtedy, keď je zapojený ľudský agent.

onFHFormDataSent

Vyvolaná, keď používateľ odošle formulárové dáta cez chatbot.

event.detail.metadata = {
  objectData: { name: 'John', email: 'john@example.com' },
  createdAt: '2026-02-19T10:31:00.000Z',
};

onFHFeedback

Vyvolaná, keď používateľ dá palec hore alebo palec dole spätnú väzbu na správu chatbota.

event.detail.metadata = {
  message_id: 'msg_456',
  content: 'Optional feedback text',
  feedback: 'P', // 'P' = positive, 'N' = negative
};

onFHToolCall

Vyvolaná, keď sa počas spracovania toku vykoná nástroj alebo akcia. Vyvolá sa iba v režimoch flowAssistant a flowAssistantV3.

event.detail.metadata = {
  metadata: {
    flow_id: 'abc123',
    message_id: 'msg_789',
    message: 'Calling search API...',
  },
  createdAt: '2026-02-19T10:32:00.000Z',
};

onFHError

Vyvolaná, keď sa počas prevádzky chatbota vyskytne chyba.

event.detail.metadata = {
  metadata: {
    flow_id: 'abc123',
    message_id: 'msg_err',
    message: 'Flow execution failed',
  },
  createdAt: '2026-02-19T10:33:00.000Z',
};

onFHChatbotFlowVariablesUpdate

Pridané v apríli 2026.

Vyvolaná po úspešnom volaní chatbotManager.sendHook(...), ktoré odovzdalo options.flowVariables. Nevyvolá sa pri volaniach sendHook(), ktoré flowVariables vynechávajú.

event.detail = {
  variables: {
    current_page_url: 'https://example.com/products',
    screen_name: 'products',
  },
};

Použite ju na pozorovanie zlúčených premenných (napr. na synchronizáciu vlastného stavu na strane hostiteľa, na ladenie alebo na opätovné vykreslenie UI prvku, ktorý závisí od rovnakých dát).


Prihlásenie na odber udalostí

Existujú dva spôsoby, ako sa prihlásiť na odber udalostí chatbota.

Metóda 1: Poslucháči udalostí na objekte Window

Použite window.addEventListener kdekoľvek na stránke. Funguje to aj pred načítaním chatbota:

<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>

Na odstránenie poslucháča si podržte odkaz na obsluhu:

var handleMessage = function (event) {
  console.log(event.detail.metadata);
};
window.addEventListener('onFHMessageReceived', handleMessage);
// Later …
window.removeEventListener('onFHMessageReceived', handleMessage);

Metóda 2: Callback metódy managera

Vnútri callbacku init() použite vstavané metódy chatbot managera:

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);
  });
});

Referencia metód managera

MetódaParametrePopis
onSessionCreated(fn)fn: () => voidPočúvanie vytvorenia relácie
onWindowOpened(fn)fn: () => voidPočúvanie otvorenia okna
onWindowClosed(fn)fn: () => voidPočúvanie zatvorenia okna
onMessageSent(fn)fn: (event) => voidPočúvanie správ od používateľa
onMessageReceived(fn)fn: (event) => voidPočúvanie odpovedí bota
onFormDataSent(fn)fn: (event) => voidPočúvanie odoslania formulárov
onFeedback(fn)fn: (event) => voidPočúvanie spätnej väzby od používateľa
onToolCall(fn)fn: (event) => voidPočúvanie vykonania nástrojov
onError(fn)fn: (event) => voidPočúvanie chýb
openChat()Otvorí panel chatu
closeChat()Zatvorí panel chatu
sendHook(name, payload?, options?) (nové)name: string, payload?: object, options?: { flowVariables?: object }Spustí trigger Chat Hook v bežiacom toku (alebo ticho zlúči options.flowVariables, ak nie je zapojený žiadny trigger)

Vlastná aktivácia chatu: Skrytie tlačidla a otvorenie kliknutím

Na úplnú kontrolu nad tým, kedy sa chatbot zobrazí, skryte predvolené plávajúce tlačidlo a otvorte chat programovo — napríklad z vášho vlastného tlačidla.

<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>

Zobrazenie vlastného tlačidla len keď je chatbot pripravený

Môžete skombinovať skrytú aktiváciu s poslucháčmi udalostí na vytvorenie pokročilých interakcií:

<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>

Kompletný integračný príklad

Úplný funkčný príklad, ktorý demonštruje prepísanie konfigurácie, sledovanie udalostí, vlastnú aktiváciu chatu a novú metódu sendHook() dohromady:

<!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>

Najčastejšie kladené otázky

Zistiť viac

interactive-mcp
interactive-mcp

interactive-mcp

Integrujte FlowHunt s interactive-mcp a umožnite bezpečnú, komunikáciu v reálnom čase medzi veľkými jazykovými modelmi a používateľmi na lokálnych zariadeniach....

4 min čítania
AI interactive-mcp +7
Ako vytvoriť FlowHunt AI Chatbota pre Shopify
Ako vytvoriť FlowHunt AI Chatbota pre Shopify

Ako vytvoriť FlowHunt AI Chatbota pre Shopify

Podrobný návod na integráciu FlowHunt so Shopify, nastavenie Shopify chatbota z Knižnice tokov, jeho publikovanie a vloženie na váš Shopify web.

4 min čítania
Shopify Chatbot +2