Subskrybowanie wydarzeń w Google Chat

Na tej stronie opisujemy zdarzenia w Google Chat, które aplikacja Google Chat może subskrybować przy użyciu interfejsu Google Workspace Event API.

Więcej informacji o tworzeniu aplikacji Google Chat znajdziesz w omówieniu interfejsu Google Chat API.

Obsługiwane zasoby docelowe Google Chat

Interfejs Google Workspace Event API obsługuje subskrypcje w tych celach:

  • Pokoje widoczne jako zasoby space
  • Użytkownicy reprezentujący zasoby user interfejsu Cloud Identity API

Obsługiwane zdarzenia Google Chat

Subskrypcje Google Workspace pozwalają otrzymywać zdarzenia dotyczące następujących typów zmian w Google Chat:

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

Typy zdarzeń, które umożliwiają tworzenie subskrypcji

Podczas tworzenia subskrypcji pole eventTypes[] pozwala określić typy zdarzeń, które 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, określ pokój jako zasób docelowy, a jako typ zdarzenia określ google.workspace.chat.membership.v1.created. Aby otrzymywać zdarzenia dotyczące danego użytkownika dołączającego do dowolnego pokoju, określ go jako zasób docelowy, a jako typ zdarzenia ustaw 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 pokoi i subskrypcji użytkowników:

Typ zdarzenia Opis Dane zasobu
Subskrypcje pokoi  

google.workspace.chat.message.v1.created

Opublikowano nową wiadomość.

space.message

google.workspace.chat.message.v1.updated

Zaktualizowano wiadomość.

space.message

google.workspace.chat.reaction.v1.created

Tworzona jest reakcja.

space.message.reaction

google.workspace.chat.reaction.v1.deleted

Reakcja została usunięta.

space.message.reaction

google.workspace.chat.membership.v1.created

W tym pokoju zostanie utworzony użytkownik.

space.membership

google.workspace.chat.membership.v1.updated

Użytkownik został zaktualizowany w tym pokoju.

space.membership

google.workspace.chat.membership.v1.deleted

Użytkownik został usunięty z tego pokoju.

space.membership

google.workspace.chat.space.v1.updated

Pokój zostanie zaktualizowany.

space

google.workspace.chat.space.v1.deleted

Pokój został usunięty.

space

Subskrypcje użytkowników  

google.workspace.chat.membership.v1.created

Użytkownik staje się członkiem pokoju.

space.membership

google.workspace.chat.membership.v1.updated

Subskrypcja użytkownika w pokoju zostanie zaktualizowana.

space.membership

google.workspace.chat.membership.v1.deleted

Użytkownik zostanie usunięty z pokoju.

space.membership

Tylko dane wyjściowe

Subskrypcja typów zdarzeń google.workspace.APPLICATION.RESOURCE.VERSION.ACTION powoduje automatyczne skonfigurowanie subskrypcji tak, aby odbierała też zbiorcze wersje tego typu zdarzenia. Jeśli na przykład zasubskrybujesz google.workspace.chat.membership.v1.created, będziesz też otrzymywać wydarzenia z kalendarza google.workspace.chat.membership.v1.batchCreated.

W tej tabeli znajdziesz informacje o tym, które typy zdarzeń są wyświetlane tylko w przypadku subskrypcji pokoi i użytkowników:

Typ zdarzenia Opis Dane zasobu

google.workspace.chat.message.v1.batchCreated

Wysyłanych jest wiele wiadomości jednocześnie.

Lista wartości spaces.messages

google.workspace.chat.message.v1.batchUpdated

Jednocześnie aktualizuje się wiele wiadomości.

Lista wartości spaces.messages

google.workspace.chat.reaction.v1.batchCreated

Istnieje wiele reakcji w tym samym czasie.

Lista wartości spaces.messages.reactions

google.workspace.chat.reaction.v1.batchDeleted

Istnieje wiele reakcji naraz.

Lista wartości spaces.messages.reactions

google.workspace.chat.membership.v1.batchCreated

  • Jeśli target_resource jest pokojem, zostanie w nim utworzonych wielu użytkowników.
  • Jeśli target_resource jest użytkownikiem, zostanie on członkiem wielu pokoi.

Lista wartości spaces.memberships

google.workspace.chat.membership.v1.batchUpdated

  • Jeśli target_resource jest pokojem, zostanie w nim zaktualizowanych wielu użytkowników.
  • Jeśli target_resource jest użytkownikiem, jego członkostwo w pokojach zostało zaktualizowane wiele razy.

Lista wartości spaces.memberships

google.workspace.chat.membership.v1.batchDeleted

  • Jeśli target_resource jest pokojem, zostanie z niego usuniętych wielu użytkowników.
  • Jeśli target_resource jest użytkownikiem, zostanie usunięty z wielu pokoi.

Lista wartości spaces.memberships

google.workspace.chat.space.v1.batchUpdated

Pokój został zaktualizowany.

Lista wartości spaces

Dane zdarzenia

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

Gdy 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 subskrybujesz zdarzenia członkostwa w pokoju, ładunek dla tych zdarzeń zawiera informacje o zmienionym zasobie spaces.membership.

Dane zasobów w ładunku zdarzenia

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

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

Przykład Typ zdarzenia Ładunek JSON

Użytkownik publikuje w pokoju wiadomość „Witaj świecie”.

google.workspace.chat.message.v1.created

Obejmuje 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 zawiera danych zasobów
{
    "message":
    {
        "name": "spaces/AAAABBBBBB/messages/CCCCCCCCC.DDDDDDDDD"
    }
}
      
Użytkownik staje się menedżerem pokoju.

google.workspace.chat.membership.v1.updated

Obejmuje 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 zawiera danych zasobów
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321"
    }
}
      
Użytkownik zmienia opis pokoju na „Zespół sprzedaży Cymbal Labs”. google.workspace.chat.space.v1.updated
Obejmuje 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 zawiera danych zasobów
{
    "space":
    {
        "name": "spaces/AAAABBBBBB"
    }
}
      
Do pokoju dodano 2 użytkowników Google Chat w tym samym czasie. google.workspace.chat.membership.v1.batchCreated
Obejmuje 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 zawiera danych zasobów
{
    "memberships": [
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/1234567890987654321"
          }
        },
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/98765432123456789019"
          }
        }
    ]
}
      
Użytkownik reaguje na wiadomość przy użyciu emotikona 😩. google.workspace.chat.reaction.v1.created
Obejmuje dane zasobów
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222",
        "user":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "emoji":
        {
            "unicode": "😊"
        }
    }
}
      
Pomija dane zasobu
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
    }
}
      
Użytkownicy reagują na wiadomość przy użyciu emotikonów 😩 i 😸. google.workspace.chat.reaction.v1.batchCreated
Obejmuje 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": "😸"
            }
          }
        }
    ]
}
      
Pomija dane zasobu
{
    "reactions": [
      {
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
        },
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/3333333333333333.444444444444444",
        }
      }
    ]
}