Na tej stronie opisaliśmy, jak skonfigurować webhook, aby wysyłać wiadomości asynchroniczne do pokoju Google Chat za pomocą zewnętrznych wyzwalaczy. Możesz na przykład skonfigurować aplikację monitorującą, aby powiadamiała personel dyżurny w Hangouts Chat o awarii serwera. Aby wysłać wiadomość synchroniczną za pomocą aplikacji Chat, przeczytaj artykuł Wysyłanie wiadomości.
W przypadku takiej architektury użytkownicy nie mogą wchodzić w interakcje z wewnętrznym interfejsem webhook ani z połączoną aplikacją zewnętrzną, ponieważ komunikacja jest jednokierunkowa. Webhooki nie są konwersacyjne. Nie mogą odpowiadać na wiadomości od użytkowników ani ich otrzymywać ani uczestniczyć w zdarzeniach interakcji z aplikacją do obsługi czatu. Aby odpowiadać na wiadomości, utwórz aplikację na czacie zamiast webhooka.
Webhook nie jest technicznie aplikacją Google Chat (łączy aplikacje za pomocą standardowych żądań HTTP), ale na potrzeby uproszczenia na tej stronie jest określany jako aplikacja Google Chat. Każdy webhook działa tylko w pokoju czatu, w którym jest zarejestrowany. Wewnętrzne wywołania webhooka działają w czatach, 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.
Ten diagram przedstawia architekturę webhooka połączonego z Chatem:
Na poniższym diagramie przedstawiono przepływ informacji w aplikacji Google Chat:
- Logika aplikacji Chat otrzymuje informacje z zewnętrznych usług innych firm, takich jak system zarządzania projektami czy narzędzie do obsługi zgłoszeń.
- Logika aplikacji Google Chat jest hostowana w chmurze lub lokalnym systemie, który może wysyłać wiadomości za pomocą adresu URL webhooka do konkretnego pokoju Google Chat.
- Użytkownicy mogą otrzymywać wiadomości z aplikacji Google Chat w tym konkretnym pokoju, ale nie mogą wchodzić z nią w interakcje.
Wymagania wstępne
Python
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. 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ę, uruchom w interfejsie wiersza poleceń to polecenie:pip install httplib2
Pokój Google Chat. Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć kanał w Google Chat, zapoznaj się z dokumentacją Centrum pomocy.
Node.js
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. 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
- Pokój Google Chat. Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć kanał w Google Chat, zapoznaj się z dokumentacją Centrum pomocy.
Java
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. 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
- Pokój Google Chat. Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć kanał w Google Chat, zapoznaj się z dokumentacją Centrum pomocy.
Google Apps Script
- Konto Google Workspace w wersji Business lub Enterprise z dostępem do Google Chat. 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ę Google Chat.
- Pokój Google Chat. Aby utworzyć pokój za pomocą interfejsu Google Chat API, zapoznaj się z artykułem Tworzenie pokoju. Aby utworzyć kanał w Google Chat, zapoznaj się z dokumentacją Centrum pomocy.
Tworzenie webhooka
Aby utworzyć webhooka, zarejestruj go w pokoju Google Chat, w którym chcesz otrzymywać wiadomości, a następnie napisz skrypt, który będzie je wysyłać.
Rejestrowanie przychodzącego webhooka
- W przeglądarce otwórz Google Chat. Webhooków nie można konfigurować w aplikacji Google Chat na urządzeniu mobilnym.
- Otwórz pokój, do którego chcesz dodać webhook.
- Obok tytułu pokoju kliknij strzałkę , aby rozwinąć więcej opcji, a następnie kliknij Aplikacje i integracje.
Kliknij
Dodaj webhooki.W polu Nazwa wpisz
Quickstart Webhook
.W polu 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.
Tworzenie skryptu webhooka
Przykładowy skrypt webhooka wysyła wiadomość do przestrzeni, w której webhook jest zarejestrowany, wysyłając żądanie POST
do adresu URL webhooka. Interfejs Chat API odpowiada instancją elementu 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
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 skopiowanym 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 skopiowanym podczas rejestracji webhooka.
Uruchamianie skryptu webhooka
Uruchom skrypt w interfejsie wiersza poleceń:
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 go zarejestrowano.
Rozpocznij wątek wiadomości lub odpowiedz na niego
W treści żądania wiadomości podaj wartość
spaces.messages.thread.threadKey
. W zależności od tego, czy rozpoczynasz wątek, czy na niego odpowiadasz, użyj jednej z tych wartości w poluthreadKey
:Jeśli rozpoczynasz wątek, ustaw wartość
threadKey
na dowolny ciąg znaków, ale zanotuj tę wartość, aby opublikować odpowiedź na wątek.Jeśli odpowiadasz na wątek, podaj
threadKey
ustawiony podczas inicjowania wątku. Aby na przykład opublikować odpowiedź w wątku, w którym pierwsza wiadomość używała znakuMY-THREAD
, ustawMY-THREAD
.
Określ zachowanie wątku, jeśli nie można znaleźć określonego elementu
threadKey
:Odpowiedz w wątku lub zacznij nowy wątek. Dodaj parametr
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
do adresu URL webhooka. Przekazywanie tego parametru adresu URL powoduje, że czat wyszukuje istniejący wątek za pomocą określonegothreadKey
. Jeśli zostanie znaleziony, wiadomość zostanie opublikowana jako odpowiedź w tym wątku. Jeśli żaden nie zostanie znaleziony, wiadomość rozpocznie nowy wątek odpowiadający temuthreadKey
.Odpowiedz w wątku lub nic nie rób. Dodaj parametr
messageReplyOption=REPLY_MESSAGE_OR_FAIL
do adresu URL webhooka. Przekazywanie tego parametru adresu URL powoduje, że czat wyszukuje istniejący wątek za pomocą określonegothreadKey
. Jeśli zostanie znaleziony, wiadomość zostanie opublikowana jako odpowiedź w tym wątku. Jeśli nie znaleziono żadnego, wiadomość nie została wysłana.
Więcej informacji znajdziesz w artykule
messageReplyOption
.
Poniższy przykładowy kod uruchamia wątek lub odpowiada na niego:
Python
Node.js
Google Apps Script
Obsługa błędów
Żądania webhooka mogą się nie powieść z różnych powodów, m.in.:
- Nieprawidłowe żądanie.
- Webhook lub pokój, w którym się znajduje, został usunięty.
- Przejściowe problemy, takie jak brak połączenia z internetem czy limity.
Podczas tworzenia webhooka należy odpowiednio obsługiwać błędy:
- Rejestrowanie błędu.
- W przypadku błędów związanych z czasem, limitem lub połączeniem sieciowym ponownie wysyłaj żądanie ze wzrastającym czasem do ponowienia.
- nic nie robić, co jest odpowiednie, jeśli wysyłanie wiadomości webhook nie jest ważne;
Interfejs API Google Chat zwraca błędy jako google.rpc.Status
,
co obejmuje błąd HTTP code
, który wskazuje typ błędu: błąd klienta (seria 400) lub błąd serwera (seria 500). Aby przejrzeć wszystkie mapowania HTTP, otwórz google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Aby dowiedzieć się, jak interpretować kody stanu HTTP i jak obsługiwać błędy, zapoznaj się z artykułem Błędy.
Ograniczenia i uwagi
- Gdy tworzysz wiadomość 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
zapytań na pokój, który wynosi 60 zapytań na 60 sekund i jest wspólny dla wszystkich aplikacji Google Chat w pokoju. Więcej informacji o limitach interfejsu API Google Chat znajdziesz w artykule Limity wykorzystania.
Powiązane artykuły
- Wybieranie architektury aplikacji Google Chat
- Wysyłanie wiadomości na karcie
- Formatowanie wiadomości