Jeśli masz utworzoną i opublikowaną aplikację do obsługi czatu w Google Chat, która korzysta ze zdarzeń interakcji interfejsu Google Chat API, np. aplikację opartą na szybkim wprowadzeniu do aplikacji Google Chat, na tej stronie dowiesz się, jak przekonwertować ją na dodatek do Google Workspace, który rozszerza Google Chat.
Po przekonwertowaniu aplikacja Google Chat może korzystać z platformy dodatków do Google Workspace, co otwiera nowe możliwości integracji i funkcji w Google Chat i w Google Workspace. Na przykład zamiast rozpowszechniać 2 wersje – aplikację Google Chat i dodatek do Google Workspace – możesz rozpowszechniać jeden dodatek do Google Workspace w Google Workspace Marketplace, który rozszerza aplikacje do czatu wraz z innymi aplikacjami hosta Google Workspace, takimi jak Gmail, Kalendarz i Dokumenty.
Ograniczenia
Przed rozpoczęciem konwersji zapoznaj się z ograniczeniami dodatków do Google Workspace, które rozszerzają Google Chat, aby mieć pewność, że aplikację Google Chat można przekonwertować bez utraty podstawowych funkcji.
Krok 1. Skopiuj kod istniejącej aplikacji Google Chat
Proces konwersji wymaga zmian w kodzie. Aby nie wpływać na działanie aplikacji Google Chat, utwórz kopię kodu i na niej pracuj.
Google Apps Script
- Otwórz istniejący projekt Google Apps Script aplikacji Google Chat.
- Po lewej stronie kliknij Przegląd .
- Po prawej stronie kliknij Utwórz kopię .
- Po lewej stronie kliknij Ustawienia projektu .
- W sekcji Projekt Google Cloud kliknij Zmień projekt.
- Wpisz ten sam numer projektu powiązany z istniejącym projektem aplikacji Google Chat.
- Kliknij Ustaw projekt.
HTTP
Utwórz rozwidlenie lub kopię istniejącej bazy kodu i wdroż ją jako nową usługę, oddzielną od działającej aplikacji Google Chat.
Jeśli aplikacja jest wdrażana w Google Cloud i korzysta z funkcji powiązanych z projektem Google Cloud (np. domyślnej tożsamości App Engine), nowy kod należy wdrożyć w usłudze powiązanej z dotychczasowym projektem aplikacji Google Chat.
Krok 2. Zmodyfikuj skopiowany kod
Dodatki do Google Workspace, które rozszerzają Google Chat, używają innych struktur żądań i odpowiedzi niż aplikacje Google Chat utworzone za pomocą zdarzeń interakcji interfejsu Chat API. Musisz zaktualizować kod, aby używać dodatku Google WorkspaceEventObject zamiast interfejsu Google Chat APIEvent do obsługi żądań i odpowiedzi.
Aby zmodyfikować kod, skorzystaj z przewodnika po konwersji kodu.
Krok 3. Włącz konfigurację dodatku do Google Workspace dla użytkowników testowych
W konsoli Google Cloud skonfiguruj ustawienia dodatku do Google Workspace dla aplikacji Google Chat:
Otwórz stronę konfiguracji interfejsu Google Chat API w konsoli Google Cloud.
W sekcji Funkcje interaktywne kliknij Przekształć w dodatek.
Włącz opcję Włącz ustawienia konfiguracji dodatku.
W sekcji Widoczność dodaj adresy e-mail testerów.
W razie potrzeby zaktualizuj ustawienia połączenia, podając adres URL punktu końcowego wdrożenia lub identyfikator wdrożenia Apps Script skopiowanego i zmodyfikowanego kodu aplikacji Google Chat z kroku 2.
Kliknij Zapisz i przetestuj.
Krok 4. Przetestuj przekonwertowaną aplikację
Dokładnie przetestuj funkcje dodatku do Google Workspace, korzystając z kont użytkowników testowych skonfigurowanych w kroku 3. Sprawdź wszystkie funkcje i interakcje.
Krok 5. Przeprowadź konwersję u wszystkich użytkowników
Po sprawdzeniu, czy przekonwertowany dodatek Google Workspace działa prawidłowo, możesz udostępnić go wszystkim użytkownikom.
Otwórz stronę konfiguracji interfejsu Google Chat API w konsoli Google Cloud.
W sekcji Funkcje interaktywne kliknij Przekształć w dodatek. Otworzy się panel boczny.
W panelu bocznym kliknij Przekształć w dodatek.
Wpisz identyfikator projektu i kliknij Konwertuj.
Twoja aplikacja Google Chat jest teraz dodatkiem do Google Workspace, który rozszerza Google Chat.
Opcjonalnie: wyczyść lub zwolnij nieużywane zasoby Google Cloud
Opcjonalnie, po przekonwertowaniu aplikacji Google Chat na dodatek Google Workspace, aby uniknąć obciążenia konta Google Cloud opłatami za zasoby używane przez aplikację Google Chat, które nie są już używane, możesz je wyłączyć.
Przewodnik po konwersji kodu
W tej sekcji znajdziesz szczegółowe informacje o mapowaniu formatu interakcji interfejsu Google Chat APIEventEventObject na format dodatku do Google Workspace.
Mapowanie żądań
W tabeli poniżej pokazano, jak pola w interfejsie Google Chat APIEvent
odpowiadają polom w dodatku do Google WorkspaceEventObject.
Pole interakcji z interfejsem Google Chat API Event |
Pole dodatku do Google Workspace EventObject |
Uwagi |
|---|---|---|
action.actionMethodName |
Nie dotyczy | W przypadku interakcji z kartą nazwę metody można przekazać jako parametr w commonEventObject.parameters. Zobacz Otwieranie okna początkowego. |
action.parameters |
commonEventObject.parameters |
|
appCommandMetadata |
chat.appCommandPayload.appCommandMetadata |
|
common |
commonEventObject |
|
configCompleteRedirectUrl |
|
Dostępne w różnych ładunkach w zależności od typu zdarzenia. |
dialogEventType |
|
Dostępne w różnych ładunkach w zależności od typu zdarzenia. |
eventTime |
chat.eventTime |
|
isDialogEvent |
|
Dostępne w różnych ładunkach w zależności od typu zdarzenia. |
message |
|
Dostępne w różnych ładunkach w zależności od typu zdarzenia. |
space |
|
|
thread |
|
Dostępne w różnych ładunkach w zależności od typu zdarzenia. |
threadKey |
|
Dostępne w różnych ładunkach w zależności od typu zdarzenia. |
token |
Nie dotyczy | Weryfikacja jest obsługiwana w inny sposób. Więcej informacji znajdziesz w artykule Request Verification for HTTP Apps (Weryfikacja żądań w przypadku aplikacji HTTP). |
type |
Nie dotyczy | Typ zdarzenia można wywnioskować z aktywatora. |
user |
chat.user |
Mapowanie żądań według przypadku użycia
Tabela poniżej przedstawia różnice w ładunkach żądań w przypadku typowych zastosowań aplikacji Google Chat utworzonych za pomocą zdarzeń interakcji interfejsu Chat API i dodatków do Google Workspace, które rozszerzają Google Chat.
| Przypadek użycia | Interakcja z Chat API Event ładunek |
Ładunek dodatku do Google Workspace EventObject |
|---|---|---|
| Aplikacja została dodana do pokoju | { "type": "ADDED_TO_SPACE", "space": { ... } } |
{ "chat": { "addedToSpacePayload": { "space": { ... } } } } |
| Usuwanie aplikacji z pokoju | { "type": "REMOVED_FROM_SPACE", "space": { ... } } |
{ "chat": { "removedFromSpacePayload": { "space": { ... } } } } |
| Użytkownik @wzmiankuje aplikację | { "type": "MESSAGE", "message": { ... }, "space": { ... }, "configCompleteRedirectUrl": "..." } |
{ "chat": { "messagePayload": { "message": { ... }, "space": { ... }, "configCompleteRedirectUri": "..." } } } |
| Użytkownik @wspomina aplikację, aby dodać ją do pokoju. | Musisz obsłużyć 1 prośbę z Google Chat:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { ... } } |
Musisz obsłużyć 2 żądania z Google Chat. Pierwsze żądanie: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } Drugie żądanie: { "chat": { "messagePayload": { "message": { ... }, "space": { ... } } } } |
| Polecenie po ukośniku | { "type": "MESSAGE", "message": { "slashCommand": { ... } }, "space": { ... } } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Polecenie po ukośniku do dodawania aplikacji do pokoju | Musisz obsłużyć 1 prośbę z Google Chat:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { "slashCommand": { ... } } } |
Musisz obsłużyć 2 żądania z Google Chat. Pierwsze żądanie: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } Drugie żądanie: { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Użytkownik klika przycisk na karcie lub w oknie | { "type": "CARD_CLICKED", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } W przypadku zdarzeń związanych z oknem dialogowym pole { "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }} } } }, "space": { ... }, "message": { ... }, "isDialogEvent": true, "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } } } W przypadku zdarzeń związanych z oknem dialogowym pole { "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] } } } }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "true", "dialogEventType": "..." } } } |
| Użytkownik przesyła informacje na karcie głównej aplikacji | { "type": "SUBMIT_FORM", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "SUBMIT_DIALOG" } } } |
| Użytkownik wywołuje polecenie aplikacji za pomocą szybkiego polecenia | { "type": "APP_COMMAND", "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } |
{ "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| Podgląd linku | { "type": "MESSAGE", "message": { "matchedUrl": "..." }, "space": { ... } } |
{ "chat": { "messagePayload": { "message": { "matchedUrl": "..." }, "space": { ... } } } } |
| Użytkownik aktualizuje widżet w wiadomości na karcie lub w oknie. | { "type": "WIDGET_UPDATED", "space": { ... }, "common": { ... } } |
{ "commonEventObject": { ... }, "chat": { "widgetUpdatedPayload": { "space": { ... } } } } |
Mapowanie odpowiedzi według przypadku użycia
Dodatki do Google Workspace, które rozszerzają Google Chat, zwracają działania zamiast obiektu
Message. W tabeli poniżej znajdziesz mapowanie typów odpowiedzi interfejsu Google Chat APIMessage na odpowiadające im działania dodatku do Google Workspace.
| Przypadek użycia | Odpowiedź interfejsu Google Chat API Message |
Odpowiedź działania w Google Chat dodatku do Google Workspace |
|---|---|---|
| Tworzenie wiadomości w wywołanym pokoju | { "actionResponse": { "type": "NEW_MESSAGE" }, "text": "..." } Opcjonalny składnik to |
{ "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": { "text": "..." } } } } } Więcej informacji znajdziesz w artykule Wysyłanie wiadomości. |
| Aktualizowanie wiadomości | { "actionResponse": { "type": "UPDATE_MESSAGE" }, "text": "..." } Więcej informacji znajdziesz w artykule Aktualizowanie wiadomości (Chat). |
{ "hostAppDataAction": { "chatDataAction": { "updateMessageAction": { "message": { "text": "..." } } } } } Więcej informacji znajdziesz w artykule Aktualizowanie wiadomości (dodatki). |
| Podgląd linku | { "actionResponse": { "type": "UPDATE_USER_MESSAGE_CARDS" }, "cardsV2": [{ ... }] } Więcej informacji znajdziesz w artykule Wyświetlanie podglądu linku (Chat). |
{ "hostAppDataAction": { "chatDataAction": { "updateInlinePreviewAction": { "cardsV2": [{ ... }] } } } } Więcej informacji znajdziesz w artykule Wyświetlanie podglądu linku(dodatki). |
| Otwieranie pierwszego okna | { "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "body": { /* Card object */ } } } } } Więcej informacji znajdziesz w artykule Otwieranie okna (Chat). |
{ "action": { "navigations": [{ "pushCard": { /* Card object */ } }] } } Karta, którą przesuwasz, może zawierać widżety z onClick działaniami. W przypadku dodatków do Google Workspace HTTP skonfiguruj te działania, aby wywoływać punkt końcowy funkcji: { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "clickedButton", "value": "submit" }] } } } Więcej informacji znajdziesz w artykule Otwieranie okna (dodatki). |
| Zamykanie okna | { "actionResponse": { "type": "DIALOG", "dialogAction": { "actionStatus": { "userFacingMessage": "..." } } } } Więcej informacji znajdziesz w artykule Zamykanie okna (Chat). |
{ "action": { "navigations": [{ "endNavigation": "CLOSE_DIALOG" }], "notification": { "text": "..."} } } Więcej informacji znajdziesz w artykule Zamykanie okna (dodatki). |
| Łączenie z systemem zewnętrznym (konfiguracja żądania) | { "actionResponse": { "type": "REQUEST_CONFIG", "url": "..." } } Więcej informacji znajdziesz w artykule Łączenie się z systemem zewnętrznym. |
{ "basic_authorization_prompt": { "authorization_url": "...", "resource": "..." } } Więcej informacji znajdziesz w artykule Łączenie dodatku do Google Workspace z usługą innej firmy. |
| Autouzupełnianie elementów w widżetach interaktywnych | { "actionResponse": { "type": "UPDATE_WIDGET", "updatedWidget": { "suggestions": { "items": ["..."] }, "widget": "widget_id" } } } Więcej informacji znajdziesz w artykule Dodawanie menu wielokrotnego wyboru. |
{ "action": { "modifyOperations": [{ "updateWidget": { "widgetId": "widget_id", "selectionInputWidgetSuggestions": { "suggestions": ["..."] } } }] } } Więcej informacji znajdziesz w artykule Zbieranie i przetwarzanie informacji od użytkowników Google Chat. |
Obsługa interakcji z kartami w przypadku wiadomości utworzonych przed konwersją
Gdy przekonwertujesz aplikację Google Chat HTTP na dodatek do Google Workspace, interakcje z kartami w wiadomościach utworzonych przed konwersją będą wymagać specjalnego traktowania. Dodatki do Google Workspace używają pełnego adresu URL HTTP dla action.function karty, a aplikacje Google Chat utworzone za pomocą zdarzeń interakcji interfejsu Google Chat API używają nazwy funkcji. W tabeli poniżej zestawiono te różnice.
| Aplikacja Google Chat utworzona za pomocą zdarzeń interakcji interfejsu Google Chat API | Dodatek do Google Workspace, który rozszerza Google Chat | |
|---|---|---|
| Konfiguracja | Wszystkie zdarzenia możesz skonfigurować w jednym punkcie końcowym w konsoli Google Cloud. Podczas implementowania interakcji z kartą element action karty zawiera tylko nazwę funkcji do wykonania. Wspólny punkt końcowy HTTP jest wywoływany w przypadku zdarzeń kliknięcia karty.
Więcej informacji znajdziesz w artykule Otwieranie okna (Chat). { "onClick": { "action": { "function": "submit" } } } |
W konsoli Google Cloud możesz opcjonalnie skonfigurować punkty końcowe dla poszczególnych zdarzeń, ale nie obejmuje to zdarzeń kliknięcia karty. Podczas implementowania interakcji z kartą element action karty musi zawierać pełny adres URL punktu końcowego HTTP, który ma zostać wywołany. Możesz ustawić unikalny punkt końcowy HTTP dla każdego przycisku lub użyć wspólnego punktu końcowego i przekazać działanie jako parametr w action.parameters.
Więcej informacji znajdziesz w artykule Otwieranie okna (dodatki). { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "method", "value": "submit" }] } } } |
Aby interakcje z kartami działały w przypadku wiadomości utworzonych przed konwersją, skonfiguruj adres URL interakcji z kartą na stronie konfiguracji interfejsu Google Chat API.
Ten adres URL jest używany tylko w przypadku interakcji z wiadomościami utworzonymi przed przekonwertowaniem aplikacji. Gdy użytkownik wejdzie w interakcję z jedną z tych wiadomości, pierwotna wartość action.function zostanie przekazana jako parametr o nazwie __action_method_name__.
Przykład: kliknięcie karty
Jeśli skonfigurowano adres URL interakcji z kartą jako https://.../card-interaction-handler, a użytkownik kliknie kartę w wiadomości historycznej, wykonując następujące działanie:
{
"onClick": {
"action": {
"function": "submit"
}
}
}
Zdarzenie jest dostarczane na skonfigurowany adres URL interakcji z kartą w tym formacie:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "submit"
}
},
"chat": {
"buttonClickedPayload": { ... }
}
}
Przykład: menu wybierania wielu elementów
Jeśli użytkownik wchodzi w interakcję z menu wielokrotnego wyboru ze źródłem danych zewnętrznych:
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"externalDataSource": {
"function": "getContacts"
}
}
}
Zdarzenie jest dostarczane na skonfigurowany adres URL interakcji z kartą w tym formacie:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "getContacts",
}
},
"chat": {
"widgetUpdatedPayload": { ... }
}
}
Jeśli włączysz opcję Używaj wspólnego adresu URL punktu końcowego HTTP dla wszystkich aktywatorów w przypadku aktywatorów HTTP, wspólny adres URL będzie też używany w przypadku zdarzeń Kliknięcie przycisku.
Weryfikowanie żądań dotyczących dodatków HTTP do Google Workspace, które rozszerzają Google Chat
W przypadku aplikacji Google Chat opartych na protokole HTTP podczas konwertowania ich na dodatki do Google Workspace należy zaktualizować logikę weryfikacji, czy żądania pochodzą z Google.
- Wydarzenie interakcji z interfejsem Google Chat API HTTP Weryfikacja aplikacji Google Chat: Weryfikowanie żądań z Google Chat
- Weryfikacja HTTP dodatku do Google Workspace: Weryfikowanie próśb od Google
Główne różnice w weryfikacji żądań to:
| Typ treści | Obsługiwani odbiorcy | E-mail konta usługi |
|---|---|---|
| Aplikacja Google Chat utworzona za pomocą zdarzeń interakcji interfejsu Google Chat API | Numer projektu | chat@system.gserviceaccount.com |
| Dodatek do Google Workspace rozszerzający Google Chat | Tylko punkt końcowy HTTP | Adres e-mail konta usługi w projekcie |
Unikalny adres e-mail konta usługi dla dodatku Google Workspace znajdziesz w sekcji Konwertowanie na dodatki Google Workspace na stronie konfiguracji interfejsu Google Chat API w konsoli Google Cloud.
Aby weryfikować żądania w ulepszonym dodatku do Google Workspace:
- Jeśli używasz funkcji Cloud Run, przypisz rolę
roles/cloudfunctions.invokerdo konta usługi każdego dodatku. Więcej informacji znajdziesz w artykule Autoryzowanie dostępu za pomocą uprawnień. - Zaktualizuj kod weryfikacyjny tokena, aby używać adresu e-mail konta usługi dodatku Google Workspace do weryfikowania podpisu tokena okaziciela. Zobacz Weryfikowanie żądań od Google.