Subskrybowanie wydarzeń w Google Chat

Na tej stronie opisujemy zdarzenia w Google Chat, które aplikacja Google Chat może subskrybować za pomocą interfejsu Google Workspace Events API. Gdy określisz, jakich typów zdarzeń potrzebujesz, utwórz subskrypcję, aby zacząć otrzymywać zdarzenia z Google Chat.

Oprócz subskrybowania zdarzeń możesz też wysyłać zapytania o zdarzenia, wywołując interfejs Chat API. Wywoływanie interfejsu Chat API pozwala okresowo pobierać wydarzenia i nadrabiać zaległości w wydarzeniach, które mogły umknąć Twojej subskrypcji z powodu przerwy w działaniu usługi. Więcej informacji o sposobach otrzymywania zdarzeń z Google Chat i odpowiadania na nie znajdziesz w artykule Praca ze zdarzeniami w Google Chat w dokumentacji Google Chat.

Obsługiwane zasoby docelowe Google Chat

Interfejs Google Workspace Events API obsługuje subskrypcje:

  • Pokoje reprezentowane jako zasoby (space)
  • Użytkownicy reprezentowani jako zasoby user interfejsu Cloud Identity API

Obsługiwane zdarzenia Google Chat

Subskrypcje Google Workspace umożliwiają otrzymywanie zdarzeń dotyczących tych typów zmian w Google Chat:

  • Nowe, zaktualizowane lub usunięte wiadomości w pokoju.
  • Nowe lub usunięte reakcje na wiadomość.
  • Nowi, zaktualizowani lub usunięci członkowie w pokoju.
  • zmian w pokoju, który subskrybujesz, np. zaktualizowanej nazwy lub opisu pokoju;

Typy zdarzeń związane z tworzeniem subskrypcji

Podczas tworzenia subskrypcji użyj pola eventTypes[], aby określić, jakiego typu zdarzenia chcesz otrzymywać. Typy zdarzeń są formatowane zgodnie ze specyfikacją CloudEvents, np. google.workspace.APPLICATION.RESOURCE.VERSION.ACTION.

Aby na przykład otrzymywać zdarzenia dotyczące użytkowników dołączających do pokoju czatu, wybierz ten pokój jako zasób docelowy, a typ zdarzenia google.workspace.chat.membership.v1.created. Aby otrzymywać zdarzenia dotyczące danego użytkownika dołączającego do pokoju, określ go jako zasób docelowy i jako typ zdarzenia wybierz google.workspace.chat.membership.v1.created. Więcej informacji o sposobie działania wydarzeń znajdziesz w artykule Struktura wydarzeń w Google Workspace.

W tabeli poniżej znajdziesz typy zdarzeń obsługiwane w przypadku subskrypcji pokoi i subskrypcji użytkowników. Więcej informacji o wyjątkach wywołujących zdarzenia znajdziesz w sekcji Ograniczenia.

Typ zdarzenia Format Dane zasobów
Subskrypcje pokoi  
Wiadomość została opublikowana.

google.workspace.chat.message.v1.created

space.message

Wiadomość została zaktualizowana.

google.workspace.chat.message.v1.updated

space.message

Wiadomość została usunięta.

google.workspace.chat.message.v1.deleted

space.message

Tworzona jest reakcja.

google.workspace.chat.reaction.v1.created

space.message.reaction

Reakcja zostanie usunięta.

google.workspace.chat.reaction.v1.deleted

space.message.reaction

Do pokoju zostanie dodany użytkownik.

google.workspace.chat.membership.v1.created

space.membership

Użytkownik zostanie zaktualizowany w pokoju.

google.workspace.chat.membership.v1.updated

space.membership

Użytkownik zostanie usunięty z pokoju.

google.workspace.chat.membership.v1.deleted

space.membership

Pokój został zaktualizowany.

google.workspace.chat.space.v1.updated

space

Pokój został usunięty.

google.workspace.chat.space.v1.deleted

space

Subskrypcje użytkowników  
Użytkownik stanie się członkiem pokoju.

Nie wszyscy nowi użytkownicy wywołują zdarzenia. Więcej informacji znajdziesz w sekcji Ograniczenia.

google.workspace.chat.membership.v1.created

space.membership

Członkostwo użytkownika w pokoju zostanie zaktualizowane.

google.workspace.chat.membership.v1.updated

space.membership

Użytkownik zostanie usunięty jako bezpośredni członek pokoju.

google.workspace.chat.membership.v1.deleted

space.membership

Typy zdarzeń zbiorczych (tylko dane wyjściowe)

Oprócz otrzymywania typów zdarzeń, które subskrybujesz, aplikacja Google Chat może też otrzymywać zdarzenia zbiorcze. Zdarzenie zbiorcze to zdarzenie reprezentujące wiele zdarzeń tego samego typu, które występują w krótkim czasie. Ładunek zdarzenia zbiorczego zawiera listę wszystkich zmienionych zasobów.

Jeśli na przykład użytkownik doda do pokoju jednocześnie 20 użytkowników, aplikacja Google Chat może otrzymać zdarzenie zbiorcze (google.workspace.chat.membership.v1.batchCreated). Ładunek zdarzenia zawiera listę wszystkich nowych zasobów Membership, które zostały utworzone, gdy użytkownik dodał użytkowników do pokoju.

Otrzymujesz zdarzenie zbiorcze dla dowolnego typu zdarzenia, który subskrybujesz, więc nie musisz określać tego zdarzenia podczas tworzenia subskrypcji. Jeśli na przykład zasubskrybujesz nowe reakcje (google.workspace.chat.reaction.v1.created), aplikacja Google Chat zostanie automatycznie skonfigurowana do odbierania zdarzeń reakcji zbiorczej (google.workspace.chat.reaction.v1.batchCreated).

W tej tabeli znajdziesz możliwe zdarzenia zbiorcze w przypadku subskrypcji:

Typ zdarzenia zbiorczego Format
Opublikowano wiele wiadomości.

google.workspace.chat.message.v1.batchCreated

Zaktualizowano wiele wiadomości.

google.workspace.chat.message.v1.batchUpdated

Usunięto wiele wiadomości.

google.workspace.chat.message.v1.batchDeleted

Można utworzyć wiele reakcji.

google.workspace.chat.reaction.v1.batchCreated

Usunięto wiele reakcji.

google.workspace.chat.reaction.v1.batchDeleted

Do pokoju, który subskrybujesz, zostanie dodanych wielu użytkowników lub subskrybent został dodany do większej liczby pokoi.

google.workspace.chat.membership.v1.batchCreated

Informacje o wielu subskrypcjach zostaną zaktualizowane w pokoju subskrybenta lub dla subskrybowanego użytkownika.

google.workspace.chat.membership.v1.batchUpdated

Z zasubskrybowanego pokoju zostanie usuniętych wielu użytkowników lub użytkownik został usunięty z wielu pokoi.

google.workspace.chat.membership.v1.batchDeleted

Pokój ma wiele aktualizacji.

google.workspace.chat.space.v1.batchUpdated

Dane zdarzenia

W tej sekcji znajdziesz dane zdarzeń i przykładowe ładunki zdarzeń w Google Chat.

Gdy Twoja subskrypcja Google Workspace otrzyma zdarzenie z Google Chat, pole data będzie zawierać ładunek tego zdarzenia. Zawiera on informacje o zmienionym zasobie Google Workspace. Jeśli na przykład masz subskrypcję zdarzeń członkostwa w pokoju, ładunek dla tych zdarzeń będzie zawierał informacje o zmienionym zasobie spaces.membership.

Dane zasobu w ładunku zdarzenia

Przy tworzeniu subskrypcji możesz określić, czy ładunek ma zawierać informacje o zasobie czy tylko nazwę zasobu. Jeśli na przykład chcesz otrzymywać zdarzenia dotyczące użytkowników w pokoju czatu, możesz określić, które pola zasobu subskrypcji chcesz otrzymywać w ładunku zdarzeń.

W tabeli poniżej znajdziesz przykłady ładunków JSON dla subskrypcji pokoju czatu spaces/AAAABBBBBB. W przypadku każdego zdarzenia odebranego przez subskrypcję ładunek pojawia się w polu data tego zdarzenia:

Przykład Typ zdarzenia Ładunek JSON

Użytkownik publikuje w pokoju wiadomość „Hello world”.

google.workspace.chat.message.v1.created

Zawiera dane zasobów
{
    "message":
    {
        "name": "spaces/AAAABBBBBB/messages/CCCCCCCCC.DDDDDDDDD",
        "sender":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "createTime": "2023-09-07T21:37:36.260127Z",
        "text": "Hello world",
        "thread":
        {
            "name": "spaces/AAAABBBBBB/threads/EEEEEEEEEEEE"
        },
        "space":
        {
            "name": "spaces/AAAABBBBBB"
        },
        "argumentText": "Hello world"
    }
}
      
Nie uwzględnia danych zasobów
{
    "message":
    {
        "name": "spaces/AAAABBBBBB/messages/CCCCCCCCC.DDDDDDDDD"
    }
}
      
Użytkownik staje się menedżerem pokoju.

google.workspace.chat.membership.v1.updated

Zawiera dane zasobów
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321",
        "state": "JOINED",
        "member":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "createTime": "1970-01-01T00:00:00Z",
        "role": "ROLE_MANAGER"
    }
}
      
Nie uwzględnia danych zasobów
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321"
    }
}
      
Użytkownik zmieni opis pokoju na „Zespół sprzedaży w Laboratorium Cymbal”. google.workspace.chat.space.v1.updated
Zawiera dane zasobów
{
    "space":
    {
        "name": "spaces/AAAABBBBBB",
        "displayName": "Cymbal Sales",
        "spaceThreadingState": "THREADED_MESSAGES",
        "spaceType": "SPACE",
        "spaceDetails":
        {
            "description": "Sales team for Cymbal Labs."
        },
        "spaceHistoryState": "HISTORY_ON"
    }
}
      
Nie uwzględnia danych zasobów
{
    "space":
    {
        "name": "spaces/AAAABBBBBB"
    }
}
      
Do pokoju jednocześnie dodano 2 użytkowników Google Chat. google.workspace.chat.membership.v1.batchCreated
Zawiera dane zasobów
{
    "memberships": [
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/1234567890987654321",
            "state": "JOINED",
            "member":
            {
                "name": "users/1234567890987654321",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        },
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/987654321234567890",
            "state": "JOINED",
            "member":
            {
                "name": "users/987654321234567890",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        }
    ]
}
      
Nie uwzględnia danych zasobów
{
    "memberships": [
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/1234567890987654321"
          }
        },
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/98765432123456789019"
          }
        }
    ]
}
      
Użytkownik zareagował na wiadomość przy użyciu emotikona 😊. google.workspace.chat.reaction.v1.created
Zawiera dane zasobów
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222",
        "user":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "emoji":
        {
            "unicode": "😊"
        }
    }
}
      
Pomijanie danych zasobu
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
    }
}
      
Użytkownicy reagują na wiadomość za pomocą emotikonów 😊 lub 😸. google.workspace.chat.reaction.v1.batchCreated
Zawiera dane zasobów
{
    "reactions": [
        {
          "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222",
            "user":
            {
                "name": "users/1234567890987654321",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😊"
            }
          }
        },
        {
          "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/3333333333333333.444444444444444",
            "user":
            {
                "name": "users/98765431234564321",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😸"
            }
          }
        }
    ]
}
      
Pomijanie danych zasobu
{
    "reactions": [
      {
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
        },
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/3333333333333333.444444444444444",
        }
      }
    ]
}
      

Ograniczenia

  • W przypadku subskrypcji użytkowników wydarzenia dotyczące nowych członków na czacie lub w czatach grupowych bez nazwy (google.workspace.chat.membership.v1.created) są wywoływane dopiero po opublikowaniu pierwszej wiadomości.
  • Zmiany w historii pokoju nie wywołują zaktualizowanych zdarzeń dotyczących pokoju (typ zdarzenia: google.workspace.chat.spaces.v1.updated).
  • Aby otrzymywać wydarzenia dla członków, użytkownik musi być bezpośrednim członkiem pokoju. Jeśli użytkownik został dodany, zaktualizowany lub usunięty pośrednio do pokoju za pomocą grupy dyskusyjnej Google, subskrypcja nie otrzyma tych zdarzeń członkostwa. Aby dowiedzieć się, jak działa członkostwo w Grupach dyskusyjnych Google, przeczytaj artykuł Dodawanie grupy dyskusyjnej Google do pokoju.