Επισκόπηση του Chat API
Το API του widget σάς επιτρέπει να ελέγχετε το widget συνομιλίας μέσω κώδικα και να δηλώνετε callbacks για συμβάντα συνομιλίας.
Αναζητάτε το REST API; Αυτό το άρθρο καλύπτει το JavaScript widget API στο πρόγραμμα περιήγησης (window.aichatbotApi) για σελίδες όπου είναι ενσωματωμένο το widget του ChatLab. Για το server-to-server REST API που χρησιμοποιείται για συνομιλία με bots από το backend σας ή για τη διαχείριση bots μέσω κώδικα, δείτε τα άρθρα Bot Talk API και Management API.
Ξεκινώντας
Το API του chatbot δεν είναι άμεσα διαθέσιμο μόλις φορτωθεί η σελίδα σας - το script πρέπει πρώτα να φορτωθεί και να αρχικοποιηθεί. Πρέπει να χρησιμοποιήσετε το window.aichatbotCallback.onSessionActivated ως τον μηχανισμό εκκίνησης (bootstrap) για ασφαλή πρόσβαση στο API.
Χρησιμοποιήστε το δημόσιο κλειδί widget από την ενότητα Deploy (Δημοσίευση) ως YOUR_API_KEY, ποτέ ένα μυστικό κλειδί ck_ ή mk_. Διατηρήστε το αναγνωριστικό παρόχου (provider ID) και τον host του script από το δικό σας απόσπασμα Deploy. Τοποθετήστε τη ρύθμιση του callback πριν από τη συγκεκριμένη ετικέτα script:
<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 ενεργοποιείται όταν μια συνεδρία γίνεται διαθέσιμη, συμπεριλαμβανομένων των συνεδριών που έχουν ανακτηθεί. Ανάλογα με τις ρυθμίσεις δημοσίευσης και της οθόνης υποδοχής, αυτό δεν είναι απαραίτητα το πρώτο κλικ ανοίγματος του widget. Μπορεί να ενεργοποιηθεί ξανά. Καταχωρίστε τα callbacks μία φορά ανά αντικείμενο API για να αποφύγετε διπλότυπους handlers. Μέσα σε αυτό, είναι εγγυημένο ότι το αντικείμενο API υπάρχει και η συνεδρία είναι ενεργή, επομένως μπορείτε να καλείτε με ασφάλεια τις συναρτήσεις sendMessage(), updateClientContext(), καθώς και να καταχωρίζετε callbacks συμβάντων.
Σημαντικό: Μην καλείτε το window.aichatbotApi.getChatbotApi() απευθείας στο script της σελίδας σας χωρίς αναμονή - το αντικείμενο API δεν υπάρχει μέχρι να φορτωθεί και να αρχικοποιηθεί το script του ChatLab.
Συμβουλή: Εάν χρειάζεται μόνο να ελέγξετε το widget (εμφάνιση/απόκρυψη/εναλλαγή) και δεν χρειάζεστε ενεργή συνεδρία, ακούστε εναλλακτικά το DOM συμβάν aichatbotReady:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.showChat();
});
Μέθοδοι
| Μέθοδος | Περιγραφή |
|---|---|
showChat() |
Άνοιγμα του widget συνομιλίας |
hideChat() |
Κλείσιμο του widget συνομιλίας |
toggleChat() |
Εναλλαγή ορατότητας του widget |
sendMessage(text) |
Αποστολή μηνύματος μέσω κώδικα |
updateClientContext(data) |
Ενημέρωση περιβάλλοντος χρήστη (δείτε παρακάτω) |
setLanguage(code) |
Αλλαγή του widget σε μια γλώσσα (μόνο για πολύγλωσσα bots, δείτε παρακάτω) |
getLanguage() |
Επιστροφή της γλώσσας που χρησιμοποιεί αυτή τη στιγμή το widget |
getAvailableLanguages() |
Επιστροφή της λίστας των γλωσσών που προσφέρει το bot |
addCallback(name, fn) |
Δήλωση ενός event callback |
Σημείωση: Οι συναρτήσεις sendMessage και updateClientContext απαιτούν ενεργή συνεδρία. Χρησιμοποιήστε το μοτίβο αρχικοποίησης onSessionActivated που παρουσιάζεται στην ενότητα «Ξεκινώντας».
Callbacks
Δηλώστε callbacks συμβάντων μέσα στον handler onSessionActivated (δείτε την ενότητα «Ξεκινώντας»):
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);
});
Διαθέσιμα Callbacks
| Callback | Δεδομένα | Περιγραφή |
|---|---|---|
onSessionActivated |
- | Η συνεδρία συνομιλίας είναι έτοιμη |
onUserMessage |
string |
Ο χρήστης έστειλε ένα μήνυμα |
onChatbotMessage |
string |
Το bot απάντησε με ένα μήνυμα |
onProductClick |
Payload προϊόντος/συνδέσμου από την κάρτα | Ο χρήστης έκανε κλικ σε έναν σύνδεσμο προϊόντος. Ελέγξτε το payload για τον τύπο της κάρτας σας |
onLeadCollectionFormSubmit |
{email, phone, name} |
Υποβλήθηκε η φόρμα συλλογής lead |
onContactFormSubmit |
{email, message} |
Υποβλήθηκε η φόρμα επικοινωνίας/υποστήριξης |
onLiveChatFormSubmit |
{name, email} |
Υποβλήθηκε η φόρμα Live Chat, δεν αποτελεί απόδειξη ότι συνδέθηκε εκπρόσωπος |
onCustomFormSubmit |
{formId, values} |
Υποβλήθηκε προσαρμοσμένη φόρμα. Τα δεδομένα μεταφορτωμένων αρχείων δεν περιλαμβάνονται σε αυτό το callback |
Τα callbacks φορμών αναφέρουν υποβολή από την πλευρά του προγράμματος περιήγησης και όχι επιβεβαιωμένη αποθήκευση ή επιτυχή παράδοση. Για επεξεργασία επιβεβαιωμένη από το backend, χρησιμοποιήστε Webhooks. Τα payloads των callbacks ενδέχεται να περιέχουν προσωπικά δεδομένα. Μην τα προωθείτε μαζικά σε εργαλεία αναλυτικών στοιχείων ή δημόσια αρχεία καταγραφής (logs).
Παλαιού τύπου Event Callbacks
Το αντικείμενο window.aichatbotCallback υποστηρίζει επίσης τα onUserMessage και onChatbotMessage ως άμεσες ιδιότητες. Χρησιμοποιήστε το addCallback() για αρθρωτούς listeners χωρίς αντικατάσταση του καθολικού αντικειμένου:
window.aichatbotCallback = {
onUserMessage(message) { ... },
onChatbotMessage(message) { ... }
};
Σημείωση: Το window.aichatbotCallback.onSessionActivated δεν έχει καταργηθεί - αποτελεί τον συνιστώμενο μηχανισμό εκκίνησης (bootstrap) για την αρχικοποίηση του Chat API (δείτε την ενότητα «Ξεκινώντας»).
Ενσωμάτωση με Iframe
Όταν χρησιμοποιείτε ενσωμάτωση με iframe, χρησιμοποιήστε το postMessage για να επικοινωνήσετε με το chatbot:
Αποστολή εντολών
// 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);
Λήψη 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;
}
});
Ενημέρωση περιβάλλοντος πελάτη (Update Client Context)
Η συνάρτηση updateClientContext επιτρέπει την ενημέρωση του περιβάλλοντος του πελάτη κατά τη διάρκεια μιας ενεργής συνεδρίας:
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"
}
});
Παράμετροι:
- clientId (υποχρεωτικό): Μοναδικό αναγνωριστικό για τον πελάτη
- clientName, clientEmail, clientPhone (προαιρετικά): Στοιχεία πελάτη που εμφανίζονται στις συνομιλίες
- clientSecurityToken (προαιρετικό): Ένα διακριτικό (token) που προωθείται ως περιβάλλον για την προσαρμοσμένη ενσωμάτωσή σας. Το δικό σας API πρέπει να επικυρώνει τη γνησιότητα, τη λήξη και την εξουσιοδότησή του.
- clientHostContext (προαιρετικό): Πρόσθετες παράμετροι περιβάλλοντος προσβάσιμες σε προσαρμοσμένες ενέργειες API
Τα αναγνωριστικά και το περιβάλλον που παρέχονται από το πρόγραμμα περιήγησης δεν αποτελούν απόδειξη ταυτότητας. Μην τοποθετείτε μυστικά κλειδιά λογαριασμού στον κώδικα JavaScript της σελίδας και μην παραχωρείτε πρόσβαση αποκλειστικά επειδή ένα παρεχόμενο clientId ή email ταιριάζει με μια εγγραφή.
Χρήση σε κλήσεις API:
Τα χαρακτηριστικά περιβάλλοντος μπορούν να χρησιμοποιηθούν σε κλήσεις συναρτήσεων API ρυθμίζοντας την παράμετρο του API ως τύπο «Context»:
clientName,clientEmail,clientPhone,clientSecurityToken- Προσαρμοσμένες παράμετροι περιβάλλοντος κεντρικού υπολογιστή με πρόθεμα
client, π.χ.clientparam1,clientparam2
Γλώσσα
Αυτές οι μέθοδοι λειτουργούν μόνο σε πολύγλωσσα chatbots. Σε ένα μονόγλωσσο bot, το widget δεν διαθέτει επίπεδο γλώσσας προς εναλλαγή, επομένως το setLanguage() δεν κάνει τίποτα και το getAvailableLanguages() επιστρέφει μόνο τη βασική γλώσσα του bot. Ενεργοποιήστε πρώτα την υποστήριξη πολλών γλωσσών στο Settings > Languages (Ρυθμίσεις > Γλώσσες) - δείτε το άρθρο Πολύγλωσσα chatbots.
Χρησιμοποιήστε το setLanguage() όταν η σελίδα σας υπάρχει σε πολλές γλώσσες και θέλετε η συνομιλία να ανοίγει στη γλώσσα που διαβάζει ο επισκέπτης, αντί για εκείνη στην οποία τυχαίνει να είναι ρυθμισμένο το πρόγραμμα περιήγησής του:
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", ...]
});
Μπορείτε επίσης να δηλώσετε τη γλώσσα της σελίδας πριν φορτωθεί το script, αποτρέποντας έτσι μια σύντομη εμφάνιση λανθασμένης γλώσσας:
<script>window.aichatbotLanguage = "de";</script>
Ποια γλώσσα υπερισχύει. Το widget επιλέγει τη γλώσσα με την ακόλουθη σειρά προτεραιότητας:
- Μια γλώσσα που επέλεξε ο ίδιος ο επισκέπτης στο μενού γλωσσών του widget.
- Η γλώσσα της σελίδας, από το
setLanguage()ή τοwindow.aichatbotLanguage. - Η γλώσσα του προγράμματος περιήγησης του επισκέπτη.
- Η βασική γλώσσα του chatbot.
Η επιλογή του ίδιου του επισκέπτη απομνημονεύεται για επόμενες επισκέψεις, αλλά παύει να ισχύει μόλις αλλάξει η γλώσσα της σελίδας - επομένως ο επιλογέας γλώσσας του ιστότοπού σας υπερισχύει πάντα μιας παλαιότερης επιλογής. Οι κωδικοί ακολουθούν το πρότυπο ISO 639-1 (en, de, pl). Ένας περιφερειακός κωδικός όπως το de-AT μεταπίπτει στο de. Μια γλώσσα που δεν προσφέρει το bot αγνοείται.
Η αλλαγή της γλώσσας δεν τερματίζει τη συνομιλία ούτε διαγράφει το ιστορικό της.