Pregled Chat API-ja
Widget API Vam omogućava da programski kontrolišete chat widget i registrujete povratne pozive (callbacks) za događaje u ćaskanju.
Tražite REST API? Ovaj članak pokriva JavaScript widget API u pregledaču (window.aichatbotApi) za stranice na kojima je ugrađen ChatLab widget. Za server-to-server REST API koji se koristi za komunikaciju sa botovima iz Vašeg backend-a ili programsko upravljanje botovima, pogledajte članke za Bot Talk API i Management API.
Početak rada
API za chatbot nije dostupan odmah nakon učitavanja Vaše stranice - skripta se prvo mora učitati i inicijalizovati. Morate koristiti window.aichatbotCallback.onSessionActivated kao mehanizam za pokretanje (bootstrap) kako biste bezbedno pristupili API-ju.
Koristite javni ključ vidžeta iz odeljka Deploy (Implementacija) kao YOUR_API_KEY, nikada tajni ck_ ili mk_ ključ. Zadržite ID provajdera i host skripte iz svog Deploy isečka koda. Postavite podešavanje povratnog poziva (callback) pre te oznake skripte:
<script>
let registeredChatbot;
window.aichatbotCallback = {
onSessionActivated() {
var chatbot = window.aichatbotApi.getChatbotApi('YOUR_API_KEY');
if (registeredChatbot === chatbot) return;
registeredChatbot = chatbot;
chatbot.addCallback('onUserMessage', function(message) {
console.log('User said:', message);
});
chatbot.addCallback('onChatbotMessage', function(message) {
console.log('Bot replied:', message);
});
// Send only when your application intends to start a real chat:
// chatbot.sendMessage('Hello from the API!');
}
};
</script>
<script>window.aichatbotApiKey="YOUR_API_KEY";</script>
<script src="https://script.chatlab.com/aichatbot.js" defer></script>
onSessionActivated se pokreće kada sesija postane dostupna, uključujući i obnovljene sesije. U zavisnosti od podešavanja implementacije i ekrana dobrodošlice, ovo nije nužno prvi klik za otvaranje vidžeta. Može se okinuti ponovo; registrujte povratne pozive jednom po API objektu da biste izbegli duplirane rukovaoce (handlers). Unutar njega, postojanje API objekta je zagarantovano i sesija je aktivna, tako da možete bezbedno pozivati sendMessage(), updateClientContext() i registrovati povratne pozive za događaje.
Važno: Nemojte pozivati window.aichatbotApi.getChatbotApi() direktno u skripti svoje stranice bez čekanja - API objekat ne postoji sve dok se ChatLab skripta ne učita i inicijalizuje.
Savet: Ako samo treba da kontrolišete vidžet (prikaz/sakrivanje/prebacivanje) i nije Vam potrebna aktivna sesija, umesto toga pratite aichatbotReady DOM događaj:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.showChat();
});
Metode
| Metoda | Opis |
|---|---|
showChat() |
Otvara vidžet za ćaskanje |
hideChat() |
Zatvara vidžet za ćaskanje |
toggleChat() |
Menja vidljivost vidžeta |
sendMessage(text) |
Šalje poruku programski |
updateClientContext(data) |
Ažurira kontekst korisnika (pogledajte ispod) |
setLanguage(code) |
Prebacuje vidžet na određeni jezik (samo za višejezične botove, pogledajte ispod) |
getLanguage() |
Vraća jezik koji vidžet trenutno koristi |
getAvailableLanguages() |
Vraća listu jezika koje bot nudi |
addCallback(name, fn) |
Registruje povratni poziv za događaj |
Napomena: sendMessage i updateClientContext zahtevaju aktivnu sesiju. Koristite obrazac inicijalizacije onSessionActivated prikazan u odeljku Početak rada.
Callback funkcije
Registrujte callback funkcije događaja unutar Vašeg onSessionActivated hendlera (pogledajte Početak rada):
chatbot.addCallback('onUserMessage', function(message) {
console.log('User said:', message);
});
chatbot.addCallback('onChatbotMessage', function(message) {
console.log('Bot replied:', message);
});
chatbot.addCallback('onProductClick', function(productIdOrLink) {
console.log('Product clicked:', productIdOrLink);
});
chatbot.addCallback('onLeadCollectionFormSubmit', function(data) {
console.log('Lead captured:', data.email);
});
chatbot.addCallback('onContactFormSubmit', function(data) {
console.log('Support request from:', data.email);
});
chatbot.addCallback('onLiveChatFormSubmit', function(data) {
console.log('Live chat started:', data.name);
});
Dostupne callback funkcije
| Callback | Podaci | Opis |
|---|---|---|
onSessionActivated |
- | Sesija ćaskanja je spremna |
onUserMessage |
string |
Korisnik je poslao poruku |
onChatbotMessage |
string |
Bot je odgovorio porukom |
onProductClick |
Podaci o proizvodu/linku sa prikazane kartice | Korisnik je kliknuo na link proizvoda; pregledajte podatke za Vaš tip kartice |
onLeadCollectionFormSubmit |
{email, phone, name} |
Obrazac za prikupljanje leadova je poslat |
onContactFormSubmit |
{email, message} |
Obrazac za kontakt/podršku je poslat |
onLiveChatFormSubmit |
{name, email} |
Obrazac za Live Chat je poslat, nije dokaz da se operater pridružio |
onCustomFormSubmit |
{formId, values} |
Prilagođeni obrazac je poslat; podaci o otpremljenoj datoteci nisu uključeni u ovu callback funkciju |
Callback funkcije obrazaca prijavljuju slanje na strani veb-pregledača, a ne potvrđeno čuvanje u bazi ili uspešnu isporuku. Za obradu potvrđenu na backendu, koristite Webhooks. Podaci iz callback funkcija mogu sadržati lične podatke; nemojte ih u celosti prosleđivati analitici ili javnim logovima.
Zastarele callback funkcije događaja
Objekat window.aichatbotCallback takođe podržava onUserMessage i onChatbotMessage kao direktna svojstva. Koristite addCallback() za modularne slušaoce (listeners) bez zamene globalnog objekta:
window.aichatbotCallback = {
onUserMessage(message) { ... },
onChatbotMessage(message) { ... }
};
Napomena: window.aichatbotCallback.onSessionActivated nije zastareo - to je preporučeni mehanizam pokretanja za inicijalizaciju Chat API-ja (pogledajte Početak rada).
Iframe implementacija
Kada koristite iframe implementaciju, koristite postMessage za komunikaciju sa chatbotom:
Slanje komandi
// Give the ChatLab iframe from Deploy this unique id.
const chatbotIframe = document.getElementById('chatlab-frame');
const chatbotOrigin = new URL(chatbotIframe.src, window.location.href).origin;
// Run show/hide/language commands after the iframe loads.
// Wait for onSessionActivated before sendMessage or updateClientContext.
// Show chat
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'showChat'
}, chatbotOrigin);
// Hide chat
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'hideChat'
}, chatbotOrigin);
// Send message
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'sendMessage',
payload: 'Hello!'
}, chatbotOrigin);
// Update client context
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'updateClientContext',
payload: { clientId: 'user123', clientName: 'John' }
}, chatbotOrigin);
// Switch language (multi-language bots only)
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'setLanguage',
payload: 'de'
}, chatbotOrigin);
Prijem povratnih poziva (callbacks)
window.addEventListener('message', (event) => {
if (event.origin !== chatbotOrigin || event.source !== chatbotIframe.contentWindow) return;
if (event.data?.type !== 'aichatbot-callback') return;
const { apiKey, callback, data } = event.data;
switch (callback) {
case 'onSessionActivated':
console.log('Session ready');
break;
case 'onUserMessage':
console.log('User said:', data);
break;
case 'onChatbotMessage':
console.log('Bot replied:', data);
break;
case 'onProductClick':
console.log('Product clicked:', data);
break;
case 'onLeadCollectionFormSubmit':
console.log('Lead captured:', data);
break;
case 'onContactFormSubmit':
console.log('Contact form:', data);
break;
case 'onLiveChatFormSubmit':
console.log('Live chat started:', data);
break;
}
});
Ažuriranje konteksta klijenta
Funkcija updateClientContext omogućava ažuriranje konteksta klijenta tokom aktivne sesije:
chatbot.updateClientContext({
clientId: "unique-client-identifier", // Required
clientName: "John", // Optional
clientEmail: "john@doe.com", // Optional
clientPhone: "555-444-333", // Optional
clientSecurityToken: "your-token", // Optional
clientHostContext: { // Optional
param1: "value1",
param2: "value2"
}
});
Parametri:
- clientId (obavezno): Jedinstveni identifikator klijenta
- clientName, clientEmail, clientPhone (opciono): Podaci o klijentu koji se prikazuju u razgovorima
- clientSecurityToken (opciono): Token koji se prosleđuje kao kontekst za Vašu prilagođenu integraciju. Vaš sopstveni API mora da verifikuje njegovu autentičnost, istek i autorizaciju.
- clientHostContext (opciono): Dodatni parametri konteksta dostupni u prilagođenim API radnjama
Identifikatori i kontekst koje prosleđuje pregledač nisu dokaz identiteta. Nemojte stavljati tajne na nivou naloga u JavaScript stranice i nemojte odobravati pristup samo zato što se navedeni clientId ili imejl poklapaju sa zapisom.
Upotreba u API pozivima:
Atributi konteksta mogu se koristiti u pozivima API funkcija tako što ćete konfigurisati API parametar kao tip "Context":
clientName,clientEmail,clientPhone,clientSecurityToken- Prilagođeni parametri host konteksta sa prefiksom
client, npr.clientparam1,clientparam2
Jezik
Ove metode rade samo na višejezičnim chatbotovima. Na jednojezičnom botu widget nema jezički sloj za prebacivanje, pa setLanguage() ne radi ništa, a getAvailableLanguages() vraća samo osnovni jezik samog bota. Prvo uključite višejezičnu podršku u Settings > Languages (Podešavanja > Jezici) - pogledajte Višejezični chatbotovi.
Koristite setLanguage() kada Vaša stranica postoji na više jezika i želite da se chat otvori na onom koji posetilac trenutno čita, umesto na onom na koji mu je pregledač podešen:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.setLanguage(document.documentElement.lang); // e.g. "de"
console.log(chatbot.getLanguage()); // "de"
console.log(chatbot.getAvailableLanguages()); // ["en", "de", "fr", ...]
});
Takođe možete definisati jezik stranice pre nego što se skripta učita, čime se izbegava kratkotrajni prikaz pogrešnog jezika:
<script>window.aichatbotLanguage = "de";</script>
Koji jezik ima prednost. Widget određuje jezik sledećim redosledom:
- Jezik koji je posetilac sam izabrao u meniju jezika unutar widgeta.
- Jezik stranice, iz
setLanguage()iliwindow.aichatbotLanguage. - Jezik pregledača posetioca.
- Osnovni jezik chatbota.
Izbor samog posetioca se pamti za buduće posete, ali prestaje da važi čim se jezik stranice promeni - tako da Vaš selektor jezika uvek ima prednost nad zastarelim izborom. Kodovi su u standardu ISO 639-1 (en, de, pl); regionalni kod kao što je de-AT preusmerava se na de. Jezik koji bot ne nudi se ignoriše.
Promena jezika ne prekida razgovor niti briše transkript.