Pregled Chat API-ja
Ova funkcija je dostupna samo u odabranim paketima. Omogućava vam da programski kontrolišete vidžet za ćaskanje 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 vidžet. Za server-to-server REST API koji se koristi za razgovor sa botovima sa vašeg bekenda ili za programsko upravljanje botovima, pogledajte članke Bot Talk API i Management API.
Početak rada
API za chatbot nije dostupan odmah čim se vaša stranica učita - skripta se prvo mora učitati i inicijalizovati. Morate koristiti window.aichatbotCallback.onSessionActivated kao mehanizam pokretanja kako biste bezbedno pristupili API-ju.
Postavite ovo pre ChatLab script taga:
<script>
window.aichatbotCallback = {
onSessionActivated() {
var chatbot = window.aichatbotApi.getChatbotApi('YOUR_API_KEY');
chatbot.addCallback('onUserMessage', function(message) {
console.log('User said:', message);
});
chatbot.addCallback('onChatbotMessage', function(message) {
console.log('Bot replied:', message);
});
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 aktivira kada se sesija ćaskanja kreira (tj. kada korisnik otvori vidžet). 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 vaše stranice bez čekanja - API objekat ne postoji sve dok se ChatLab skripta ne učita i ne inicijalizuje.
Savet: Ako samo treba da kontrolišete vidžet (prikaži/sakrij/promeni vidljivost) i nije vam potrebna aktivna sesija, umesto toga slušajte DOM događaj aichatbotReady:
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.
Povratni pozivi (Callbacks)
Registrujte povratne pozive za događaje 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);
});
Dostupni povratni pozivi
| Povratni poziv | Podaci | Opis |
|---|---|---|
onSessionActivated |
- | Sesija ćaskanja je spremna |
onUserMessage |
string |
Korisnik je poslao poruku |
onChatbotMessage |
string |
Bot je odgovorio porukom |
onProductClick |
string (ID proizvoda ili link) |
Korisnik je kliknuo na proizvod (zahteva omogućenu funkciju Offer Cards) |
onLeadCollectionFormSubmit |
{email, phone, name} |
Obrazac za prikupljanje lidova je poslat |
onContactFormSubmit |
{email, message} |
Obrazac za kontakt/podršku je poslat |
onLiveChatFormSubmit |
{name, email} |
Obrazac za Live Chat je poslat |
Zastareli povratni pozivi za događaje (Deprecated)
Objekat window.aichatbotCallback takođe podržava onUserMessage i onChatbotMessage kao direktna svojstva. Ovaj format je zastareo - koristite addCallback() umesto toga za pristup svim tipovima povratnih poziva:
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).
Implementacija putem iframe-a
Kada koristite implementaciju putem iframe-a, koristite postMessage za komunikaciju sa chatbotom:
Slanje komandi
const chatbotIframe = document.querySelector('iframe');
// Prikaz ćaskanja
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'showChat'
}, '*');
// Sakrivanje ćaskanja
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'hideChat'
}, '*');
// Slanje poruke
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'sendMessage',
payload: 'Hello!'
}, '*');
// Ažuriranje konteksta klijenta
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'updateClientContext',
payload: { clientId: 'user123', clientName: 'John' }
}, '*');
// Promena jezika (samo za višejezične botove)
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'setLanguage',
payload: 'de'
}, '*');
Prijem povratnih poziva
window.addEventListener('message', (event) => {
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", // Obavezno
clientName: "John", // Opciono
clientEmail: "john@doe.com", // Opciono
clientPhone: "555-444-333", // Opciono
clientSecurityToken: "your-token", // Opciono
clientHostContext: { // Opciono
param1: "value1",
param2: "value2"
}
});
Parametri:
- clientId (obavezno): Jedinstveni identifikator klijenta
- clientName, clientEmail, clientPhone (opciono): Podaci o klijentu koji se prikazuju u razgovorima
- clientSecurityToken (opciono): Bezbednosni token za autorizaciju API-ja
- clientHostContext (opciono): Dodatni parametri konteksta dostupni u prilagođenim API akcijama
Upotreba u API pozivima:
Atributi konteksta mogu se koristiti u pozivima API funkcija tako što se API parametar konfiguriše kao tip „Context”:
clientName,clientEmail,clientPhone,clientSecurityToken- Prilagođeni parametri host konteksta sa prefiksom
client, npr.clientparam1,clientparam2
Jezik
Ove metode funkcionišu samo na višejezičnim chatbotovima. Na jednojezičnom botu vidžet nema jezički sloj za prebacivanje, pa setLanguage() ne radi ništa, a getAvailableLanguages() vraća samo primarni jezik bota. Prvo uključite višejezičnu podršku u Settings > Languages (Podešavanja > Jezici) - pogledajte Multilingual chatbots.
Koristite setLanguage() kada vaša stranica postoji na nekoliko jezika i želite da se ćaskanje otvori na onom koji posetilac čita, umesto na onom na koji je slučajno podešen njegov pregledač:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.setLanguage(document.documentElement.lang); // npr. "de"
console.log(chatbot.getLanguage()); // "de"
console.log(chatbot.getAvailableLanguages()); // ["en", "de", "fr", ...]
});
Takođe možete deklarisati jezik stranice pre nego što se skripta učita, čime se izbegava kratak prikaz pogrešnog jezika:
<script>window.aichatbotLanguage = "de";</script>
Koji jezik ima prioritet. Vidžet određuje jezik sledećim redosledom:
- Jezik koji je posetilac sam izabrao u meniju za jezik unutar vidžeta.
- 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 promeni jezik stranice - tako da vaš birač jezika uvek ima prednost u odnosu na stari izbor. Kodovi su u formatu ISO 639-1 (en, de, pl); regionalni kod kao što je de-AT se vraća na de. Jezik koji bot ne nudi se zanemaruje.
Promena jezika ne prekida razgovor niti briše transkript.