Wysyłanie wiadomości do Google Chat za pomocą przychodzących webhooków

Przychodzące webhooki pozwalają wysyłać do Google Chat wiadomości asynchroniczne z aplikacji innych niż Google Chat. Możesz na przykład skonfigurować aplikację do monitorowania w Google Chat powiadamiając pracowników dyżurnych o przerwaniu działania serwera.

Informacje o asynchronicznego wysyłania, aktualizowaniu i usuwaniu wiadomości w pokoju czatu za pomocą aplikacji do obsługi czatu znajdziesz w artykule Tworzenie, odczytywanie, aktualizowanie i usuwanie wiadomości.

Architektura przychodzących webhooków, które wysyłają asynchroniczne wiadomości do Google Chat.

Wymagania wstępne

Aby uruchomić przykład w tym przewodniku, musisz mieć:

Python

  • Python w wersji 3.10.7 lub nowszej.
  • Dostęp do internetu i przeglądarki.
  • Musisz mieć konto Google Workspace z dostępem do Google Chat.
  • Pokój Google Chat.
  • Biblioteka httplib2. W razie potrzeby uruchom to polecenie w interfejsie wiersza poleceń, aby zainstalować bibliotekę za pomocą pip:

    pip install httplib2
    

Node.js

Google Apps Script

Java

Tworzenie webhooka

Aby utworzyć webhooka, zarejestruj go w pokoju Google Chat, w którym chcesz otrzymywać wiadomości, a następnie utwórz skrypt, który je wysyła.

Krok 1. Zarejestruj webhooka przychodzącego webhooka

  1. W przeglądarce otwórz Google Chat.
  2. Otwórz pokój, do którego chcesz dodać webhooka.
  3. U góry obok nazwy pokoju kliknij strzałkę w dół > Aplikacje i integracje.
  4. Kliknij Zarządzaj webhookami.
  5. Jeśli w tym pokoju są już inne webhooki, kliknij Dodaj kolejny. W przeciwnym razie pomiń ten krok.
  6. W polu Nazwa wpisz „Quickstart Webhook”.
  7. W polu Adres URL awatara wpisz https://developers.google.com/chat/images/chat-product-icon.png.
  8. Kliknij ZAPISZ.
  9. Aby skopiować pełny adres URL webhooka, kliknij Kopiuj.
  10. Kliknij poza polem, aby zamknąć okno przychodzące webhooki.

Krok 2. Napisz skrypt webhooka

Przykładowy skrypt webhooka publikuje wiadomość w pokoju, w którym jest zarejestrowany, wykorzystując POST w żądaniu utworzenia wiadomości do jego adresu URL. Google Chat API odpowiada za pomocą wystąpienia Message.

Aby dowiedzieć się, jak utworzyć skrypt webhooka, wybierz język poniżej:

Python

  1. W katalogu roboczym utwórz plik o nazwie quickstart.py.

  2. Skopiuj ten kod i wklej go w quickstart.py:

    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. Zamień wartość zmiennej url na adres URL webhooka skopiowany w kroku 1: zarejestruj przychodzący webhook.

Node.js

  1. W katalogu roboczym utwórz plik o nazwie index.js.

  2. Skopiuj ten kod i wklej go w index.js:

    węzeł/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. Zamień wartość zmiennej webhookURL na adres URL webhooka skopiowany w kroku 1: zarejestruj przychodzący webhook.

Google Apps Script

  1. Otwórz stronę Apps Script.

  2. Kliknij New Project (Nowy projekt).

  3. Skopiuj i wklej ten kod:

    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. Zamień wartość zmiennej url na adres URL webhooka skopiowany w kroku 1: zarejestruj przychodzący webhook.

Java

  1. W katalogu roboczym utwórz plik o nazwie pom.xml.

  2. Skopiuj i wklej w pom.xml ten fragment:

    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. W katalogu roboczym utwórz tę strukturę katalogów: src/main/java.

  4. W katalogu src/main/java utwórz plik o nazwie App.java.

  5. Skopiuj ten kod i wklej go w App.java:

    java/webhook/src/main/java/com/google/hangouts/chat/webhook/App.java
    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. Zamień wartość zmiennej URL na adres URL webhooka skopiowany w kroku 1: zarejestruj przychodzący webhook.

Krok 3. Uruchom skrypt webhooka

Uruchom przykładowy kod, uruchamiając w interfejsie wiersza poleceń to polecenie z katalogu roboczego:

Python

  python3 quickstart.py

Node.js

  node index.js

Google Apps Script

  • Kliknij Wykonaj.

Java

  mvn compile exec:java -Dexec.mainClass=App

Gdy uruchomisz przykładowy kod, webhook wyśle wiadomość do pokoju, w którym jest zarejestrowany.

Rozpoczynanie wątku wiadomości i odpowiadanie na niego

Możesz rozpocząć wątek wiadomości lub odpowiedzieć na niego, dodając parametr threadKey do adresu URL webhooka. Każda właściwość threadKey jest unikalna dla aplikacji, która ją ustawia. Jeśli 2 różne aplikacje do obsługi czatu lub webhooki mają tę samą wartość threadKey, rozpoczną się 2 różne wątki.

Rozpoczynanie wątku wiadomości

Aby opublikować pierwszą wiadomość w wątku z webhookiem, dodaj do jego adresu URL parametry threadKey i messageReplyOption. W polu threadKey możesz wpisać dowolny ciąg znaków, ale pamiętaj, że będzie on wymagany do opublikowania odpowiedzi w wątku.

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

Odpowiadanie w wątku wiadomości

Aby wysłać wiadomość w istniejącym wątku wiadomości, dodaj parametry threadKey i messageReplyOption do adresu URL webhooka ustawionego na początek tego wątku. Na przykład wysłanie wiadomości na ten adres URL powoduje wysłanie odpowiedzi w wątku, gdzie threadKey to MY-THREAD, a messageReplyOption to REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD:

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

Ograniczenia i kwestie

Podczas konfigurowania webhooków zwróć uwagę na te ograniczenia:

  • Każdy webhook działa tylko w pokoju czatu, w którym jest zarejestrowany.

  • Nie możesz publikować webhooków w Google Workspace Marketplace.

  • Webhooki nie nadają się do konwersacji. Nie może odpowiadać na wiadomości użytkowników ani wydarzeń z Google Chat ani na nie otrzymywać powiadomień.

  • Jeśli w Twojej domenie tylko jednostki organizacyjne mają włączone aplikacje czatu, przychodzące webhooki zwracają następujący błąd:

    {
      "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
      }
    }
    
  • Webhooki przychodzące działają na czacie, ale tylko wtedy, gdy wszyscy użytkownicy mają włączone aplikacje Google Chat.

  • Ikona zarządzania webhookamiZarządzaj webhookami są dostępne tylko w przeglądarce, dlatego webhooka można skonfigurować tylko w aplikacji internetowej Google Chat.