Waarom een chatbot voor Google Chat?
Een chatbot in Google Chat kan repetitieve taken automatiseren, informatie ophalen uit andere systemen en acties uitvoeren zonder dat gebruikers een aparte applicatie hoeven te openen. Denk aan een bot die verlofaanvragen verwerkt, de status van een supportticket ophaalt, of dagelijkse standups coordineert.
Google Chat biedt twee manieren om bots te bouwen:
- Google Apps Script: laagdrempelig, geen externe hosting nodig en directe integratie met Google Workspace.
- Externe HTTP-webhook of Cloud Function: volledige controle, geschikt voor complexe logica en integraties met externe API's.
Cloud-project verplicht
Voor het publiceren van een Google Chat-app heb je een Google Cloud-project nodig met de Chat API ingeschakeld. Voor intern gebruik binnen je eigen organisatie hoef je de app niet in de Google Workspace Marketplace te publiceren.
Voorbereiding: Google Cloud-project opzetten
Cloud-project klaarzetten
- Ga naar console.cloud.google.com en log in met je Workspace-account.
- Maak een nieuw project aan of selecteer een bestaand project.
- Ga naar API's en services > Bibliotheek en zoek naar Google Chat API.
- Klik op Inschakelen.
- Ga naar API's en services > Credentials en maak een serviceaccount aan als je later proactieve berichten of externe authenticatie nodig hebt.
Methode 1: Bot bouwen met Apps Script
Apps Script-project aanmaken
Basiscode toevoegen
- Ga naar script.google.com en klik op Nieuw project.
- Verwijder de standaardcode in het editor-venster.
- Voeg de volgende basiscode toe en sla op met een duidelijke naam, bijvoorbeeld "ChatBot Workspace".
function onMessage(event) {
var userMessage = event.message.text || '';
var userName = event.user.displayName;
if (userMessage.toLowerCase().indexOf('help') !== -1) {
var hulp = 'Hallo ' + userName + '! Ik kan je helpen met:
'
+ '- /status: projectstatus ophalen
'
+ '- /verlof: verlofaanvraag indienen';
return { text: hulp };
}
return {
text: 'Ik heb je bericht ontvangen. Typ "help" voor de beschikbare commandos.'
};
}
function onAddToSpace(event) {
return {
text: 'Hallo! Ik ben je nieuwe assistent-bot. Typ "help" voor meer informatie.'
};
}
function onRemoveFromSpace(event) {
console.log('Bot verwijderd uit Space: ' + event.space.name);
}
De callbacknamen onMessage, onAddToSpace en onRemoveFromSpace zijn de namen die Apps Script verwacht. Je koppelt ze straks in de Chat API-configuratie.
Apps Script publiceren als Chat-app
Implementeren en koppelen
- Klik in het Apps Script-menu op Implementeren > Testimplementaties.
- Kopieer de Head-implementatie-ID en klik op Gereed. Voor een stabiele, niet-meebewegende ID kies je in plaats daarvan Implementeren > Nieuwe implementatie en bij Type selecteren de optie Add-on.
- Ga naar je Google Cloud-project en open de Google Chat API.
- Ga naar het tabblad Configuratie.
- Vul de bot-naam, avatar-URL en beschrijving in en schakel de interactieve functies in.
- Kies bij Verbindingsinstellingen voor Apps Script en plak de gekopieerde implementatie-ID.
- Sla de configuratie op.
Eerst testen met de Head-ID
Tijdens het ontwikkelen werk je het handigst met de Head-implementatie-ID uit Testimplementaties: die wijst altijd naar je nieuwste code, zodat je niet bij elke wijziging opnieuw hoeft te implementeren. Schakel pas over op een Add-on-implementatie als de bot stabiel is.
Methode 2: Bot bouwen met een externe webhook
Voor complexere bots gebruik je een externe server, bijvoorbeeld Cloud Run, Cloud Functions of een eigen server. Bij Verbindingsinstellingen kies je dan niet voor Apps Script, maar voor een HTTP-endpoint-URL.
Cloud Function aanmaken
const functions = require('@google-cloud/functions-framework');
functions.http('chatbot', (req, res) => {
const event = req.body;
if (event.type === 'MESSAGE') {
const userMessage = event.message.text;
const userName = event.user.displayName;
res.json({
text: 'Hallo ' + userName + ', ik heb je bericht ontvangen: ' + userMessage
});
} else if (event.type === 'ADDED_TO_SPACE') {
res.json({ text: 'Bedankt voor de uitnodiging! Ik sta klaar om te helpen.' });
} else {
res.json({});
}
});
Kaarten (cardsV2) gebruiken voor rijkere reacties
Google Chat-bots kunnen rijke kaarten teruggeven in plaats van platte tekst. Een kaart kan knoppen, afbeeldingen en gestructureerde informatie bevatten:
function createCard(titel, beschrijving, knopTekst, knopUrl) {
return {
cardsV2: [{
cardId: 'info-card',
card: {
header: {
title: titel,
subtitle: beschrijving
},
sections: [{
widgets: [{
buttonList: {
buttons: [{
text: knopTekst,
onClick: {
openLink: { url: knopUrl }
}
}]
}
}]
}]
}
}]
};
}
Slash-commando's registreren
Slash-commando's geven gebruikers een intuitieve manier om de bot aan te sturen. Je registreert ze in de Chat API-configuratie:
- Ga naar de Google Chat API-configuratie in je Cloud-project.
- Scroll naar Slash-commando's.
- Voeg commando's toe, bijvoorbeeld
/status,/verlofen/help. - Elk commando krijgt een ID (een getal) waarmee je het in code herkent.
In de botcode herken je een slash-commando via het veld event.message.slashCommand:
if (event.message.slashCommand) {
const commandId = event.message.slashCommand.commandId;
if (commandId === 1) { // /status
return getProjectStatus();
}
}
De bot toevoegen aan een Space
Bot installeren in een Space
- Open de Space in Google Chat.
- Klik bovenaan op de naam van de Space.
- Kies Apps en integraties.
- Klik op Apps toevoegen.
- Zoek op de naam van jouw bot.
- Klik op Toevoegen.
Testen en debuggen
Test je bot systematisch:
- Stuur directe berichten naar de bot via een DM.
- Test alle geregistreerde slash-commando's.
- Test edge-cases: lege berichten, speciale tekens en lange teksten.
- Controleer de logboeken via Apps Script (Uitvoeren > Logboeken) of via Cloud Logging bij een externe webhook.
Let op de gebruikslimieten
Zowel de Chat API als Apps Script kennen quota's. Bij veel verkeer of proactieve berichten kun je tegen limieten aanlopen, waardoor reacties traag worden of mislukken. Controleer de actuele quota's in de Cloud Console en bouw waar nodig een nette foutafhandeling met retry-logica in.
Kan de bot berichten sturen zonder dat een gebruiker iets vraagt?
Ja. Via de Chat REST API (de methode spaces.messages.create) kan de bot proactief berichten naar Spaces of gebruikers sturen. Dit vereist app-authenticatie met een serviceaccount, en de bot moet lid zijn van de betreffende Space.
Is mijn bot zichtbaar voor iedereen in de organisatie?
Een interne bot is alleen zichtbaar voor gebruikers binnen je eigen organisatie. Wil je de bot beschikbaar maken voor externe organisaties, dan moet je hem publiceren in de Google Workspace Marketplace.
Kan de bot reageren op emoji-reacties?
Ja. De bot ontvangt ook reactie-events. Verwerk het event-type REACTION_ADDED in je handler om hierop te reageren.
Hoeveel berichten kan de bot per dag verwerken?
De Google Chat API heeft gebruikslimieten per project, en voor Apps Script-bots gelden bovendien de standaard Apps Script-quota's. Controleer de actuele waarden in de Cloud Console.
Wat is het verschil tussen de Head-implementatie-ID en een Add-on-implementatie?
De Head-ID wijst altijd naar je nieuwste code en is ideaal tijdens ontwikkelen. Een Add-on-implementatie is een vaste momentopname met een stabiele ID, geschikt voor productie.
Kan ik de botlogica ook buiten Google Chat inzetten?
Ja. De onderliggende code (de Cloud Function of het Apps Script-project) kan ook door andere systemen worden aangeroepen. Alleen de Chat-specifieke event-afhandeling is aan Google Chat gebonden.