Inscrever-se em eventos do Google Chat

Nesta página, descrevemos os eventos do Google Chat em que um app do Google Chat pode se inscrever usando a API Google Workspace Events. Depois de decidir de quais tipos de eventos você precisa, crie uma assinatura para começar a receber eventos do Google Chat.

Além de se inscrever em eventos, você também pode consultar os eventos chamando a API Chat. Chamar a API Chat permite recuperar eventos periodicamente ou acompanhar eventos que você perdeu em uma assinatura devido a uma interrupção. Para saber como receber e responder aos eventos do Chat, consulte Trabalhar com eventos do Google Chat na documentação do Chat.

Recursos de destino do Chat compatíveis

A API Google Workspace Events é compatível com assinaturas de:

  • Espaços, representados como recursos space
  • Usuários, representados como recursos user da API Cloud Identity

Eventos do Chat compatíveis

Com as assinaturas do Google Workspace, você pode receber eventos sobre os seguintes tipos de mudanças no Chat:

  • mensagens novas, atualizadas ou excluídas no espaço;
  • reações novas ou removidas de uma mensagem.
  • participantes novos, atualizados ou removidos no espaço;
  • Mudanças no espaço em que você se inscreveu, como uma atualização do nome ou da descrição do espaço.

Tipos de evento para criar assinaturas

Ao criar uma assinatura, use o campo eventTypes[] para especificar quais tipos de eventos quer receber. Os tipos de evento são formatados de acordo com a especificação do CloudEvents, como google.workspace.APPLICATION.RESOURCE.VERSION.ACTION.

Por exemplo, para receber eventos sobre usuários que participam de um espaço do Chat, especifique o espaço como o recurso de destino e o tipo de evento como google.workspace.chat.membership.v1.created. Para receber eventos sobre um determinado usuário que está participando de qualquer espaço, especifique o usuário como o recurso de destino e o tipo de evento como google.workspace.chat.membership.v1.created. Para saber mais sobre como os eventos funcionam, consulte Estrutura dos eventos do Google Workspace.

A tabela a seguir mostra os tipos de evento que podem ser usados em assinaturas de espaços e assinaturas de usuários. Para saber mais sobre exceções sobre o que aciona um evento, consulte Limitações.

Tipo de evento Formato Dados de recursos
Assinaturas nos espaços  
Uma mensagem foi postada.

google.workspace.chat.message.v1.created

space.message

Uma mensagem é atualizada.

google.workspace.chat.message.v1.updated

space.message

Uma mensagem foi excluída.

google.workspace.chat.message.v1.deleted

space.message

Uma reação será criada.

google.workspace.chat.reaction.v1.created

space.message.reaction

Uma reação foi excluída.

google.workspace.chat.reaction.v1.deleted

space.message.reaction

Um participante é adicionado ao espaço.

google.workspace.chat.membership.v1.created

space.membership

Alguém recebeu uma atualização no espaço.

google.workspace.chat.membership.v1.updated

space.membership

Um participante é removido do espaço.

google.workspace.chat.membership.v1.deleted

space.membership

O espaço foi atualizado.

google.workspace.chat.space.v1.updated

space

O espaço foi excluído.

google.workspace.chat.space.v1.deleted

space

Assinaturas dos usuários  
O usuário se torna participante de um espaço.

Nem todos os novos participantes acionam eventos. Para mais detalhes, consulte Limitações

google.workspace.chat.membership.v1.created

space.membership

A participação do usuário em um espaço é atualizada.

google.workspace.chat.membership.v1.updated

space.membership

O usuário é removido como participante direto de um espaço.

google.workspace.chat.membership.v1.deleted

space.membership

Tipos de eventos em lote (somente saída)

Além de receber os tipos de eventos em que você se inscreveu, o app do Chat também pode receber eventos em lote. Um evento em lote representa muitos eventos do mesmo tipo que ocorrem em um curto período. O payload de um evento em lote contém uma lista de todos os recursos alterados.

Por exemplo, se um usuário adicionar 20 usuários a um espaço ao mesmo tempo, seu app do Chat poderá receber um evento em lote (google.workspace.chat.membership.v1.batchCreated). O payload do evento contém uma lista de todos os novos recursos Membership criados quando o usuário adicionou os participantes ao espaço.

Você recebe um evento em lote para qualquer tipo de evento em que se inscreveu. Assim, não é necessário especificar eventos em lote ao criar uma assinatura. Por exemplo, se você se inscrever para receber novas reações (google.workspace.chat.reaction.v1.created), seu app do Chat será configurado automaticamente para receber eventos de reação em lote (google.workspace.chat.reaction.v1.batchCreated).

A tabela abaixo mostra os possíveis eventos em lote de uma assinatura:

Tipo de evento em lote Formato
Várias mensagens são postadas.

google.workspace.chat.message.v1.batchCreated

Várias mensagens são atualizadas.

google.workspace.chat.message.v1.batchUpdated

Várias mensagens serão excluídas.

google.workspace.chat.message.v1.batchDeleted

Várias reações são criadas.

google.workspace.chat.reaction.v1.batchCreated

Várias reações foram excluídas.

google.workspace.chat.reaction.v1.batchDeleted

Vários participantes são adicionados ao espaço inscrito ou o usuário inscrito é adicionado a vários espaços.

google.workspace.chat.membership.v1.batchCreated

Várias associações são atualizadas no espaço inscrito ou para o usuário inscrito.

google.workspace.chat.membership.v1.batchUpdated

Vários participantes são removidos do espaço inscrito ou o usuário inscrito é removido de vários espaços.

google.workspace.chat.membership.v1.batchDeleted

O espaço recebeu várias atualizações.

google.workspace.chat.space.v1.batchUpdated

Dados de eventos

Nesta seção, descrevemos dados de eventos e exemplos de payloads para eventos no Chat.

Quando sua assinatura do Google Workspace recebe um evento do Chat, o campo data contém o payload do evento. Esse payload contém informações sobre o recurso do Google Workspace que foi alterado. Por exemplo, se você se inscreveu em eventos de associação em um espaço, o payload desses eventos contém informações sobre o recurso spaces.membership que mudou.

Dados de recursos no payload do evento

Ao criar uma assinatura, você pode especificar se quer que o payload inclua detalhes sobre o recurso ou apenas o nome dele. Por exemplo, se você quiser receber eventos sobre membros em um espaço do Chat, especifique quais campos de um recurso de associação quer receber no payload do evento.

A tabela a seguir mostra exemplos de payloads JSON para uma assinatura do espaço do Chat spaces/AAAABBBBBB. Para cada evento que a assinatura recebe, o payload aparece no campo data do evento:

Exemplo Tipo de evento Payload do JSON

Um usuário posta uma mensagem no espaço que diz "Hello world".

google.workspace.chat.message.v1.created

Inclui dados de recursos
{
    "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"
    }
}
      
Exclui dados de recursos
{
    "message":
    {
        "name": "spaces/AAAABBBBBB/messages/CCCCCCCCC.DDDDDDDDD"
    }
}
      
Um usuário se torna administrador do espaço.

google.workspace.chat.membership.v1.updated

Inclui dados de recursos
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321",
        "state": "JOINED",
        "member":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "createTime": "1970-01-01T00:00:00Z",
        "role": "ROLE_MANAGER"
    }
}
      
Exclui dados de recursos
{
    "membership":
    {
        "name": "spaces/AAAABBBBBB/members/1234567890987654321"
    }
}
      
Um usuário atualiza a descrição do espaço para "Equipe de vendas da Cymbal Labs". google.workspace.chat.space.v1.updated
Inclui dados de recursos
{
    "space":
    {
        "name": "spaces/AAAABBBBBB",
        "displayName": "Cymbal Sales",
        "spaceThreadingState": "THREADED_MESSAGES",
        "spaceType": "SPACE",
        "spaceDetails":
        {
            "description": "Sales team for Cymbal Labs."
        },
        "spaceHistoryState": "HISTORY_ON"
    }
}
      
Exclui dados de recursos
{
    "space":
    {
        "name": "spaces/AAAABBBBBB"
    }
}
      
Dois usuários do Chat foram adicionados ao espaço ao mesmo tempo. google.workspace.chat.membership.v1.batchCreated
Inclui dados de recursos
{
    "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"
          }
        }
    ]
}
      
Exclui dados de recursos
{
    "memberships": [
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/1234567890987654321"
          }
        },
        {
          "membership": {
            "name": "spaces/AAAABBBBBB/members/98765432123456789019"
          }
        }
    ]
}
      
Um usuário reage a uma mensagem com o emoji 😊. google.workspace.chat.reaction.v1.created
Inclui dados de recursos
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222",
        "user":
        {
            "name": "users/1234567890987654321",
            "type": "HUMAN"
        },
        "emoji":
        {
            "unicode": "😊"
        }
    }
}
      
Omite dados de recursos
{
    "reaction":
    {
        "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
    }
}
      
Os usuários reagem a uma mensagem com o emoji 😊 e o emoji 🌺. google.workspace.chat.reaction.v1.batchCreated
Inclui dados de recursos
{
    "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": "😸"
            }
          }
        }
    ]
}
      
Omite dados de recursos
{
    "reactions": [
      {
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/1111111111111111.222222222222222"
        },
        "reaction": {
            "name": "spaces/AAAABBBBBB/messages/123456789.123456789/reactions/3333333333333333.444444444444444",
        }
      }
    ]
}
      

Limitações

  • No caso de assinaturas de usuários, os eventos sobre novos participantes em mensagens diretas ou chats em grupo sem nome (google.workspace.chat.membership.v1.created) são acionados somente depois que a primeira mensagem é postada.
  • As mudanças no histórico do espaço não acionam eventos atualizados do espaço (tipo de evento: google.workspace.chat.spaces.v1.updated).
  • Para receber esses eventos, o usuário precisa ser participante direto do espaço. Se um usuário for adicionado, atualizado ou removido indiretamente em um espaço por um Grupo do Google, a assinatura não vai receber esses eventos. Para entender como funcionam as associações a grupos do Google, consulte Adicionar um grupo do Google a um espaço.