Naar inhoud
lightbulb Welkom op de nieuwe kennisbank | We hebben de docs volledig vernieuwd met meer dan 160 features. Bekijk wat nieuw isarrow_forward

Google Chat API gebruiken voor chatbot-integraties

Bouw chatbots en stuur geautomatiseerde berichten naar Google Chat-spaces met inkomende webhooks en de volledige Chat API.

Google Chat is meer dan een berichtenapp: het is een platform waarop je bots bouwt die meldingen sturen, vragen beantwoorden en workflows starten. Of je nu een simpele build-notificatie naar een space wilt sturen of een interactieve assistent wilt bouwen, de Chat API biedt beide.

In dit artikel verken je de twee integratiepaden, wanneer je welke kiest, en hoe je het veilig en betrouwbaar opzet.

Twee manieren om te integreren

Er zijn twee fundamenteel verschillende benaderingen. De keuze hangt af van of je alleen wilt zenden of ook wilt ontvangen.

Wat je wilt Beste aanpak Complexiteit
Alleen meldingen naar een vaste space, geen interactie Inkomende webhook Laag
Gebruikers laten praten met je bot, knoppen, commando's Volwaardige Chat-app met eigen endpoint Hoog
Proactief berichten sturen vanuit je backend naar meerdere spaces Chat-app met service account Gemiddeld
lightbulb

Begin klein

Twijfel je? Start met een inkomende webhook. Werkt je use-case en wil je daarna interactie toevoegen, dan bouw je de webhook uit naar een volwaardige Chat-app. Je hoeft niet meteen het zwaarste pad te kiezen.

Inkomende webhooks

Dit is de snelste manier om iets in Chat te krijgen. Je maakt in de space een webhook aan (via Apps en integraties, Webhooks beheren) en stuurt er een POST met JSON naartoe.

import requests

requests.post(
    WEBHOOK_URL,
    json={"text": "De nachtelijke build is geslaagd."},
    headers={"Content-Type": "application/json"},
)

Goed om te weten over webhooks:

  • Een webhook post alleen in de space waarvoor hij is aangemaakt. Eenrichtingsverkeer dus.
  • De per-space limiet is ongeveer 1 bericht per seconde, gedeeld door alle webhooks in die space.
  • Een bericht mag maximaal 32.000 bytes groot zijn, inclusief tekst en cards.
warning

Behandel de webhook-URL als een wachtwoord

Iedereen met de webhook-URL kan ongevraagd in de space posten. Stop hem nooit in client-side code of in een publieke repository. Bewaar hem als secret in je secret manager en roteer hem direct als hij ooit lekt.

Rijke berichten met cards

Platte tekst is prima, maar met cards bouw je gestructureerde berichten met koppen, knoppen en afbeeldingen. Je gebruikt hiervoor de sleutel cardsV2 in de berichtbody.

Een card opbouwen en versturen

  1. Bouw een cardsV2-structuur op met sections en daarin widgets.
  2. Voeg knoppen toe die naar een URL linken of een actie triggeren.
  3. Verpak de card in de berichtbody onder de sleutel cardsV2.
  4. Verstuur de body via de webhook of via de Chat API.

Een minimaal voorbeeld van een card-body:

{
  "cardsV2": [
    {
      "cardId": "build-status",
      "card": {
        "header": { "title": "Build geslaagd" },
        "sections": [
          {
            "widgets": [
              { "textParagraph": { "text": "Versie 2.4.0 staat klaar." } },
              {
                "buttonList": {
                  "buttons": [
                    {
                      "text": "Bekijk logs",
                      "onClick": { "openLink": { "url": "https://example.com/logs" } }
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

Een interactieve Chat-app

Voor echte interactie bouw je een app die events ontvangt. Google stuurt een HTTPS-request naar jouw endpoint wanneer een gebruiker je bot aanspreekt. De flow ziet er zo uit:

  1. Een gebruiker noemt je bot of stuurt een bericht in een space.
  2. Google stuurt een event naar je geconfigureerde endpoint.
  3. Je app verwerkt het bericht en bepaalt een antwoord.
  4. Je stuurt een JSON-response terug, eventueel met een card.
  5. Voor proactieve berichten roep je spaces.messages.create aan op de Chat API.
dangerous

Verifieer elk inkomend request

Google voegt aan elk request een bearer-token toe in de Authorization-header. Bij audience-instelling Project Number is dat een self-signed JWT, uitgegeven en ondertekend door chat@system.gserviceaccount.com. Valideer dit token altijd tegen Google's publieke sleutels met een officiele Google API-clientbibliotheek (Java, Python, Node.js of .NET). Verifieert het token niet, antwoord dan met HTTP-status 401. Sla deze controle nooit over, anders kan iedereen je bot-endpoint misbruiken.

Authenticatie voor de API

Voor het proactief sturen van berichten via de API gebruik je een service account met de juiste Chat-scopes. De app moet in je Workspace gepubliceerd en goedgekeurd zijn voordat hij in spaces kan posten.

Een Chat-app configureer je in de Google Cloud Console onder de Chat API-instellingen. Daar stel je in:

  • hoe gebruikers de bot vinden;
  • welk endpoint events ontvangt;
  • welke authentication audience geldt (Project Number of HTTP endpoint URL);
  • welke slash-commando's beschikbaar zijn.
info

Cloud Run als endpoint

Draait je app-logica op een Cloud Run-functie? Kies dan HTTP endpoint URL als authentication audience en zorg dat de geconfigureerde URL exact overeenkomt met de URL van je Cloud Run-endpoint. Anders mislukt de tokenverificatie.

Veelgestelde vragen

Wat is het verschil tussen een webhook en een Chat-app?

Een webhook stuurt berichten maar een kant op, naar een specifieke space. Een Chat-app kan tweerichtingsverkeer aan: reageren op gebruikers, knoppen verwerken en in meerdere spaces werken.

Kan mijn bot in elke space posten?

Alleen in spaces waar de bot is toegevoegd. Voor webhooks geldt: uitsluitend de space waarvoor de webhook is aangemaakt.

Hoe maak ik slash-commando's?

Definieer ze in de Chat API-configuratie in de Google Cloud Console. Je app ontvangt dan een gestructureerd event zodra iemand het commando gebruikt.

Ondersteunt Chat interactieve formulieren?

Ja. Met dialogs en form-widgets in cards verzamel en verwerk je invoer zonder dat de gebruiker de space hoeft te verlaten.

Hoeveel berichten mag ik per seconde sturen?

Webhooks delen een limiet van ongeveer 1 bericht per seconde per space. Voor de Chat API gelden ruimere, per-project quota die je in de Cloud Console kunt bekijken.

Hoe groot mag een bericht zijn?

Maximaal 32.000 bytes, inclusief tekst en cards. Grote payloads splits je beter op in meerdere berichten of een card met meerdere secties.

Met de Chat API breng je je systemen direct in de communicatiestroom van je team, van simpele meldingen tot slimme assistenten.