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. Po określeniu, 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 umożliwia okresowe pobieranie zdarzeń lub nadrabianie zaległości w zdarzeniach, które mogły zostać pominięte w subskrypcji z powodu awarii. Więcej informacji o sposobach otrzymywania zdarzeń w Google Chat i odpowiadania na nie znajdziesz w artykule Praca ze zdarzeniami z Google Chat w dokumentacji Google Chat.

Obsługiwane zdarzenia Google Chat

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

  • Nowe, zaktualizowane lub usunięte wiadomości w pokoju.
  • nowe lub usunięte reakcje na wiadomość;
  • Nowi, zaktualizowani lub usunięci członkowie pokoju.
  • Zmiany w pokoju, do którego subskrybujesz, takie jak zaktualizowana nazwa lub opis pokoju.

Zasoby, które możesz monitorować pod kątem zdarzeń

Aby odbierać zdarzenia, musisz określić zasób Google Chat do monitorowania, który jest nazywany zasobem docelowym subskrypcji.

Google Workspace Events API obsługuje te zasoby docelowe w Chat:

Zasób docelowy Format Ograniczenia
Spacja

//chat.googleapis.com/spaces/SPACE

gdzie SPACE to identyfikator w nazwie zasobu zasobu space interfejsu Chat API. Możesz go uzyskać z adresu URL przestrzeni lub za pomocą metody spaces.list().

Użytkownik Google Chat lub aplikacja Google Chat, która autoryzuje subskrypcję, musi być członkiem pokoju na koncie Google Workspace lub Google. Obsługiwane:
Wszystkie przestrzenie użytkownika

//chat.googleapis.com/spaces/-

Subskrypcja otrzymuje tylko wydarzenia dotyczące pokoi, w których użytkownik jest członkiem za pomocą konta Google Workspace lub konta Google. Obsługuje tylko uwierzytelnianie użytkownika.
Użytkownik

//cloudidentity.googleapis.com/users/USER

gdzie USER to identyfikator w nazwie zasobu zasobu user interfejsu Chat API. Szczegółowe informacje znajdziesz w artykule Identyfikowanie i określanie użytkowników Google Chat.

Subskrypcja otrzymuje tylko zdarzenia dotyczące użytkownika, który ją autoryzował. Użytkownik nie może autoryzować subskrypcji w imieniu innych użytkowników. Obsługuje tylko uwierzytelnianie użytkownika.

Typy zdarzeń do tworzenia subskrypcji

Podczas tworzenia subskrypcji używasz pola eventTypes[], aby określić, jakie typy zdarzeń chcesz otrzymywać. Typy zdarzeń są sformatowane 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 w Google Chat, musisz określić pokój jako zasób docelowy, a typ zdarzenia jako google.workspace.chat.membership.v1.created. Aby otrzymywać zdarzenia dotyczące dołączenia danego użytkownika do dowolnej przestrzeni, określ użytkownika jako zasób docelowy, a typ zdarzenia jako google.workspace.chat.membership.v1.created. Więcej informacji o tym, jak działają zdarzenia, znajdziesz w artykule Struktura zdarzeń Google Workspace.

W tabeli poniżej znajdziesz informacje o tym, które typy zdarzeń są obsługiwane w przypadku subskrypcji przestrzeni i subskrypcji użytkowników. Więcej informacji o wyjątkach dotyczących tego, co wywołuje zdarzenie, znajdziesz w sekcji Ograniczenia.

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

google.workspace.chat.message.v1.created

space.message

zaktualizowanie wiadomości,

google.workspace.chat.message.v1.updated

space.message

Wiadomość zostanie usunięta.

google.workspace.chat.message.v1.deleted

space.message

Reakcja zostanie utworzona.

google.workspace.chat.reaction.v1.created

space.message.reaction

Reakcja zostanie usunięta.

google.workspace.chat.reaction.v1.deleted

space.message.reaction

Użytkownik zostanie dodany do pokoju.

google.workspace.chat.membership.v1.created

space.membership

Członek grupy 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 zostanie zaktualizowany.

google.workspace.chat.space.v1.updated

space

Pokój zostanie usunięty.

google.workspace.chat.space.v1.deleted

space

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

Nie wszyscy nowi członkowie wywołują zdarzenia. Więcej informacji znajdziesz w sekcji Ograniczenia.

google.workspace.chat.membership.v1.created

space.membership

Zaktualizowano członkostwo użytkownika w pokoju.

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ń wsadowych (tylko dane wyjściowe)

Oprócz typów zdarzeń, które subskrybujesz, aplikacja do czatu 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 20 użytkowników jednocześnie, Twoja aplikacja do obsługi czatu może otrzymać zdarzenie wsadowe (google.workspace.chat.membership.v1.batchCreated). Ładunek zdarzenia zawiera listę wszystkich nowych zasobów Membership, które zostały utworzone, gdy użytkownik dodał członków do pokoju.

Otrzymujesz zdarzenie wsadowe dla każdego typu zdarzenia, które subskrybujesz, więc podczas tworzenia subskrypcji nie musisz określać zdarzeń wsadowych. Jeśli na przykład subskrybujesz nowe reakcje (google.workspace.chat.reaction.v1.created), aplikacja do czatu zostanie automatycznie skonfigurowana do odbierania zdarzeń reakcji zbiorczych (google.workspace.chat.reaction.v1.batchCreated).

W tabeli poniżej znajdziesz możliwe zdarzenia zbiorcze dotyczące subskrypcji:

Typ zdarzenia wsadowego Format
Opublikowano wiele wiadomości.

google.workspace.chat.message.v1.batchCreated

Zaktualizowano wiele wiadomości.

google.workspace.chat.message.v1.batchUpdated

Wiele wiadomości zostanie usuniętych.

google.workspace.chat.message.v1.batchDeleted

Utworzonych jest wiele reakcji.

google.workspace.chat.reaction.v1.batchCreated

Wiele reakcji zostanie usuniętych.

google.workspace.chat.reaction.v1.batchDeleted

Do subskrybowanego pokoju dodano wielu użytkowników lub subskrybujący użytkownik został dodany do wielu pokoi.

google.workspace.chat.membership.v1.batchCreated

W pokoju, w którym subskrybujesz, lub w przypadku subskrybowanego użytkownika aktualizowane są różne członkostwa.

google.workspace.chat.membership.v1.batchUpdated

Z subskrybowanego pokoju usunięto wielu użytkowników lub subskrybujący 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 opisujemy dane zdarzeń i przykładowe ładunki zdarzeń w Chat.

Gdy subskrypcja Google Workspace otrzyma zdarzenie z Google Chat, pole data zawiera ładunek zdarzenia. Ten ładunek zawiera informacje o zmienionym zasobie Google Workspace. Jeśli na przykład subskrybujesz zdarzenia dotyczące członkostwa w przestrzeni, ładunek tych zdarzeń zawiera informacje o zmienionym zasobie spaces.membership.

Dane zasobu w ładunku zdarzenia

Podczas tworzenia subskrypcji możesz określić, czy chcesz, aby ładunek zawierał szczegóły zasobu, czy tylko jego nazwę. Jeśli na przykład chcesz otrzymywać zdarzenia dotyczące użytkowników w pokoju na czacie, możesz określić, które pola zasobu członkostwa chcesz otrzymywać w ładunku zdarzenia.

W tabeli poniżej znajdziesz przykłady ładunków JSON w przypadku subskrypcji pokoju w Chat spaces/AAAABBBBBB. W przypadku każdego zdarzenia, które otrzymuje subskrypcja, ładunek pojawia się w polu data zdarzenia:

Przykład Typ wydarzenia Ładunek JSON

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

google.workspace.chat.message.v1.created

Zawiera dane o zasobach:

{
    "message":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID",
        "sender":
        {
            "name": "users/USER_ID",
            "type": "HUMAN"
        },
        "createTime": "2023-09-07T21:37:36.260127Z",
        "text": "Hello world",
        "thread":
        {
            "name": "spaces/SPACE_ID/threads/THREAD_ID"
        },
        "space":
        {
            "name": "spaces/SPACE_ID"
        },
        "argumentText": "Hello world"
    }
}
      

Wyklucza dane o zasobach:

{
    "message":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID"
    }
}
      
Użytkownik staje się menedżerem pokoju.

google.workspace.chat.membership.v1.updated

Zawiera dane o zasobach:

{
    "membership":
    {
        "name": "spaces/SPACE_ID/members/MEMBER_ID",
        "state": "JOINED",
        "member":
        {
            "name": "users/USER_ID",
            "type": "HUMAN"
        },
        "createTime": "1970-01-01T00:00:00Z",
        "role": "ROLE_MANAGER"
    }
}
      

Wyklucza dane o zasobach:

{
    "membership":
    {
        "name": "spaces/SPACE_ID/members/MEMBER_ID"
    }
}
      
Użytkownik aktualizuje opis pokoju na „Zespół sprzedaży Cymbal Labs”. google.workspace.chat.space.v1.updated

Zawiera dane o zasobach:

{
    "space":
    {
        "name": "spaces/SPACE_ID",
        "displayName": "Cymbal Sales",
        "spaceThreadingState": "THREADED_MESSAGES",
        "spaceType": "SPACE",
        "spaceDetails":
        {
            "description": "Sales team for Cymbal Labs."
        },
        "spaceHistoryState": "HISTORY_ON"
    }
}
      

Wyklucza dane o zasobach:

{
    "space":
    {
        "name": "spaces/SPACE_ID"
    }
}
      
Do pokoju dodano jednocześnie 2 użytkowników Google Chat. google.workspace.chat.membership.v1.batchCreated

Zawiera dane o zasobach:

{
    "memberships": [
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID",
            "state": "JOINED",
            "member":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        },
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID",
            "state": "JOINED",
            "member":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "createTime": "1970-01-01T00:00:00Z",
            "role": "ROLE_MEMBER"
          }
        }
    ]
}
      

Wyklucza dane o zasobach:

{
    "memberships": [
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID"
          }
        },
        {
          "membership": {
            "name": "spaces/SPACE_ID/members/MEMBER_ID"
          }
        }
    ]
}
      
Użytkownik reaguje na wiadomość emotikonem 😊. google.workspace.chat.reaction.v1.created

Zawiera dane o zasobach:

{
    "reaction":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
        "user":
        {
            "name": "users/USER_ID",
            "type": "HUMAN"
        },
        "emoji":
        {
            "unicode": "😊"
        }
    }
}
      

Wyklucza dane o zasobach:

{
    "reaction":
    {
        "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID"
    }
}
      
Użytkownicy reagują na wiadomość za pomocą emotikonów 😊 i 😸. google.workspace.chat.reaction.v1.batchCreated

Zawiera dane o zasobach:

{
    "reactions": [
        {
          "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
            "user":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😊"
            }
          }
        },
        {
          "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
            "user":
            {
                "name": "users/USER_ID",
                "type": "HUMAN"
            },
            "emoji":
            {
                "unicode": "😸"
            }
          }
        }
    ]
}
      

Wyklucza dane o zasobach:

{
    "reactions": [
      {
        "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID"
        },
        "reaction": {
            "name": "spaces/SPACE_ID/messages/MESSAGE_ID/reactions/REACTION_ID",
        }
      }
    ]
}
      

Ograniczenia

  • W przypadku subskrypcji użytkowników zdarzenia dotyczące nowych członków w wiadomościach bezpośrednich lub czatach grupowych bez nazwy (google.workspace.chat.membership.v1.created) są wywoływane dopiero po opublikowaniu pierwszej wiadomości.
  • Aby otrzymywać zdarzenia dotyczące członkostwa, użytkownik lub aplikacja Google Chat musi być bezpośrednim członkiem pokoju. Jeśli użytkownik został dodany, zaktualizowany lub usunięty z pokoju pośrednio za pomocą grupy dyskusyjnej Google, subskrypcja nie będzie otrzymywać tych zdarzeń związanych z członkostwem. Aby dowiedzieć się, jak działają członkostwa w grupach dyskusyjnych Google, zapoznaj się z artykułem Dodawanie grupy dyskusyjnej Google do pokoju.