Javascript API

Brug Javascript API til kontaktidentitetsverifikation (forudautentificering) og til at interagere med Herodesk live chat

Written by Anders Eiler
Last updated 2026-03-19

Kontaktidentitetsverifikation (Forudautentificering)

Forudautentificering lader dig automatisk logge dine indloggede brugere ind i live chat-widgetten, så de ikke behøver at indtaste deres navn og e-mail manuelt.

 

Sådan fungerer det

  1. Din server kalder Herodesk API for at generere en sikker hash for kontakten
  2. Dit frontend sender hashen (sammen med kontaktens oplysninger) til chat-widgetten
  3. Widgetten verificerer tokenet og logger kontakten ind automatisk

 

Trin 1: Generer Hashen (Server-Side)

Foretag en GET-anmodning til Herodesk API fra din backend:

GET https://api.herodesk.io/v1/contacts/chat-auth-token?email=john@example.com
Authorization: Bearer YOUR_API_KEY

Bemærk: Se https://api.herodesk.io/#/Contacts/contacts_chat_auth_token for API-detaljer.

Svar:
{
  "contact_id": 123,
  "email": "john@example.com",
  "name": "John Doe",
  "auth_token": "a1b2c3d4e5f6..."
}

 

Du kan også slå op via id i stedet for e-mail:

GET https://api.herodesk.io/v1/contacts/chat-auth-token?id=123
Authorization: Bearer YOUR_API_KEY

**Vigtigt:** Udsæt aldrig din API-nøgle på frontend. Generer altid auth-token på din server.  

 

Ydeevne: Sessionscaching

Widgetten cacher automatisk kontaktens identitet i browsercookies efter den første succesfulde identifikation. Ved efterfølgende sideindlæsninger (eller SPA-navigationer), hvis samme e-mail sendes via boot, springer widgetten helt over identify API-kaldet og bruger den cachede session.

 

Sådan fungerer det

  1. Første besøg: API kaldes → cookies sættes
  2. Efterfølgende besøg: E-mail-hash sammenlignes med cachet hash → API-kald springes over

 

Cookie-lagring

  • herodesk_contact_identified - Hashet e-mail-fingeraftryk (365 dage)
  • herodesk-chat-contact_uuid - Kontakt UUID (365 dage)
  • herodesk_contact_verified - Verifikationstoken (365 dage)

 

Når API-kald foretages

1. ✅ Første besøg (ingen cookies)
Kontakten besøger første gang (ingen cachet session)

2. ✅ E-mail ændret (forældede cookies ryddes)
E-mailadressen ændres mellem sideindlæsninger (forældede cookies ryddes automatisk)

3. ✅ Cookies udløbet (browseroprydning)
Cookies er udløbet eller blevet ryddet af browseren

4. ❌ Samme e-mail inden for cookie-livstid → Intet API-kald

Bemærk: Det betyder, at du trygt kan kalde Herodesk('boot', {...}) på hver side uden at bekymre dig om overflødige API-forespørgsler eller ydeevnepåvirkning.

 

Javascript API-metoder

Herodesk-funktionen tilbyder metoder til at styre widgetten programmæssigt og lytte til events. Kald disse efter widget-scriptet er indlæst.

 

Status-egenskaber

Herodesk-objektet eksponerer skrivebeskyttede status-egenskaber, der afspejler den aktuelle widget-status:

 

EgenskabTypeBeskrivelse
Herodesk.isBootedBooltrue efter at boot-kommandoen er behandlet med gyldige parametre
Herodesk.isReadyBooltrue når widgetten er fuldt indlæst og klar til at modtage kommandoer
Herodesk.isVisibleBoolTrue når chat-panelet er åbent, false når lukket

 

Eksempel:

// Tjek om widgetten er klar før visning
if (Herodesk.isReady && !Herodesk.isVisible) {
 Herodesk('show');
}

Bemærk: Status-egenskaber opdateres automatisk. isVisible synkroniserer med både programmatiske kald (show/hide) og brugerinteraktioner (klik på launcher-ikon eller luk-knap). 

 

Herodesk('boot', {});

Brug den globale Herodesk-funktion til at starte widgetten med kontaktens oplysninger. Placer dette før Herodesk chat-scriptet indlæses: 

<script>
 // Kø-stub — skal placeres før widget-scriptet
 // Hvorfor bruger vi Kø-stub? Fordi widgetten aldrig går gennem en "først anonym, 
 // så identificeret" overgang. Den starter med korrekt identitet fra første frame.
 window.Herodesk = window.Herodesk || function() {
   (window.Herodesk.q = window.Herodesk.q || []).push(arguments);
 };


 // Boot med kontaktoplysninger og auth-token fra Trin 1
 Herodesk('boot', {
   email: "john@example.com",
   firstname: "John",
   lastname: "Doe",
   auth_token: "a1b2c3d4e5f6..."  // auth_token fra Trin 1
 });
</script>


<!-- Indlæs Herodesk chat-widget EFTER at HerodeskSettings er sat -->
<script src="https://cdn.herodesk.io/livechat.js?wid=YOUR_WIDGET_ID"></script>

 

Boot-parametre

ParameterTypePåkrævetBeskrivelse
emailStringJaKontaktens e-mailadresse
firstnameStringNejKontaktens fornavn
lastnameStringNejKontaktens efternavn
auth_tokenStringNej*HMAC-SHA256 auth-token fra API'et (se ovenfor)
messageStringNejForudfyld chat-input med en besked
languageStringNejOverskriver sprog fra besøgendes browser. Sæt fx: da-DK
z_indexStringNejBrugerdefineret z-index for widget iframe (standard: auto)

* Hvis auth_token udelades eller er ugyldig, vil kontakten ikke blive verificeret automatisk. De vil i stedet gennemgå standard e-mail verifikationsflow.

 

Forudfyldning af en besked

Du kan forudfylde chat-inputfeltet med forudautentificering:

<script src="https://cdn.herodesk.io/livechat.js?wid=YOUR_WIDGET_ID"></script>
<script>
 Herodesk('boot', {
   email: "john@example.com",
   firstname: "John",
   auth_token: "a1b2c3d4e5f6...",
   message: "Jeg har brug for hjælp med ordre #12345"
 });
</script>

 

Brugerdefineret z-index

<script src="https://cdn.herodesk.io/livechat.js?wid=YOUR_WIDGET_ID"></script>
<script>
 Herodesk('boot', {
   z_index: 500
 });
</script>

 

Herodesk('show');

Åbner chat-widgetten programmæssigt.

Herodesk('show');

 

Herodesk('hide');

Lukker chat-widgetten programmæssigt.

Herodesk('hide');

 

Herodesk('showConversation', id);

Åbner en specifik samtale via dens ID. Samtalen skal tilhøre den aktuelle kontakt.

Herodesk('showConversation', 231);

 

Bemærk: Denne metode virker kun efter widgetten er indlæst og kontakten er identificeret. Samtale-ID'et skal tilhøre den aktuelle kontakt — forsøg på at åbne en anden kontakts samtale vil blive afvist.

 

Herodesk('setLanguage', language);

Skift sproget i live chat efter indlæsning. Dette genindlæser livechatten.

Herodesk('showConversation', 'da-DK');

 

Herodesk('prefillMessage', message);

Sæt tekst i chat-input på en allerede indlæst widget.

Herodesk('prefillMessage', 'Hvor meget koster forsendelse?');

 

 

Event Callbacks

Registrer callbacks for at reagere på widget-events.

 

Herodesk('onShow', callback);

Udløses når chat-widgetten åbnes (ved brugerklik eller programmæssigt show).

 

Herodesk('onShow', function() {
 console.log('Chat-widget åbnet');
});

 

Herodesk('onHide', callback);

Udløses når chat-widgetten lukkes (ved brugerklik eller programmæssigt hide).

Herodesk('onHide', function() {
 console.log('Chat-widget lukket');
});

 

Herodesk('onUnreadCountChange', callback);

Udløses når antallet af ulæste samtaler ændres. Modtager det nye antal som parameter.

Herodesk('onUnreadCountChange', function(count) {
 console.log('Ulæste samtaler:', count);
});

 

Herodesk('onUserEmailSupplied', callback);

Udløses når en kontakts e-mail identificeres — enten gennem forudautentificering (boot med auth_token) eller når brugeren manuelt indtaster sin e-mail i widgetens kontaktformular.

Herodesk('onUserEmailSupplied', function() {
 console.log('Brugerens e-mail er angivet');
});