Chat API apžvalga
Ši funkcija pasiekiama tik pasirinktuose planuose. Ji leidžia programiškai valdyti pokalbių valdiklį ir registruoti atgalinio ryšio iškvietas (angl. callbacks) pokalbių įvykiams.
Ieškote REST API? Šiame straipsnyje aptariama naršyklėje veikianti JavaScript valdiklio API (window.aichatbotApi), skirta puslapiams, kuriuose įterptas ChatLab valdiklis. Norėdami sužinoti apie serveris-serveris REST API, naudojamą bendrauti su robotais iš Jūsų vidinių sistemų (angl. backend) arba programiškai valdyti robotus, skaitykite straipsnius Bot Talk API ir Management API.
Darbo pradžia
Pokalbių roboto API nėra pasiekiama iš karto įkėlus puslapį - pirmiausia turi užsikrauti ir inicializuotis scenarijus. Privalote naudoti window.aichatbotCallback.onSessionActivated kaip pradinio paleidimo mechanizmą, kad saugiai pasiektumėte API.
Įterpkite šį kodą prieš ChatLab scenarijaus žymą:
<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 suveikia, kai sukuriama pokalbio sesija (t. y. naudotojas atidaro valdiklį). Jos viduje užtikrinama, kad API objektas egzistuoja ir sesija yra aktyvi, todėl galite saugiai kviesti sendMessage(), updateClientContext() ir registruoti įvykių atgalinio ryšio iškvietas.
Svarbu: nekvieskite window.aichatbotApi.getChatbotApi() tiesiogiai savo puslapio scenarijuje nelaukdami - API objektas neegzistuoja, kol ChatLab scenarijus nėra įkeltas ir inicializuotas.
Patarimas: jei Jums reikia tik valdyti valdiklį (rodyti / slėpti / perjungti) ir nereikia aktyvios sesijos, verčiau klausykitės aichatbotReady DOM įvykio:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.showChat();
});
Metodai
| Metodas | Aprašymas |
|---|---|
showChat() |
Atidaryti pokalbių valdiklį |
hideChat() |
Uždaryti pokalbių valdiklį |
toggleChat() |
Perjungti valdiklio matomumą |
sendMessage(text) |
Išsiųsti žinutę programiškai |
updateClientContext(data) |
Atnaujinti naudotojo kontekstą (žr. toliau) |
setLanguage(code) |
Perjungti valdiklio kalbą (tik daugiakalbiams robotams, žr. toliau) |
getLanguage() |
Grąžinti kalbą, kurią valdiklis šiuo metu naudoja |
getAvailableLanguages() |
Grąžinti roboto siūlomų kalbų sąrašą |
addCallback(name, fn) |
Užregistruoti įvykio atgalinio ryšio iškvietą |
Pastaba: sendMessage ir updateClientContext reikalauja aktyvios sesijos. Naudokite onSessionActivated inicializavimo šabloną, pateiktą skyriuje „Darbo pradžia“.
Atgalinio ryšio iškvietos (callbacks)
Registruokite įvykių atgalinio ryšio iškvietas savo onSessionActivated doroklyje (žr. „Darbo pradžia“):
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);
});
Galimos atgalinio ryšio iškvietos
| Atgalinio ryšio iškvieta | Duomenys | Aprašymas |
|---|---|---|
onSessionActivated |
- | Pokalbio sesija paruošta |
onUserMessage |
string |
Naudotojas išsiuntė žinutę |
onChatbotMessage |
string |
Robotas atsakė žinute |
onProductClick |
string (produkto ID arba nuoroda) |
Naudotojas paspaudė ant produkto (reikalingos įjungtos Offer Cards) |
onLeadCollectionFormSubmit |
{email, phone, name} |
Pateikta potencialių klientų rinkimo forma |
onContactFormSubmit |
{email, message} |
Pateikta kontakto / pagalbos forma |
onLiveChatFormSubmit |
{name, email} |
Pateikta Live Chat forma |
Pasenusios įvykių atgalinio ryšio iškvietos (nebenaudotinos)
Objektas window.aichatbotCallback taip pat palaiko onUserMessage ir onChatbotMessage kaip tiesiogines savybes. Šis formatas yra pasenęs - naudokite addCallback(), kad pasiektumėte visų tipų atgalinio ryšio iškvietas:
window.aichatbotCallback = {
onUserMessage(message) { ... },
onChatbotMessage(message) { ... }
};
Pastaba: window.aichatbotCallback.onSessionActivated nėra pasenęs - tai rekomenduojamas pradinio paleidimo mechanizmas, skirtas Chat API inicializuoti (žr. „Darbo pradžia“).
Įterpimas per iframe
Naudojant įterpimą per iframe, bendravimui su pokalbių robotu naudokite postMessage:
Komandų siuntimas
const chatbotIframe = document.querySelector('iframe');
// Show chat
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'showChat'
}, '*');
// Hide chat
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'hideChat'
}, '*');
// Send message
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'sendMessage',
payload: 'Hello!'
}, '*');
// Update client context
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'updateClientContext',
payload: { clientId: 'user123', clientName: 'John' }
}, '*');
// Switch language (multi-language bots only)
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'setLanguage',
payload: 'de'
}, '*');
Atgalinio ryšio iškvietų gavimas
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;
}
});
Kliento konteksto atnaujinimas
Funkcija updateClientContext leidžia atnaujinti kliento kontekstą aktyvios sesijos metu:
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"
}
});
Parametrai:
- clientId (privalomas): unikalus kliento identifikatorius
- clientName, clientEmail, clientPhone (neprivalomi): kliento duomenys, rodomi pokalbiuose
- clientSecurityToken (neprivalomas): saugos raktas (angl. token), skirtas API autorizacijai
- clientHostContext (neprivalomas): papildomi konteksto parametrai, pasiekiami pasirinktiniuose API veiksmuose
Naudojimas API iškvietose:
Konteksto atributus galima naudoti API funkcijų iškvietose, sukonfigūravus API parametrą kaip „Context“ tipo:
clientName,clientEmail,clientPhone,clientSecurityToken- Pasirinktiniai priimančiosios sistemos konteksto parametrai su priešdėliu
client, pvz.,clientparam1,clientparam2
Kalba
Šie metodai veikia tik daugiakalbiuose pokalbių robotuose. Vienakalbiame robote valdiklis neturi kalbų sluoksnio, kurį būtų galima perjungti, todėl setLanguage() nieko nedaro, o getAvailableLanguages() grąžina tik paties roboto kalbą. Pirmiausia įjunkite daugiakalbystės palaikymą skiltyje Settings > Languages (Nustatymai > Kalbos) - žr. Multilingual chatbots.
Naudokite setLanguage(), kai Jūsų puslapis veikia keliomis kalbomis ir norite, kad pokalbis atsidarytų ta kalba, kuria lankytojas skaito, o ne ta, kuri nustatyta jo naršyklėje:
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", ...]
});
Puslapio kalbą taip pat galite nurodyti prieš įkeliant scenarijų, taip išvengsite trumpo netinkamos kalbos blykstelėjimo:
<script>window.aichatbotLanguage = "de";</script>
Kuri kalba turi pirmenybę. Valdiklis nustato kalbą šia tvarka:
- Kalba, kurią lankytojas pats pasirinko valdiklio kalbų meniu.
- Puslapio kalba iš
setLanguage()arbawindow.aichatbotLanguage. - Lankytojo naršyklės kalba.
- Pagrindinė pokalbių roboto kalba.
Paties lankytojo pasirinkimas įsimenamas vėlesniems apsilankymams, tačiau nustoja galioti, kai pasikeičia puslapio kalba - todėl Jūsų kalbų perjungiklis visada turi pirmenybę prieš pasenusį pasirinkimą. Kodai atitinka ISO 639-1 standartą (en, de, pl); regioninis kodas, pavyzdžiui, de-AT, grįžta prie de. Kalba, kurios robotas nesiūlo, yra ignoruojama.
Kalbos perjungimas nenutraukia pokalbio ir neišvalo susirašinėjimo teksto.