Auf dieser Seite wird beschrieben, wie Sie einen Webhook einrichten, um asynchrone Nachrichten mithilfe externer Trigger in einen Chat-Bereich zu senden. Sie können beispielsweise eine Monitoring-Anwendung so konfigurieren, dass Mitarbeiter im Bereitschaftsdienst im Chat benachrichtigt werden, wenn ein Server ausfällt. Informationen zum Senden einer synchronen Nachricht mit einer Chat-App finden Sie unter Nachricht senden.
Bei dieser Art von Architektur können Nutzer nicht mit dem Webhook oder der verbundenen externen Anwendung interagieren, da die Kommunikation unidirektional ist. Webhooks sind nicht dialogorientiert. Sie können nicht auf Nachrichten von Nutzern oder Chat-App-Interaktionsereignisse antworten und keine Nachrichten von ihnen empfangen. Wenn Sie auf Nachrichten antworten möchten, erstellen Sie eine Chat-App anstelle eines Webhooks.
Ein Webhook ist technisch gesehen keine Chat-App, da Webhooks Anwendungen über standardmäßige HTTP-Anfragen verbinden. Auf dieser Seite wird er jedoch zur Vereinfachung als Chat-App bezeichnet. Jeder Webhook funktioniert nur in dem Chatbereich, in dem er registriert ist. Eingehende Webhooks funktionieren in Direktnachrichten, aber nur, wenn alle Nutzer Chat-Apps aktiviert haben. Sie können keine Webhooks im Google Workspace Marketplace veröffentlichen.
Das folgende Diagramm zeigt die Architektur eines Webhooks, der mit Chat verbunden ist:
Im obigen Diagramm hat eine Chat-App den folgenden Informationsfluss:
- Die Chat-App-Logik empfängt Informationen von externen Drittanbieterdiensten, z. B. einem Projektmanagementsystem oder einem Ticketing-Tool.
- Die Logik der Chat-App wird entweder in einem Cloud- oder einem lokalen System gehostet, das Nachrichten über eine Webhook-URL an einen bestimmten Chat-Gruppenbereich senden kann.
- Nutzer können Nachrichten von der Chat-App in diesem bestimmten Chat-Bereich empfangen, aber nicht mit der Chat-App interagieren.
Vorbereitung
Python
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat. Ihre Google Workspace-Organisation muss Nutzern erlauben, eingehende Webhooks hinzuzufügen und zu verwenden.
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Die
httplib2
-Bibliothek. Führen Sie den folgenden Befehl in der Befehlszeilenschnittstelle aus, um die Bibliothek zu installieren:pip install httplib2
Ein Google Chat-Bereich. Informationen zum Erstellen eines Gruppenbereichs mit der Google Chat API finden Sie unter Gruppenbereich erstellen. Weitere Informationen zum Erstellen von Gruppenbereichen in Chat
Node.js
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat. Ihre Google Workspace-Organisation muss Nutzern erlauben, eingehende Webhooks hinzuzufügen und zu verwenden.
- Node.js 14 oder höher
- Das Paketverwaltungstool npm
- Ein Google Chat-Bereich. Informationen zum Erstellen eines Gruppenbereichs mit der Google Chat API finden Sie unter Gruppenbereich erstellen. Weitere Informationen zum Erstellen von Gruppenbereichen in Chat
Java
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat. Ihre Google Workspace-Organisation muss Nutzern erlauben, eingehende Webhooks hinzuzufügen und zu verwenden.
- Java 11 oder höher
- Das Paketverwaltungstool Maven
- Ein Google Chat-Bereich. Informationen zum Erstellen eines Gruppenbereichs mit der Google Chat API finden Sie unter Gruppenbereich erstellen. Weitere Informationen zum Erstellen von Gruppenbereichen in Chat
Apps Script
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat. Ihre Google Workspace-Organisation muss Nutzern erlauben, eingehende Webhooks hinzuzufügen und zu verwenden.
- Erstellen Sie ein eigenständiges Apps Script-Projekt und aktivieren Sie den erweiterten Chatdienst.
- Ein Google Chat-Bereich. Informationen zum Erstellen eines Gruppenbereichs mit der Google Chat API finden Sie unter Gruppenbereich erstellen. Weitere Informationen zum Erstellen von Gruppenbereichen in Chat
Webhook erstellen
Um einen Webhook zu erstellen, registrieren Sie ihn in dem Chat-Gruppenbereich, in dem Sie Nachrichten empfangen möchten, und schreiben Sie dann ein Skript, das Nachrichten sendet.
Eingehenden Webhook registrieren
- Öffnen Sie Chat in einem Browser. Webhooks können nicht über die mobile Chat-App konfiguriert werden.
- Rufen Sie den Gruppenbereich auf, dem Sie einen Webhook hinzufügen möchten.
- Klicken Sie neben dem Titel des Projektbereichs auf das Dreipunkt-Menü und dann auf Apps und Integrationen.
Klicken Sie auf
. Webhooks hinzufügen.Geben Sie im Feld Name
Quickstart Webhook
ein.Geben Sie im Feld Avatar-URL den Wert
https://developers.google.com/chat/images/chat-product-icon.png
ein.Klicken Sie auf Speichern.
Wenn Sie die Webhook-URL kopieren möchten, klicken Sie auf
Mehr und dann auf Link kopieren.
Webhook-Script schreiben
Das Beispiel-Webhook-Script sendet eine Nachricht an den Bereich, in dem der Webhook registriert ist. Dazu wird eine POST
-Anfrage an die Webhook-URL gesendet. Die Chat API antwortet mit einer Instanz von Message
.
Wählen Sie eine Sprache aus, um zu erfahren, wie Sie ein Webhook-Skript erstellen:
Python
Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
quickstart.py
.Fügen Sie in
quickstart.py
den folgenden Code ein:Ersetzen Sie den Wert für die Variable
url
durch die Webhook-URL, die Sie beim Registrieren des Webhooks kopiert haben.
Node.js
Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
index.js
.Fügen Sie in
index.js
den folgenden Code ein:Ersetzen Sie den Wert für die Variable
url
durch die Webhook-URL, die Sie beim Registrieren des Webhooks kopiert haben.
Java
Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
pom.xml
.Kopieren Sie in
pom.xml
Folgendes und fügen Sie es ein:Erstellen Sie in Ihrem Arbeitsverzeichnis die folgende Verzeichnisstruktur:
src/main/java
.Erstellen Sie im Verzeichnis
src/main/java
eine Datei mit dem NamenApp.java
.Fügen Sie in
App.java
den folgenden Code ein:Ersetzen Sie den Wert für die Variable
URL
durch die Webhook-URL, die Sie beim Registrieren des Webhooks kopiert haben.
Apps Script
Rufen Sie in einem Browser Apps Script auf.
Klicken Sie auf Neues Projekt.
Fügen Sie den folgenden Code ein:
Ersetzen Sie den Wert für die Variable
url
durch die Webhook-URL, die Sie beim Registrieren des Webhooks kopiert haben.
Webhook-Skript ausführen
Führen Sie das Skript in einer Befehlszeile aus:
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps Script
- Klicken Sie auf Ausführen.
Wenn Sie den Code ausführen, sendet der Webhook eine Nachricht an den Gruppenbereich, in dem Sie ihn registriert haben.
Unterhaltung starten oder darauf antworten
Geben Sie
spaces.messages.thread.threadKey
im Anfragetext der Nachricht an. Je nachdem, ob Sie einen Thread starten oder auf einen Thread antworten, verwenden Sie die folgenden Werte fürthreadKey
:Wenn Sie einen Thread starten, legen Sie
threadKey
auf einen beliebigen String fest. Notieren Sie sich diesen Wert jedoch, um eine Antwort auf den Thread zu posten.Wenn Sie auf einen Thread antworten, geben Sie die
threadKey
an, die beim Starten des Threads festgelegt wurde. Wenn Sie beispielsweise eine Antwort auf den Thread posten möchten, in dem für die ursprüngliche NachrichtMY-THREAD
verwendet wurde, legen SieMY-THREAD
fest.
Definieren Sie das Thread-Verhalten, wenn die angegebene
threadKey
nicht gefunden wird:Auf einen Thread antworten oder einen neuen Thread starten Fügen Sie der Webhook-URL den Parameter
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
hinzu. Wenn Sie diesen URL-Parameter übergeben, sucht Chat nach einem vorhandenen Thread mit der angegebenenthreadKey
. Wird ein solcher Thread gefunden, wird die Nachricht als Antwort auf diesen Thread gepostet. Wenn keine gefunden wird, wird mit der Nachricht ein neuer Thread für diesethreadKey
gestartet.Auf einen Thread antworten oder nichts tun Fügen Sie der Webhook-URL den Parameter
messageReplyOption=REPLY_MESSAGE_OR_FAIL
hinzu. Wenn Sie diesen URL-Parameter übergeben, sucht Chat nach einem vorhandenen Thread mit der angegebenenthreadKey
. Wird ein solcher Thread gefunden, wird die Nachricht als Antwort auf diesen Thread gepostet. Wenn keine gefunden wird, wird die Nachricht nicht gesendet.
Weitere Informationen finden Sie unter
messageReplyOption
.
Im folgenden Codebeispiel wird ein Nachrichten-Thread gestartet oder auf einen Nachrichten-Thread geantwortet:
Python
Node.js
Apps Script
Fehler verarbeiten
Webhook-Anfragen können aus verschiedenen Gründen fehlschlagen, z. B.
- Ungültige Anfrage.
- Der Webhook oder der Gruppenbereich, in dem der Webhook gehostet wird, wird gelöscht.
- Vorübergehende Probleme wie Netzwerkverbindung oder Kontingentlimits.
Beim Erstellen Ihres Webhooks sollten Sie Fehler folgendermaßen behandeln:
- Fehler protokollieren.
- Bei zeitbasierten Fehlern, Kontingentfehlern oder Netzwerkverbindungsfehlern wird die Anfrage mit exponentiellem Backoff wiederholt.
- Nichts tun. Das ist angemessen, wenn das Senden der Webhook-Nachricht nicht wichtig ist.
Die Google Chat API gibt Fehler als google.rpc.Status
zurück, die einen HTTP-Fehler code
enthalten, der den aufgetretenen Fehlertyp angibt: einen Clientfehler (400er-Serie) oder einen Serverfehler (500er-Serie). Eine Übersicht aller HTTP-Zuordnungen finden Sie unter google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Informationen zum Interpretieren von HTTP-Statuscodes und zum Beheben von Fehlern finden Sie unter Fehler.
Einschränkungen und Überlegungen
- Wenn Sie eine Nachricht mit einem Webhook in der Google Chat API erstellen, enthält die Antwort nicht die vollständige Nachricht.
In der Antwort werden nur die Felder
name
undthread.name
ausgefüllt. - Für Webhooks gilt das Kontingent pro Bereich für
spaces.messages.create
: 1 Anfrage pro Sekunde, die für alle Webhooks im Bereich gilt. Chat lehnt möglicherweise auch Webhook-Anfragen ab, die im selben Bereich mehr als eine Anfrage pro Sekunde enthalten. Weitere Informationen zu Kontingenten für die Chat API finden Sie unter Nutzungslimits.