Na tej stronie opisujemy, jak skonfigurować webhooka do wysyłania asynchronicznych wiadomości do przestrzeni w Google Chat za pomocą zewnętrznych wyzwalaczy. Możesz na przykład skonfigurować aplikację monitorującą, aby powiadamiała w Hangouts Chat osoby dyżurujące, gdy serwer przestanie działać. Aby wysłać wiadomość synchroniczną za pomocą aplikacji Chat, przeczytaj artykuł Wysyłanie wiadomości.
W przypadku tego typu architektury użytkownicy nie mogą wchodzić w interakcje z elementem webhook ani z połączoną aplikacją zewnętrzną, ponieważ komunikacja jest jednokierunkowa. Webhooki nie prowadzą rozmów. Nie mogą odpowiadać na wiadomości od użytkowników ani ich otrzymywać ani zdarzeń interakcji z aplikacją do obsługi czatu. Aby odpowiadać na wiadomości, utwórz aplikację do obsługi czatu zamiast webhooka.
Webhook nie jest technicznie aplikacją w Google Chat – łączy aplikacje za pomocą standardowych żądań HTTP – ale na tej stronie dla uproszczenia będziemy go nazywać aplikacją w Google Chat. Każdy webhook działa tylko w pokoju czatu, w którym jest zarejestrowany. Przychodzące webhooki działają na czatach bezpośrednich, ale tylko wtedy, gdy wszyscy użytkownicy mają włączone aplikacje do obsługi czatu. Nie możesz publikować webhooków w Google Workspace Marketplace.
Poniższy diagram przedstawia architekturę webhooka połączonego z Chatem:
Na powyższym diagramie aplikacja Google Chat ma następujący przepływ informacji:
- Logika aplikacji Chat otrzymuje informacje z zewnętrznych usług innych firm, takich jak system zarządzania projektami lub narzędzie do obsługi zgłoszeń.
- Logika aplikacji Google Chat jest hostowana w systemie w chmurze lub lokalnym, który może wysyłać wiadomości za pomocą adresu URL webhooka do konkretnego pokoju w Google Chat.
- Użytkownicy mogą otrzymywać wiadomości z aplikacji Google Chat w tym konkretnym pokoju, ale nie mogą wchodzić w interakcje z aplikacją.
Wymagania wstępne
Python
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. Twoja organizacja Google Workspace musi zezwalać użytkownikom na dodawanie i używanie przychodzących webhooków.
- Python 3.6 lub nowszy
- Narzędzie do zarządzania pakietami pip
Biblioteka
httplib2
. Aby zainstalować bibliotekę, w interfejsie wiersza poleceń uruchom to polecenie:pip install httplib2
pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Node.js
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. Twoja organizacja Google Workspace musi zezwalać użytkownikom na dodawanie i używanie przychodzących webhooków.
- Node.js w wersji 14 lub nowszej
- Narzędzie do zarządzania pakietami npm
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Java
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. Twoja organizacja Google Workspace musi zezwalać użytkownikom na dodawanie i używanie przychodzących webhooków.
- Java 11 lub nowsza
- Narzędzie do zarządzania pakietami Maven
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Google Apps Script
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. Twoja organizacja Google Workspace musi zezwalać użytkownikom na dodawanie i używanie przychodzących webhooków.
- Utwórz samodzielny projekt Apps Script i włącz zaawansowaną usługę czatu.
- pokoju w Google Chat, Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć pokój w Google Chat, zapoznaj się z dokumentacją w Centrum pomocy.
Tworzenie webhooka
Aby utworzyć webhooka, zarejestruj go w pokoju w Chat, w którym chcesz odbierać wiadomości, a następnie napisz skrypt, który będzie je wysyłać.
Zarejestruj przychodzącego webhooka
- W przeglądarce otwórz Chat. Webhooków nie można konfigurować w aplikacji mobilnej Google Chat.
- Otwórz przestrzeń, w której chcesz dodać webhooka.
- Obok tytułu pokoju kliknij strzałkę rozwijania , a następnie kliknij Aplikacje i integracje.
Kliknij
Dodaj webhooki.W polu Nazwa wpisz
Quickstart Webhook
.W polu Adres URL awatara wpisz
https://developers.google.com/chat/images/chat-product-icon.png
.Kliknij Zapisz.
Aby skopiować adres URL webhooka, kliknij
Więcej, a następnie Kopiuj link.
Napisz skrypt webhooka
Przykładowy skrypt webhooka wysyła wiadomość do przestrzeni, w której jest zarejestrowany, wysyłając żądanie POST
na adres URL webhooka. Interfejs Chat API odpowiada instancją Message
.
Wybierz język, aby dowiedzieć się, jak utworzyć skrypt webhooka:
Python
W katalogu roboczym utwórz plik o nazwie
quickstart.py
.W pliku
quickstart.py
wklej ten kod:Zastąp wartość zmiennej
url
adresem URL webhooka skopiowanym podczas rejestracji webhooka.
Node.js
W katalogu roboczym utwórz plik o nazwie
index.js
.W pliku
index.js
wklej ten kod:Zastąp wartość zmiennej
url
adresem URL webhooka skopiowanym podczas rejestracji webhooka.
Java
W katalogu roboczym utwórz plik o nazwie
pom.xml
.W polu
pom.xml
skopiuj i wklej ten tekst:W katalogu roboczym utwórz tę strukturę katalogów:
src/main/java
W katalogu
src/main/java
utwórz plik o nazwieApp.java
.W pliku
App.java
wklej ten kod:Zastąp wartość zmiennej
URL
adresem URL webhooka, który został skopiowany podczas rejestracji webhooka.
Google Apps Script
W przeglądarce otwórz Apps Script.
Kliknij Nowy projekt.
Wklej ten kod:
Zastąp wartość zmiennej
url
adresem URL webhooka, który został skopiowany podczas rejestracji webhooka.
Uruchamianie skryptu webhooka
W interfejsie wiersza poleceń uruchom skrypt:
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Google Apps Script
- Kliknij Wykonaj.
Gdy uruchomisz kod, webhook wyśle wiadomość do pokoju, w którym został zarejestrowany.
Rozpoczynanie wątku wiadomości lub odpowiadanie w nim
Określ
spaces.messages.thread.threadKey
w treści żądania wiadomości. W zależności od tego, czy rozpoczynasz wątek, czy na niego odpowiadasz, użyj tych wartości w przypadku parametruthreadKey
:Jeśli rozpoczynasz wątek, ustaw wartość parametru
threadKey
na dowolny ciąg znaków, ale zanotuj tę wartość, aby móc opublikować odpowiedź w wątku.Jeśli odpowiadasz na wątek, podaj wartość parametru
threadKey
, która została ustawiona podczas rozpoczynania wątku. Na przykład, aby opublikować odpowiedź w wątku, w którym pierwsza wiadomość używałaMY-THREAD
, ustawMY-THREAD
.
Określ zachowanie wątku, jeśli nie znaleziono określonego elementu
threadKey
:Odpowiedz w wątku lub rozpocznij nowy wątek. Dodaj parametr
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
do adresu URL webhooka. Przekazanie tego parametru adresu URL powoduje, że Chat szuka istniejącego wątku z użyciem określonegothreadKey
. Jeśli zostanie znaleziony, wiadomość zostanie opublikowana jako odpowiedź w tym wątku. Jeśli nie zostanie znaleziona żadna odpowiednia wiadomość, rozpocznie się nowy wątek odpowiadający temuthreadKey
.Odpowiedz w wątku lub nie rób nic. Dodaj parametr
messageReplyOption=REPLY_MESSAGE_OR_FAIL
do adresu URL webhooka. Przekazanie tego parametru adresu URL powoduje, że Chat szuka istniejącego wątku z użyciem określonegothreadKey
. Jeśli zostanie znaleziony, wiadomość zostanie opublikowana jako odpowiedź w tym wątku. Jeśli nie zostanie znaleziony żaden adres, wiadomość nie zostanie wysłana.
Więcej informacji znajdziesz w
messageReplyOption
.
Poniższy przykładowy kod rozpoczyna wątek wiadomości lub odpowiada na niego:
Python
Node.js
Google Apps Script
Obsługuj błędy
Żądania webhooka mogą się nie powieść z różnych powodów, m.in.:
- Nieprawidłowe żądanie.
- Webhook lub pokój, w którym jest on hostowany, zostaną usunięte.
- Przejściowe problemy, takie jak połączenie sieciowe lub limity.
Podczas tworzenia webhooka należy odpowiednio obsługiwać błędy, wykonując te czynności:
- Rejestrowanie błędu.
- W przypadku błędów związanych z czasem, limitem lub połączeniem sieciowym ponawiaj żądanie ze wzrastającym czasem do ponowienia.
- Nie robić nic, co jest odpowiednie, jeśli wysłanie wiadomości webhook nie jest ważne.
Interfejs Google Chat API zwraca błędy w postaci
google.rpc.Status
,
która zawiera błąd HTTP code
wskazujący typ napotkanego błędu: błąd klienta (seria 400) lub błąd serwera (seria 500). Aby przejrzeć wszystkie mapowania HTTP, zobacz google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Aby dowiedzieć się, jak interpretować kody stanu HTTP i obsługiwać błędy, zapoznaj się z sekcją Błędy.
Ograniczenia i kwestie do rozważenia
- Podczas tworzenia wiadomości za pomocą webhooka w Google Chat API odpowiedź nie zawiera pełnej wiadomości.
Odpowiedź wypełnia tylko pola
name
ithread.name
. - Webhooki podlegają limitowi
spaces.messages.create
na pokój: 1 żądanie na sekundę, współdzielone przez wszystkie webhooki w pokoju. Chat może też odrzucać żądania webhooka, które przekraczają 1 zapytanie na sekundę w tym samym pokoju. Więcej informacji o limitach interfejsu Chat API znajdziesz w artykule Limity wykorzystania.