Chat API - overzicht
Deze functie is alleen beschikbaar in geselecteerde abonnementen. Hiermee kun je de chatwidget programmatisch beheren en callbacks registreren voor chatgebeurtenissen.
Zoek je de REST API? Dit artikel behandelt de JavaScript widget-API in de browser (window.aichatbotApi) voor pagina's waarop de ChatLab-widget is ingesloten. Zie de artikelen over de Bot Talk API en Management API voor de server-to-server REST API om vanuit je backend gesprekken te voeren met bots of bots programmatisch te beheren.
Aan de slag
De chatbot-API is niet direct beschikbaar zodra je pagina laadt - het script moet eerst laden en initialiseren. Je moet window.aichatbotCallback.onSessionActivated gebruiken als bootstrap-mechanisme om veilig toegang te krijgen tot de API.
Plaats dit vóór de ChatLab-scripttag:
<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 wordt geactiveerd zodra de chatsessie is aangemaakt (oftewel wanneer de gebruiker de widget opent). Binnen deze functie bestaat het API-object gegarandeerd en is de sessie actief, zodat je veilig sendMessage() en updateClientContext() kunt aanroepen en callbacks voor gebeurtenissen kunt registreren.
Belangrijk: Roep window.aichatbotApi.getChatbotApi() niet direct aan in het script van je pagina zonder te wachten - het API-object bestaat pas zodra het ChatLab-script is geladen en geïnitialiseerd.
Tip: Als je de widget alleen wilt bedienen (tonen/verbergen/wisselen) en geen actieve sessie nodig hebt, luister dan naar het DOM-event aichatbotReady:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.showChat();
});
Methoden
| Methode | Omschrijving |
|---|---|
showChat() |
Open de chatwidget |
hideChat() |
Sluit de chatwidget |
toggleChat() |
Zichtbaarheid van de widget wisselen |
sendMessage(text) |
Verstuur een bericht programmatisch |
updateClientContext(data) |
Werk de gebruikerscontext bij (zie hieronder) |
setLanguage(code) |
Schakel de widget over naar een taal (alleen meertalige bots, zie hieronder) |
getLanguage() |
Retourneer de taal die de widget momenteel gebruikt |
getAvailableLanguages() |
Retourneer de lijst met talen die de bot aanbiedt |
addCallback(name, fn) |
Registreer een event-callback |
Opmerking: sendMessage en updateClientContext vereisen een actieve sessie. Gebruik het initialisatiepatroon onSessionActivated zoals getoond onder Aan de slag.
Callbacks
Registreer event-callbacks binnen je onSessionActivated-handler (zie Aan de slag):
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);
});
Beschikbare callbacks
| Callback | Gegevens | Omschrijving |
|---|---|---|
onSessionActivated |
- | Chatsessie is gereed |
onUserMessage |
string |
Gebruiker heeft een bericht verstuurd |
onChatbotMessage |
string |
Bot heeft geantwoord met een bericht |
onProductClick |
string (product-ID of link) |
Gebruiker heeft op een product geklikt (vereist ingeschakelde Offer Cards) |
onLeadCollectionFormSubmit |
{email, phone, name} |
Formulier voor leadverzameling is verzonden |
onContactFormSubmit |
{email, message} |
Contact-/supportformulier is verzonden |
onLiveChatFormSubmit |
{name, email} |
Live Chat-formulier is verzonden |
Verouderde event-callbacks (afgeraden)
Het object window.aichatbotCallback ondersteunt ook onUserMessage en onChatbotMessage als directe eigenschappen. Dit formaat is verouderd - gebruik in plaats daarvan addCallback() voor toegang tot alle callbacktypes:
window.aichatbotCallback = {
onUserMessage(message) { ... },
onChatbotMessage(message) { ... }
};
Opmerking: window.aichatbotCallback.onSessionActivated is niet verouderd - het is het aanbevolen bootstrap-mechanisme om de Chat API te initialiseren (zie Aan de slag).
Iframe-implementatie
Wanneer je een iframe-implementatie gebruikt, gebruik dan postMessage om met de chatbot te communiceren:
Commando's verzenden
const chatbotIframe = document.querySelector('iframe');
// Chat tonen
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'showChat'
}, '*');
// Chat verbergen
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'hideChat'
}, '*');
// Bericht versturen
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'sendMessage',
payload: 'Hello!'
}, '*');
// Clientcontext bijwerken
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'updateClientContext',
payload: { clientId: 'user123', clientName: 'John' }
}, '*');
// Taal wisselen (alleen meertalige bots)
chatbotIframe.contentWindow.postMessage({
type: 'aichatbot',
action: 'setLanguage',
payload: 'de'
}, '*');
Callbacks ontvangen
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;
}
});
Clientcontext bijwerken
Met de functie updateClientContext kun je de context van de client tijdens een actieve sessie bijwerken:
chatbot.updateClientContext({
clientId: "unique-client-identifier", // Verplicht
clientName: "John", // Optioneel
clientEmail: "john@doe.com", // Optioneel
clientPhone: "555-444-333", // Optioneel
clientSecurityToken: "your-token", // Optioneel
clientHostContext: { // Optioneel
param1: "value1",
param2: "value2"
}
});
Parameters:
- clientId (verplicht): Unieke id voor de client
- clientName, clientEmail, clientPhone (optioneel): Gegevens van de client die in gesprekken worden weergegeven
- clientSecurityToken (optioneel): Beveiligingstoken voor API-autorisatie
- clientHostContext (optioneel): Extra contextparameters die toegankelijk zijn in aangepaste API-acties
Gebruik in API-aanroepen:
Contextkenmerken kunnen worden gebruikt in API-functieaanroepen door de API-parameter te configureren als het type "Context":
clientName,clientEmail,clientPhone,clientSecurityToken- Aangepaste hostcontextparameters voorafgegaan door
client, bijv.clientparam1,clientparam2
Taal
Deze methoden werken alleen bij meertalige chatbots. Bij een eentalige bot heeft de widget geen taallaag om te wisselen, waardoor setLanguage() niets doet en getAvailableLanguages() alleen de eigen taal van de bot retourneert. Schakel eerst ondersteuning voor meerdere talen in via Settings > Languages (Instellingen > Talen) - zie Meertalige chatbots.
Gebruik setLanguage() wanneer je pagina in meerdere talen bestaat en je wilt dat de chat opent in de taal die de bezoeker leest, in plaats van de taal waarop diens browser toevallig is ingesteld:
window.addEventListener('aichatbotReady', function(e) {
var chatbot = window.aichatbotApi.getChatbotApi(e.detail.apiKey);
chatbot.setLanguage(document.documentElement.lang); // bijv. "de"
console.log(chatbot.getLanguage()); // "de"
console.log(chatbot.getAvailableLanguages()); // ["en", "de", "fr", ...]
});
Je kunt de paginataal ook opgeven voordat het script laadt, wat een korte flits van de verkeerde taal voorkomt:
<script>window.aichatbotLanguage = "de";</script>
Welke taal voorrang krijgt. De widget bepaalt de taal in deze volgorde:
- Een taal die de bezoeker zelf heeft gekozen in het taalmenu van de widget.
- De paginataal, afkomstig uit
setLanguage()ofwindow.aichatbotLanguage. - De browsertaal van de bezoeker.
- De basistaal van de chatbot.
De eigen keuze van een bezoeker wordt onthouden voor latere bezoeken, maar vervalt zodra de paginataal verandert - zo heeft jouw taalkiezer altijd voorrang op een verouderde keuze. Codes zijn volgens ISO 639-1 (en, de, pl); een regionale code zoals de-AT valt terug op de. Een taal die de bot niet aanbiedt, wordt genegeerd.
Het wisselen van taal beëindigt het gesprek niet en wist het transcript niet.