Nachrichten mit eingehenden Webhooks an Google Chat senden

Mit eingehenden Webhooks können Sie asynchrone Nachrichten von Anwendungen, die keine Chat-Apps sind, an Google Chat senden. Sie können beispielsweise eine Monitoring-Anwendung so konfigurieren, dass Bereitschaftsmitarbeiter in Google Chat benachrichtigt werden, wenn ein Server ausfällt.

Informationen zum asynchronen Senden, Aktualisieren oder Löschen von Nachrichten in einem Chatbereich mit einer Chat-App finden Sie unter Nachrichten erstellen, lesen, aktualisieren, löschen.

Diagramm, das zeigt, wie eingehende Webhooks Nachrichten an Google Chat senden

Voraussetzungen

Zum Ausführen des Beispiels in diesem Leitfaden benötigen Sie:

Python

  • Python 3.10.7 oder höher.
  • Zugriff auf das Internet und einen Webbrowser.
  • Ein Google Workspace-Konto mit Zugriff auf Google Chat.
  • Ein vorhandener Google Chat-Bereich.
  • Die httplib2-Bibliothek. Führen Sie bei Bedarf den folgenden Befehlszeilenbefehl aus, um die Bibliothek mithilfe von pip zu installieren:

    pip install httplib2
    

Node.js

Apps Script

  • Zugriff auf das Internet und einen Webbrowser.
  • Ein Google Workspace-Konto mit Zugriff auf Google Chat.
  • Ein vorhandener Google Chat-Bereich.

Java

Webhook erstellen

Wenn Sie einen Webhook erstellen möchten, registrieren Sie ihn in dem Chatbereich von Google Chat, in dem Sie Nachrichten empfangen möchten. Schreiben Sie dann ein Skript, das Nachrichten sendet.

Schritt 1: Eingehenden Webhook registrieren

  1. Öffnen Sie Google Chat in einem Webbrowser.
  2. Rufen Sie den Gruppenbereich auf, dem Sie einen Webhook hinzufügen möchten.
  3. Klicken Sie oben neben dem Titel des Gruppenbereichs auf den Abwärtspfeil > Das Symbol zum Verwalten von Webhooks Webhooks verwalten.
  4. Wenn dieser Gruppenbereich bereits andere Webhooks hat, klicken Sie auf Weitere hinzufügen. Andernfalls überspringen Sie diesen Schritt.
  5. Geben Sie unter Name die Option „Quickstart Webhook“ ein.
  6. Geben Sie als Avatar-URL https://developers.google.com/chat/images/chat-product-icon.png ein.
  7. Klicke auf SPEICHERN.
  8. Klicken Sie auf Kopieren, um die vollständige Webhook-URL zu kopieren.
  9. Klicken Sie auf eine Stelle außerhalb des Felds, um das Dialogfeld „Eingehende Webhooks“ zu schließen.

Schritt 2: Webhook-Skript schreiben

Im Beispiel-Webhook-Skript wird eine Nachricht an den Gruppenbereich gesendet, in dem der Webhook registriert wird. Dazu wird eine create message-Anfrage an die Webhook-URL gesendet. Die Google Chat API antwortet mit einer Instanz von Message.

Wählen Sie unten eine Sprache aus, um eine spezifische Anleitung zum Erstellen des Webhook-Skripts zu erhalten:

Python

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen quickstart.py.

  2. Kopieren Sie den folgenden Code und fügen Sie ihn in quickstart.py ein:

    python/webhook/quickstart.py
    from json import dumps
    
    from httplib2 import Http
    
    
    def main():
        """Hangouts Chat incoming webhook quickstart."""
        url = 'https://chat.googleapis.com/v1/spaces/7D8la4AAAAE/messages?key=' \
              'AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=' \
              'HulDviWFMz6R5FW-GwlO4INCW1cZGDDExuWVaEbbr_g%3D'
        bot_message = {
            'text': 'Hello from a Python script!'}
        message_headers = {'Content-Type': 'application/json; charset=UTF-8'}
        http_obj = Http()
        response = http_obj.request(
            uri=url,
            method='POST',
            headers=message_headers,
            body=dumps(bot_message),
        )
        print(response)
    
    
    if __name__ == '__main__':
        main()
  3. Ersetzen Sie den Wert für die Variable url durch die Webhook-URL, die Sie in Schritt 1: Eingehenden Webhook registriert haben.

Node.js

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen index.js.

  2. Kopieren Sie den folgenden Code und fügen Sie ihn in index.js ein:

    Knoten/Webhook/Index.js
    /**
     * Sends asynchronous message into Google Chat
     * @return{obj} response
     */
    function webhook() {
      const fetch = require('node-fetch');
      const webhookURL = 'https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=u9IG_MuTBXw-tnqupPrPNinY2spKFcRBDp6dSldGUAw%3D';
    
      const data = JSON.stringify({
        'text': 'Hello from a Node script!',
      });
      let resp;
      fetch(webhookURL, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json; charset=UTF-8',
        },
        body: data,
      }).then((response) => {
        resp = response;
        console.log(response);
      });
      return resp;
    }
    
  3. Ersetzen Sie den Wert für die Variable webhookURL durch die Webhook-URL, die Sie in Schritt 1: Eingehenden Webhook registriert haben.

Apps Script

  1. Rufen Sie die Seite Apps Script auf.

  2. Klicken Sie auf Neues Projekt.

  3. Kopieren Sie den folgenden Code und fügen Sie ihn ein:

    apps-script/webhook/webhook.gs
    function webhook() {
      const url = "https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages";
      const options = {
        "method": "post",
        "headers": {
          "Content-Type": "application/json; charset=UTF-8"
        },
        "payload": JSON.stringify({
          "text": "Hello from Apps Script!"
        })
      };
      const response = UrlFetchApp.fetch(url, options);
      Logger.log(response);
    }
  4. Ersetzen Sie den Wert für die Variable url durch die Webhook-URL, die Sie in Schritt 1: Eingehenden Webhook registriert haben.

Java

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen pom.xml.

  2. Kopieren Sie in pom.xml Folgendes und fügen Sie es ein:

    java/webhook/pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.google.hangouts.chat.webhook</groupId>
      <artifactId>java-webhook-app</artifactId>
      <version>0.1.0</version>
    
      <name>java-webhook-app</name>
      <url>https://github.com/googleworkspace/hangouts-chat-samples/tree/main/java/webhook</url>
    
      <properties>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
      </properties>
    
      <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.9.1</version>
        </dependency>
      </dependencies>
    
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
  3. Erstellen Sie in Ihrem Arbeitsverzeichnis die folgende Verzeichnisstruktur src/main/java.

  4. Erstellen Sie im Verzeichnis src/main/java eine Datei mit dem Namen App.java.

  5. Kopieren Sie den folgenden Code und fügen Sie ihn in App.java ein:

    java/webhook/src/main/java/com/google/hangouts/chat/webhook/App
    import com.google.gson.Gson;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.util.Map;
    import java.net.URI;
    
    public class App {
      private static final String URL = "https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages";
      private static final Gson gson = new Gson();
      private static final HttpClient client = HttpClient.newHttpClient();
    
      public static void main(String[] args) throws Exception {
        String message = gson.toJson(Map.of("text", "Hello from Java!"));
    
        HttpRequest request = HttpRequest.newBuilder(
            URI.create(URL))
            .header("accept", "application/json; charset=UTF-8")
            .POST(HttpRequest.BodyPublishers.ofString(message))
            .build();
    
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    
        System.out.println(response.body());
      }
    }
  6. Ersetzen Sie den Wert für die Variable URL durch die Webhook-URL, die Sie in Schritt 1: Eingehenden Webhook registriert haben.

Schritt 3: Webhook-Skript ausführen

Führen Sie das Beispiel mit dem folgenden Befehl aus Ihrem Arbeitsverzeichnis in der Befehlszeile aus:

Python

  python3 quickstart.py

Node.js

  node index.js

Apps Script

  • Klicken Sie auf Ausführen.

Java

  mvn compile exec:java -Dexec.mainClass=App

Wenn Sie den Beispielcode ausführen, sendet der Webhook eine Nachricht an den Gruppenbereich, in dem Sie ihn registriert haben.

Nachrichtenthread starten oder beantworten

Sie können einen Nachrichtenthread starten oder darauf antworten, indem Sie der Webhook-URL den Parameter threadKey hinzufügen. Jeder threadKey ist einzigartig für die App, von der er festgelegt wird. Wenn zwei verschiedene Chat-Apps oder Webhooks dieselbe threadKey festlegen, werden zwei verschiedene Threads gestartet.

Unterhaltungsthread starten

Wenn Sie die erste Nachricht eines Threads mit einem Webhook posten möchten, hängen Sie den Parameter threadKey an die Webhook-URL an. Legen Sie threadKey auf einen beliebigen String fest, aber denken Sie daran, was er ist. Sie müssen ihn noch einmal angeben, damit Sie eine Antwort an den Thread senden können.

  https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?threadKey=ARBITRARY_STRING

Auf eine Unterhaltung antworten

Um eine Nachricht an einen vorhandenen Nachrichtenthread zu senden, hängen Sie den Parameter threadKey an die Webhook-URL an, die auf den Wert festgelegt ist, der zum Starten des Threads verwendet wird. Wenn Sie beispielsweise eine Nachricht an die folgende URL senden, wird eine Antwort an den Thread mit threadKey (MY-THREAD) gesendet:

  https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?threadKey=MY-THREAD

Limits und Überlegungen

Beachten Sie beim Konfigurieren von Webhooks die folgenden Einschränkungen und Überlegungen:

  • Jeder Webhook funktioniert nur in dem Chatbereich, in dem er registriert ist.

  • Sie können im Google Workspace Marketplace keine Webhooks veröffentlichen.

  • Webhooks sind nicht dialogorientiert. Sie können keine Nachrichten von Nutzern oder Terminen aus Google Chat beantworten oder empfangen.

  • Wenn in Ihrer Domain nur Organisationseinheiten (OEs) aktiviert sind und Chat-Apps aktiviert sind, geben eingehende Webhooks den folgenden Fehler zurück:

    {
      "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
      }
    }
    
  • Eingehende Webhooks funktionieren in Direktnachrichten, allerdings nur, wenn alle Nutzer Chat-Apps aktiviert haben.

  • Da Das Symbol zum Verwalten von Webhooks Webhooks verwalten nur in einem Webbrowser verfügbar ist, müssen Webhooks über die Chat-Web-App eingerichtet werden. Webhooks können über die mobile Chat App nicht konfiguriert werden.