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

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Przychodzące webhooki pozwalają wysyłać do Google Chat wiadomości asynchroniczne z aplikacji, które nie są aplikacjami do obsługi czatu. Możesz na przykład skonfigurować aplikację do monitorowania, aby powiadamiała pracowników Google Chat o awarii serwera.

Aby asynchronicznie wysyłać, aktualizować i usuwać wiadomości w pokoju czatu w aplikacji Google Chat, przeczytaj artykuł Tworzenie, odczytywanie, aktualizowanie i usuwanie wiadomości.

Schemat pokazujący, jak przychodzące webhooki wysyłają 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.
  • Istniejące miejsce w Google Chat.
  • Biblioteka httplib2. W razie potrzeby uruchom następujące polecenie interfejsu wiersza poleceń, aby zainstalować bibliotekę za pomocą narzędzia pip:

    pip install httplib2
    

Node.js

Google Apps Script

  • Dostęp do internetu i przeglądarki.
  • Musisz mieć konto Google Workspace z dostępem do Google Chat.
  • Istniejące miejsce w Google Chat.

Java

Tworzenie webhooka

Aby utworzyć webhooka, zarejestruj go w pokoju Google Chat, w którym chcesz otrzymywać wiadomości, a potem wpisz skrypt wysyłający wiadomości.

Krok 1. Zarejestruj przychodzącego webhooka

  1. Otwórz Google Chat w przeglądarce.
  2. Przejdź do pokoju, do którego chcesz dodać webhooka.
  3. U góry obok tytułu pokoju kliknij strzałkę w dół > Ikona zarządzania webhookami Zarządzaj webhookami.
  4. Jeśli ten pokój ma już inne webhooki, kliknij Dodaj kolejną grupę. W przeciwnym razie pomiń ten krok.
  5. W polu Name (Nazwa) wpisz „Quickstart Webhook”.
  6. W polu Adres URL awatara wpisz https://developers.google.com/chat/images/chat-product-icon.png.
  7. Kliknij ZAPISZ.
  8. Kliknij Kopiuj, aby skopiować pełny adres URL webhooka.
  9. 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 webhook jest zarejestrowany, wysyłając POST w odpowiedzi na żądanie utwórz wiadomość. Interfejs Chat API odpowiada za pomocą wystąpienia Message.

Wybierz język poniżej, aby uzyskać szczegółowe instrukcje tworzenia skryptu webhooka:

Python

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

  2. Skopiuj ten kod i wklej go w narzędziu 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. Zastąp wartość zmiennej url adresem URL webhooka skopiowanym w kroku 1. Zarejestruj przychodzącego webhooka.

Node.js

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

  2. Skopiuj ten kod i wklej go w narzędziu 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. Zastąp wartość zmiennej webhookURL adresem URL webhooka skopiowanym w kroku 1. Zarejestruj przychodzącego webhooka.

Google Apps Script

  1. Otwórz stronę Apps Script.

  2. Kliknij 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. Zastąp wartość zmiennej url adresem URL webhooka skopiowanym w kroku 1. Zarejestruj przychodzącego webhooka.

Java

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

  2. Skopiuj i wklej ten kod w pom.xml.

    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 taką strukturę katalogu src/main/java.

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

  5. Skopiuj ten kod i wklej go w narzędziu 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. Zastąp wartość zmiennej URL adresem URL webhooka skopiowanym w kroku 1. Zarejestruj przychodzącego webhooka.

Krok 3. Uruchom skrypt webhooka

Uruchom przykład, uruchamiając to polecenie w katalogu roboczym w wierszu poleceń:

Python

  python3 quickstart.py

Node.js

  node index.js

Google Apps Script

  • Kliknij Wygeneruj.

Java

  mvn compile exec:java -Dexec.mainClass=App

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

Rozpocznij wątek wiadomości lub odpowiedz na niego

Możesz rozpocząć wątek wiadomości lub odpowiedzieć na niego, dodając parametr threadKey do adresu URL webhooka. Każdy threadKey jest unikalny dla aplikacji, która go ustawia. Jeśli 2 różne aplikacje lub webhooki Google Chat ustawiają ten sam element threadKey, uruchamiają się 2 różne wątki.

Rozpocznij wątek wiadomości

Aby opublikować pierwszą wiadomość wątku z webhookiem, dołącz parametr threadKey do adresu URL webhooka. W polu threadKey możesz wpisać dowolny ciąg znaków, ale pamiętaj, że jest on wymagany. Aby opublikować odpowiedź w wątku, musisz określić go ponownie.

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

Odpowiedz w wątku wiadomości

Aby wysłać wiadomość do istniejącego wątku wiadomości, dołącz parametr threadKey do adresu URL webhooka ustawionego na wartość rozpoczynającą wątek. Przykład: wysłanie wiadomości na ten adres URL to odpowiedź na wątek, w którym threadKey występuje MY-THREAD:

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

Ograniczenia i informacje

Podczas konfigurowania webhooków zwróć uwagę na te limity i ważne kwestie:

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

  • W Google Workspace Marketplace nie można publikować webhooków.

  • Webhooki nie są konwersacyjne. Nie może odpowiadać na wiadomości od użytkowników ani wydarzeń z Google Chat ani na nie otrzymywać wiadomości.

  • Jeśli tylko jednostki organizacyjne w Twojej domenie mają włączone aplikacje Google Chat, przychodzące webhooki zwracają ten błąd:

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

  • Zarządzanie webhookami Ikona zarządzania webhookami jest dostępne tylko w przeglądarce, więc trzeba skonfigurować webhooki w aplikacji internetowej Google Chat. Webhooków nie można skonfigurować w aplikacji mobilnej Google Chat.