HelpStackDokumenti

Integracije

Vgraditev widgeta

Vgradite widget za spletni klepet HelpStack na katero koli spletno stran z eno samo oznako script.

Hitre dejstvice#

Nalagalnikhttps://helpstack.eu/widget.js
AvtentikacijaNi — končne točke widgeta so javne
TransportSocket.IO (primarni) + HTTP rezerva
Vrsta kanalaWEBSITE_CHAT
Omejitev hitrosti~30 zahtev/min/IP za config/FAQ/status; ~20 sporočil/min/obiskovalec za HTTP rezervo sporočil
Nadzor izvoraNeobvezni seznam dovoljenih domen po kanalu (403, če ni dovoljen)

Nalagalnik izpelje svojo lastnost baseUrl iz izvora lastne oznake <script src>, zato widget.js, ki ga streže helpstack.eu, samodejno komunicira s HelpStack — ni treba konfigurirati ničesar drugega.

Odrezek za vgraditev#

<script src="https://helpstack.eu/widget.js?id=CHANNEL_ID" async></script>

CHANNEL_ID je id vašega kanala WEBSITE_CHAT. Nalagalnik se samodejno inicializira iz parametra poizvedbe ?id= — dodatnega JavaScripta ni potrebno.

Kje dobiti CHANNEL_ID#

Na nadzorni plošči pojdite na Nastavitve → Kanali, odprite (ali ustvarite) kanal Spletni klepet in kopirajte njegov id z gumbom za kopiranje poleg kanala. Ta id posredujete kot ?id=CHANNEL_ID.

Kako deluje nalagalnik#

  1. Skripta prebere svojo lastno <script src>, da ugotovi:
    • baseUrl — izvor skripte (npr. https://helpstack.eu)
    • channelId — parameter poizvedbe ?id=
  2. Vstavi lebdeči mehurček klepeta in <iframe>, ki kaže na:
    {baseUrl}/widget/{channelId}?visitorId={visitorId}
    
  3. Iframe odpre povezavo Socket.IO za sporočanje v realnem času, z HTTP rezervo, ko WebSocket ni na voljo.

Identiteta obiskovalca#

Nalagalnik ustvari trajni id obiskovalca, shranjen v localStorage:

KljučOblika vrednosti
chat_widget_visitor_idvisitor_<uuid>

Isti visitorId se znova uporablja pri nalaganju strani in sejah v tem brskalniku, zato se vračajoči obiskovalec znova poveže s svojim obstoječim pogovorom. Brisanje localStorage (ali drug brskalnik/naprava) ustvari novega obiskovalca in novo nit pogovora.

Programski API#

Nalagalnik izpostavi globalni objekt window.ChatWidget:

window.ChatWidget.init('CHANNEL_ID'); // ročna inicializacija (če ne uporabljate ?id=)
window.ChatWidget.open();             // odpre ploščo klepeta
window.ChatWidget.close();            // zapre ploščo klepeta
window.ChatWidget.toggle();           // preklopi med odprtim/zaprtim

Na voljo je tudi pomočnik s čakalno vrsto ukazov za odloženo obliko, ki se uporablja v komentarju odrezka:

window.chat('init', 'CHANNEL_ID');

Ni API-ja za registracijo orodij na strani odjemalca. Nalagalnik ne izpostavi nobenega registerTool() ali upravljalnika orodij na strani odjemalca. Orodja agenta na strani odjemalca so posredovana s strežnika prek vtičnice iframe (glejte Orodja agenta po meri), ne pa registrirana iz JavaScripta vaše strani.

Konfiguracija videza#

Videz je konfiguriran na nadzorni plošči, ne prek odrezka za vgraditev. Widget ga pridobi s strežnika (GET /api/widget/[channelId]/config) in ga uporabi prek spremenljivk CSS. Preverjene nastavljive možnosti:

PoljeOpombe
primaryColorBarva v šestnajstiškem zapisu. Privzeto #3b82f6
positionbottom-right | bottom-left | top-right | top-left
mobilePositionIsti nabor vrednosti kot position, uporabljen na mobilnih zaslonih
bubbleIconTypecustom ali prednastavitev
bubbleIconNameEna od: message, help, smile, headphone, zap, heart
bubbleOffsetXVodoravni odmik mehurčka
bubbleOffsetYNavpični odmik mehurčka
greetingMessagePozdravno besedilo, prikazano ko se plošča odpre
avatarUrlAvatar agenta/blagovne znamke
showOnlineStatusAli prikazati stanje na spletu/izven spleta
offlineMessageSporočilo, prikazano ko je kanal izven spleta

Javne končne točke widgeta#

Vse končne točke so javne (brez avtentikacije) in omejene po hitrosti glede na IP/obiskovalca.

MetodaPotNamen
GET/api/widget/[channelId]/configKonfiguracija widgeta (barve, položaj, pozdrav, avatar, status). ~30 zahtev/min/IP
GET/api/widget/[channelId]/faqsDo 5 žetonov s pogostimi vprašanji za pozdrav. ~30 zahtev/min/IP
GET/api/widget/[channelId]/statusAli je kanal trenutno v spletu
POST/api/widget/[channelId]/uploadNalaganje datoteke multipart/form-data
POST/api/widget/messageHTTP rezerva za pošiljanje sporočila, ko WebSocket ni na voljo. ~20 sporočil/min/obiskovalec

Odgovor pri nalaganju (POST /api/widget/[channelId]/upload):

{
  "storagePath": "...",
  "publicUrl": "...",
  "fileName": "...",
  "fileSize": 12345,
  "contentType": "image/png",
  "width": 800,
  "height": 600
}

width in height sta prisotna samo za slike.

Rezerva za sporočila (POST /api/widget/message) — telo zahteve:

{
  "channelId": "CHANNEL_ID",
  "visitorId": "visitor_<uuid>",
  "content": "Hello, I need help",
  "visitorInfo": {
    "userAgent": "...",
    "currentUrl": "https://example.com/pricing",
    "referrer": "https://google.com"
  }
}

visitorInfo je neobvezen. Kanal mora biti vrste WEBSITE_CHAT, sicer je zahteva zavrnjena. Ob uspehu ovojnica odgovora v polju data vsebuje { messageId, conversationId, createdAt }.

Dogodki v realnem času (Socket.IO)#

Iframe komunicira s strežnikom prek Socket.IO.

Widget → strežnik

DogodekKoristna obremenitev
joinchannelId, visitorId, visitorInfo { userAgent, currentUrl, referrer }
messageOdhodno sporočilo obiskovalca
typingIndikator tipkanja obiskovalca
heartbeatOhranjevalnik prisotnosti
tool:resultRezultat izvajanja orodja na strani odjemalca
tool:errorNapaka pri izvajanju orodja na strani odjemalca

Strežnik → widget

DogodekKoristna obremenitev
joinedZačetna sporočila in konfiguracija widgeta
messageNovo sporočilo agenta
agent_typingIndikator tipkanja agenta
tool:executeZahteva za zagon orodja na strani odjemalca v brskalniku

Seznam dovoljenih domen#

Kanal lahko omeji, kateri izvori smejo naložiti widget. Ko je seznam dovoljen konfiguriran in zahtevani izvor ni na njem, strežnik odgovori s 403. Konfigurirajte seznam dovoljenih v nastavitvah kanala na nadzorni plošči. Pustite prazno, da dovolite kateri koli izvor.

Primer minimalne strani#

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>HelpStack Widget Demo</title>
  </head>
  <body>
    <h1>My website</h1>
    <button onclick="window.ChatWidget.open()">Need help?</button>

    <!-- HelpStack widget -->
    <script
      src="https://helpstack.eu/widget.js?id=CHANNEL_ID"
      async
    ></script>
  </body>
</html>

Sorodne teme#