Prehľad Chat API
Táto funkcia je dostupná iba vo vybraných balíkoch. Umožňuje vám programovo ovládať widget chatu a registrovať spätné volania (callbacks) pre udalosti chatu.
Hľadáte REST API? Tento článok sa venuje JavaScript API widgetu v prehliadači (window.aichatbotApi) pre stránky, na ktorých je vložený widget ChatLab. Informácie o server-to-server REST API používanom na komunikáciu s botmi z vášho backendu alebo na ich programovú správu nájdete v článkoch Bot Talk API a Management API.
Začíname
Chatbot API nie je dostupné okamžite po načítaní stránky - skript sa musí najprv načítať a inicializovať. Na bezpečný prístup k API musíte použiť window.aichatbotCallback.onSessionActivated ako zavádzací (bootstrap) mechanizmus.
Umiestnite tento kód pred značku skriptu ChatLab:
<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 sa spustí pri vytvorení relácie chatu (t. j. keď používateľ otvorí widget). Vnútri tejto funkcie je zaručené, že objekt API existuje a relácia je aktívna, takže môžete bezpečne volať sendMessage(), updateClientContext() a registrovať spätné volania udalostí.
Dôležité: Nevolajte window.aichatbotApi.getChatbotApi() vo svojom skripte na stránke priamo bez čakania - objekt API neexistuje, kým sa skript ChatLab nenačíta a neinicializuje.
Tip: Ak potrebujete widget iba ovládať (zobraziť/skryť/prepnúť) a nepotrebujete aktívnu reláciu, počúvajte namiesto toho na udalosť DOM aichatbotReady:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.showChat();
});
Metódy
| Metóda | Popis |
|---|---|
showChat() |
Otvoriť widget chatu |
hideChat() |
Zavrieť widget chatu |
toggleChat() |
Prepnúť viditeľnosť widgetu |
sendMessage(text) |
Odoslať správu programovo |
updateClientContext(data) |
Aktualizovať kontext používateľa (pozrite nižšie) |
setLanguage(code) |
Prepnúť widget do jazyka (iba viacjazyčné boty, pozrite nižšie) |
getLanguage() |
Vrátiť jazyk, ktorý widget aktuálne používa |
getAvailableLanguages() |
Vrátiť zoznam jazykov, ktoré bot ponúka |
addCallback(name, fn) |
Zaregistrovať spätné volanie udalosti |
Poznámka: sendMessage a updateClientContext vyžadujú aktívnu reláciu. Použite inicializačný vzor onSessionActivated uvedený v časti Začíname.
Spätné volania (callbacks)
Zaregistrujte spätné volania udalostí vnútri vášho obslužného programu onSessionActivated (pozrite Začíname):
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);
});
Dostupné spätné volania
| Spätné volanie | Údaje | Popis |
|---|---|---|
onSessionActivated |
- | Relácia chatu je pripravená |
onUserMessage |
string |
Používateľ odoslal správu |
onChatbotMessage |
string |
Bot odpovedal správou |
onProductClick |
string (ID produktu alebo odkaz) |
Používateľ klikol na produkt (vyžaduje povolené Offer Cards) |
onLeadCollectionFormSubmit |
{email, phone, name} |
Formulár na zber leadov bol odoslaný |
onContactFormSubmit |
{email, message} |
Kontaktný/podporný formulár bol odoslaný |
onLiveChatFormSubmit |
{name, email} |
Formulár Live Chat bol odoslaný |
Pôvodné spätné volania udalostí (zastarané)
Objekt window.aichatbotCallback podporuje aj onUserMessage a onChatbotMessage ako priame vlastnosti. Tento formát je zastaraný - na prístup ku všetkým typom spätných volaní použite namiesto toho addCallback():
window.aichatbotCallback = {
onUserMessage(message) { ... },
onChatbotMessage(message) { ... }
};
Poznámka: window.aichatbotCallback.onSessionActivated nie je zastarané - je to odporúčaný bootstrap mechanizmus na inicializáciu Chat API (pozrite Začíname).
Nasadenie cez Iframe
Pri použití nasadenia cez iframe použite na komunikáciu s chatbotom postMessage:
Odosielanie príkazov
const chatbotIframe = document.querySelector('iframe');
// Zobraziť chat
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'showChat'
}, '*');
// Skryť chat
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'hideChat'
}, '*');
// Odoslať správu
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'sendMessage',
payload: 'Hello!'
}, '*');
// Aktualizovať kontext klienta
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'updateClientContext',
payload: { clientId: 'user123', clientName: 'John' }
}, '*');
// Prepnúť jazyk (iba viacjazyčné boty)
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'setLanguage',
payload: 'de'
}, '*');
Prijímanie spätných volaní
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;
}
});
Aktualizácia kontextu klienta
Funkcia updateClientContext umožňuje aktualizovať kontext klienta počas aktívnej relácie:
chatbot.updateClientContext({
clientId: "unique-client-identifier", // Povinné
clientName: "John", // Voliteľné
clientEmail: "john@doe.com", // Voliteľné
clientPhone: "555-444-333", // Voliteľné
clientSecurityToken: "your-token", // Voliteľné
clientHostContext: { // Voliteľné
param1: "value1",
param2: "value2"
}
});
Parametre:
- clientId (povinné): Jedinečný identifikátor klienta
- clientName, clientEmail, clientPhone (voliteľné): Údaje o klientovi zobrazené v konverzáciách
- clientSecurityToken (voliteľné): Bezpečnostný token na autorizáciu API
- clientHostContext (voliteľné): Dodatočné parametre kontextu prístupné vo vlastných akciách API
Použitie vo volaniach API:
Atribúty kontextu je možné použiť vo volaniach funkcií API konfiguráciou parametra API ako typ "Context":
clientName,clientEmail,clientPhone,clientSecurityToken- Vlastné parametre hostiteľského kontextu s predponou
client, napr.clientparam1,clientparam2
Jazyk
Tieto metódy fungujú iba na viacjazyčných robotoch. Pri jednojazyčnom botovi nemá widget žiadnu jazykovú vrstvu na prepínanie, takže setLanguage() nerobí nič a getAvailableLanguages() vráti iba vlastný jazyk bota. Najprv zapnite viacjazyčnú podporu v Settings > Languages (Nastavenia > Jazyky) - pozrite Viacjazyčné chatboty.
Použite setLanguage(), keď vaša stránka existuje vo viacerých jazykoch a chcete, aby sa chat otvoril v jazyku, ktorý návštevník práve číta, namiesto jazyka, ktorý má náhodou nastavený vo svojom prehliadači:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.setLanguage(document.documentElement.lang); // napr. "de"
console.log(chatbot.getLanguage()); // "de"
console.log(chatbot.getAvailableLanguages()); // ["en", "de", "fr", ...]
});
Jazyk stránky môžete deklarovať aj pred načítaním skriptu, čím predídete krátkemu prebliknutiu nesprávneho jazyka:
<script>window.aichatbotLanguage = "de";</script>
Ktorý jazyk má prednosť. Widget vyhodnocuje jazyk v tomto poradí:
- Jazyk, ktorý si návštevník sám vybral v ponuke jazykov samotného widgetu.
- Jazyk stránky z
setLanguage()alebowindow.aichatbotLanguage. - Jazyk prehliadača návštevníka.
- Predvolený jazyk chatbota.
Vlastný výber návštevníka sa zapamätá aj pre ďalšie návštevy, no prestane platiť, len čo sa zmení jazyk stránky - takže váš prepínač jazykov má vždy prednosť pred neaktuálnou voľbou. Kódy sú v štandarde ISO 639-1 (en, de, pl); regionálny kód ako de-AT sa automaticky prepne na de. Jazyk, ktorý bot neponúka, sa ignoruje.
Prepnutie jazyka neukončí konverzáciu ani nevymaže prepis chatu.