Criar uma assinatura do Google Workspace

Esta página explica como usar a API Google Workspace Events para criar uma assinatura de um recurso do Google Workspace. Com uma assinatura do Google Workspace, seu app recebe informações sobre eventos do Google Workspace, que representam mudanças em um recurso do Google Workspace. Para saber quais recursos e tipos de eventos são compatíveis com a API Google Workspace Events, consulte a visão geral da API Google Workspace Events.

Esta página inclui as seguintes etapas para criar uma assinatura do Google Workspace:

  1. Prepare o ambiente.
  2. Crie e inscreva-se em um tópico do Google Cloud Pub/Sub. Você usa esse tópico como um endpoint para receber eventos do Google Workspace.
  3. Chame o método create da API Google Workspace Events no recurso Subscription.
  4. Teste sua assinatura do Google Workspace para verificar se o tópico do Pub/Sub recebe os eventos a que você se inscreveu.
  5. Se quiser, configure como enviar eventos para um endpoint do seu app para que ele possa processar o evento e, se necessário, tomar medidas.

Pré-requisitos

Apps Script

  • Para usar os comandos da CLI do Google Cloud neste guia:
    1. Instale o Google Cloud CLI.
    2. Para inicializar a CLI gcloud, execute o seguinte código:
    3.   gcloud init
        
  • Um projeto do Apps Script:
    • Use seu projeto do Google Cloud em vez do padrão criado automaticamente pelo Apps Script.
    • Para todos os escopos adicionados ao configurar a tela de permissão OAuth, você também precisa adicionar os escopos ao arquivo appsscript.json no seu projeto do Apps Script. Por exemplo, se você especificou o escopo chat.messages, adicione o seguinte:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Ative o serviço avançado do Google Workspace Events.

Python

  • Python 3.6 ou mais recente
  • A ferramenta de gerenciamento de pacotes pip
  • As bibliotecas de cliente mais recentes do Google para Python. Para instalar ou atualizar, execute o seguinte comando na interface de linha de comando:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Para usar os comandos da CLI do Google Cloud neste guia:
    1. Instale o Google Cloud CLI.
    2. Para inicializar a CLI gcloud, execute o seguinte código:
    3.   gcloud init
        

Configurar o ambiente

A seção a seguir explica como configurar seu ambiente antes de criar uma assinatura do Google Workspace.

Ativar a API Google Workspace Events e a API Google Cloud Pub/Sub

Antes de usar as APIs do Google, é necessário ativá-las em um projeto do Google Cloud. É possível ativar uma ou mais APIs em um único projeto do Google Cloud.

Console do Google Cloud

No console do Google Cloud, abra o projeto do Google Cloud para seu app e ative a API Google Workspace Events e a API Pub/Sub:

Ativar as APIs

gcloud

  1. No diretório de trabalho, faça login na sua Conta do Google:

    gcloud auth login
  2. Defina o projeto do Cloud para seu app:

    gcloud config set project PROJECT_ID

    Substitua PROJECT_ID pelo ID do projeto do projeto do Cloud para seu app.

  3. Ative a API Google Workspace Events e a API Google Cloud Pub/Sub:

    gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com

Criar credenciais de ID do cliente OAuth

Escolha seu tipo de aplicativo para instruções específicas sobre como criar um ID do cliente OAuth:

Aplicativo da Web

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > Aplicativo da Web.
  4. No campo Nome, digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. Adicione URIs autorizados relacionados ao seu app:
    • Apps do lado do cliente (JavaScript): em Origens JavaScript autorizadas, clique em Adicionar URI. Em seguida, insira um URI para usar em solicitações do navegador. Identifica os domínios de que seu aplicativo pode enviar solicitações de API ao servidor OAuth 2.0.
    • Apps do lado do servidor (Java, Python e outros): em URIs de redirecionamento autorizados, clique em Adicionar URI. Em seguida, insira um URI de endpoint ao qual o servidor OAuth 2.0 pode enviar respostas.
  6. Clique em Criar.

    A credencial recém-criada aparece em IDs do cliente OAuth 2.0.

    Anote o ID do cliente. As chaves secretas do cliente não são usadas para aplicativos da Web.

Android

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > Android.
  4. No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. No campo "Nome do pacote", insira o nome do pacote do arquivo AndroidManifest.xml.
  6. No campo "Impressão digital do certificado SHA-1", insira a impressão digital do certificado SHA-1 gerada.
  7. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

iOS

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > iOS.
  4. No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. No campo "ID do pacote", insira o identificador do pacote conforme listado no arquivo Info.plist do app.
  6. Opcional: se o app aparecer na App Store da Apple, insira o ID da App Store.
  7. Opcional: no campo "ID da equipe", insira a string exclusiva de 10 caracteres gerada pela Apple e atribuída à sua equipe.
  8. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

App do Chrome

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > Extensão do Chrome.
  4. No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. No campo "ID do item", insira a string de ID exclusiva de 32 caracteres do seu app. Você pode encontrar esse valor de ID no URL da Chrome Web Store do app e no Painel de controle do desenvolvedor da Chrome Web Store.
  6. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

App para computador

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > Aplicativo para computador.
  4. No campo Nome, digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

TVs e dispositivos de entrada limitada

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > TVs e dispositivos de entrada limitada.
  4. No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

Plataforma Universal do Windows (UWP)

  1. No console do Google Cloud, acesse Menu > Google Auth platform > Clientes.

    Acesse "Clientes"

  2. Clique em Criar cliente.
  3. Clique em Tipo de aplicativo > Plataforma Universal do Windows (UWP).
  4. No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
  5. No campo "ID da loja", insira o valor exclusivo de 12 caracteres do ID da Microsoft Store do seu app. Você pode encontrar esse ID no URL da Microsoft Store do app e na Central de parceiros.
  6. Clique em Criar.

    A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".

Baixar o arquivo JSON da chave secreta do cliente

O arquivo de chave secreta do cliente é uma representação JSON das credenciais do ID do cliente OAuth que seu app pode referenciar ao fornecer credenciais.

  1. No console do Google Cloud, acesse Menu > APIs e serviços > Credenciais.

    Ir para Credenciais

  2. Em IDs do cliente OAuth 2.0, clique no ID do cliente que você criou.

  3. Clique em Fazer o download do JSON.

  4. Salve o arquivo como credentials.json.

Criar e assinar um tópico do Pub/Sub

Nesta seção, você vai criar um tópico e uma assinatura do Pub/Sub. Seu tópico do Pub/Sub serve como o endpoint de notificação em que sua assinatura do Google Workspace recebe eventos.

Para saber mais sobre como criar e gerenciar tópicos do Pub/Sub, consulte a documentação do Pub/Sub.

Para criar e se inscrever em um tópico do Pub/Sub:

Console do Google Cloud

  1. No console do Google Cloud, acesse a página do Pub/Sub:

    Acessar o Google Cloud Pub/Sub

    Verifique se o projeto do Google Cloud do seu app está selecionado.

  2. Clique em Criar tópico e faça o seguinte:

    1. Digite um nome para o tópico, como workspace-events-topic.
    2. Deixe a opção Adicionar uma assinatura padrão selecionada. O Pub/Sub nomeia essa assinatura padrão de maneira semelhante ao nome do tópico, como workspace-events-topic-sub.
    3. Opcional: atualize ou configure outras propriedades do seu tópico.
  3. Clique em Criar. O nome completo do tópico é formatado como projects/PROJECT_ID/topics/TOPIC_ID. Você vai usar esse nome completo em uma etapa posterior.

  4. Conceda acesso para publicar mensagens do Pub/Sub no seu tópico:

    1. Na página do tópico, acesse o painel lateral e abra a guia Permissões.
    2. Clique em Adicionar principal.
    3. No campo Adicionar principais, adicione a conta de serviço do aplicativo do Google Workspace que entrega eventos à sua assinatura:
      1. Para eventos do Chat, chat-api-push@system.gserviceaccount.com.
      2. Prévia para desenvolvedores: para eventos do Drive, drive-api-event-push@system.gserviceaccount.com.
      3. Para eventos do Meet, meet-api-event-push@system.gserviceaccount.com.
    4. No menu Atribuir papéis, selecione Pub/Sub Publisher.
    5. Clique em Salvar. Pode levar alguns minutos para atualizar as permissões do seu tema.

gcloud

  1. No seu projeto do Cloud, crie um tópico executando o seguinte comando:

    gcloud pubsub topics create TOPIC_ID

    Substitua TOPIC_ID por um ID exclusivo para o tópico, como workspace-events-topic.

    A saída mostra o nome completo do tópico, formatado como projects/PROJECT_ID/topics/TOPIC_ID. Anote o nome e verifique se o valor de PROJECT_ID é o ID do projeto do Cloud do seu app. Você vai usar o nome do tópico na próxima etapa e para criar a assinatura do Google Workspace mais tarde.

  2. Conceda acesso para publicar mensagens no tópico:

    gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'

    Substitua:

    • TOPIC_NAME: o nome completo do tópico, que é a saída da etapa anterior. Formatado como projects/PROJECT_ID/topics/TOPIC_ID.
    • GOOGLE_WORKSPACE_APPLICATION: o aplicativo do Google Workspace que precisa entregar eventos à sua assinatura:

      • Para receber eventos do Chat, use chat-api-push@system.gserviceaccount.com.
      • Prévia para desenvolvedores: para receber eventos do Drive, use drive-api-event-push@system.gserviceaccount.com.
      • Para receber eventos do Meet, use meet-api-event-push@system.gserviceaccount.com.

    Pode levar alguns minutos para atualizar as permissões do seu tema.

  3. Crie uma assinatura do Pub/Sub para o tópico:

     gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME

    Substitua:

    • SUBSCRIPTION_NAME: um nome para sua assinatura, como workspace-events-subscription.
    • TOPIC_NAME: o nome do tópico que você criou na etapa anterior.

Assinar um recurso do Google Workspace

Nesta seção, você vai assinar o recurso do Google Workspace que quer monitorar para eventos.

Escolher e identificar o recurso de destino

Em uma assinatura do Google Workspace, o recurso de destino é o recurso do Google Workspace que você monitora para eventos. O recurso de destino é representado no campo targetResource da assinatura, formatado usando o nome completo do recurso. Por exemplo, para uma assinatura que monitora um espaço do Google Chat (spaces/AAAABBBBBBB), o valor de targetResource é //chat.googleapis.com/spaces/AAAABBBBBBB.

Identificar um recurso de destino para o Chat

Recurso de destino Formato Limitações
Espaço

//chat.googleapis.com/spaces/SPACE

em que SPACE é o ID no nome do recurso do recurso space da API Chat. Você pode extrair o ID do URL do espaço ou usando o método spaces.list().

O usuário ou app do Chat que autoriza a assinatura precisa ser membro do espaço com a Conta do Google ou do Google Workspace. Compatível com:
Todos os espaços de um usuário

//chat.googleapis.com/spaces/-

A assinatura só recebe eventos dos espaços em que o usuário é membro pela conta do Google Workspace ou do Google. Compatível apenas com autenticação de usuário.
Usuário

//cloudidentity.googleapis.com/users/USER

em que USER é o ID no nome do recurso do recurso user da API Chat. Para mais detalhes, consulte Identificar e especificar usuários do Google Chat.

A assinatura só recebe eventos sobre o usuário que autorizou a assinatura. Um usuário não pode autorizar uma assinatura em nome de outros usuários. Compatível apenas com autenticação de usuário.

Identificar um recurso de destino para o Drive

Recurso de destino Formato Limitações (se aplicável)
Arquivo //drive.googleapis.com/files/FILE

em que FILE é o ID no nome do recurso do recurso files da API Drive. É possível extrair o ID do URL do arquivo ou usando o método files.list.

O usuário que autoriza a assinatura precisa ter permissão no arquivo dentro da assinatura em relação ao evento de assinatura.
Drive compartilhado //drive.googleapis.com/drives/DRIVE

em que DRIVE é o ID no nome do recurso do recurso drives da API Drive. Você pode extrair o ID do URL do Drive ou usando o método drives.list.

A assinatura só recebe eventos de itens no drive compartilhado em que o usuário é membro pela conta do Google Workspace ou Conta do Google.

Identificar um recurso de destino para o Meet

Recurso de destino Formato Limitações (se aplicável)
Espaço para reuniões //meet.googleapis.com/spaces/SPACE

em que SPACE é o ID no nome do recurso do recurso space da API REST do Meet. Para mais detalhes, consulte Como o Meet identifica um espaço de reunião.

Usuário //cloudidentity.googleapis.com/users/USER

em que USER é o ID no campo signedinUser.user do recurso participant da API REST do Meet. Para mais detalhes, consulte Trabalhar com participantes.

A assinatura recebe eventos sobre todos os espaços de reunião em que o usuário é o proprietário. Normalmente, o proprietário do espaço de reunião também é o organizador do evento do Google Agenda associado ao espaço.

Criar uma assinatura do Google Workspace

Para criar uma assinatura, use o método subscriptions.create da API Google Workspace Events para criar um recurso Subscription. Você especifica os seguintes campos:

  • targetResource: um Google Workspace que você identificou na seção anterior, formatado usando o nome completo do recurso.
  • eventTypes: uma matriz de um ou mais tipos de eventos que você quer receber sobre o recurso. Por exemplo, se o app só precisar saber sobre novas mensagens postadas em um espaço do Chat, ele pode se inscrever em eventos sobre mensagens criadas.
  • notificationEndpoint: um endpoint de notificação em que sua assinatura do Google Workspace envia eventos. Use o tópico do Pub/Sub que você criou na seção anterior.
  • payloadOptions: opções para especificar quantos dados de recursos incluir no payload do evento. Essa configuração afeta o prazo de validade da sua assinatura. Para saber mais, consulte Dados de evento.

Para criar uma assinatura do Google Workspace:

Apps Script

  1. No projeto do Apps Script, crie um arquivo de script chamado createSubscription e adicione o seguinte código:

    function createSubscription() {
      // The Google Workspace resource to monitor for events.
      const targetResource = 'TARGET_RESOURCE';
    
      // The types of events to receive.
      const eventTypes = [EVENT_TYPES];
    
      // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
      const pubsubTopic = 'TOPIC_NAME';
    
      // Whether to include resource data or not.
      const resourceData = RESOURCE_DATA;
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.create({
        targetResource: targetResource,
        eventTypes: eventTypes,
        notificationEndpoint: {
          pubsubTopic: pubsubTopic,
        },
        payloadOptions: {
          includeResource: resourceData
        }
      });
      console.log(response);
    }
    

    Substitua:

    • TARGET_RESOURCE: o recurso do Google Workspace a que você está se inscrevendo, formatado como o nome completo do recurso. Por exemplo, para assinar um espaço do Google Chat com o ID AAAABBBB, use //chat.googleapis.com/spaces/AAAABBBB.
    • EVENT_TYPES: um ou mais tipos de eventos que você quer assinar no recurso de destino. Formate como uma matriz de strings, como 'google.workspace.chat.message.v1.created'.
    • TOPIC_NAME: o nome completo do tópico do Pub/Sub que você criou no projeto do Cloud. Formatado como projects/PROJECT_ID/topics/TOPIC_ID.
    • RESOURCE_DATA: um booleano que especifica se a assinatura inclui dados de recursos no payload:

      • True: inclui todos os dados de recursos. Para limitar quais campos são incluídos, adicione o campo fieldMask e especifique pelo menos um campo para o recurso alterado. Somente assinaturas de recursos do Chat aceitam a inclusão de dados de recursos.
      • False: exclui dados de recursos.
  2. Para criar a assinatura do Google Workspace, execute a função createSubscription no seu projeto do Apps Script.

Python

  1. No diretório de trabalho, crie um arquivo chamado create_subscription.py e adicione o seguinte código:

    """Create subscription."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = [SCOPES]
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # The Google Workspace resource to monitor for events.
    TARGET_RESOURCE = 'TARGET_RESOURCE'
    
    # The types of events to receive.
    EVENT_TYPES = [EVENT_TYPES]
    
    # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
    TOPIC = 'TOPIC_NAME'
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
    )
    
    BODY = {
        'target_resource': TARGET_RESOURCE,
        'event_types': EVENT_TYPES,
        'notification_endpoint': {'pubsub_topic': TOPIC},
        'payload_options': {'include_resource': RESOURCE_DATA},
    }
    response = service.subscriptions().create(body=BODY).execute()
    print(response)
    

    Substitua:

    • SCOPES: um ou mais escopos do OAuth que oferecem suporte a cada tipo de evento da assinatura. Formatado como uma matriz de strings. Para listar vários escopos, separe-os por vírgulas. Por exemplo, 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • TARGET_RESOURCE: o recurso do Google Workspace a que você está se inscrevendo, formatado como o nome completo do recurso. Por exemplo, para assinar um espaço do Google Chat com o ID AAAABBBB, use //chat.googleapis.com/spaces/AAAABBBB.
    • EVENT_TYPES: um ou mais tipos de eventos que você quer assinar no recurso de destino. Formate como uma matriz de strings, como 'google.workspace.chat.message.v1.created'.
    • TOPIC_NAME: o nome completo do tópico do Pub/Sub que você criou no projeto do Cloud. Formatado como projects/PROJECT_ID/topics/TOPIC_ID.
    • RESOURCE_DATA: um booleano que especifica se a assinatura inclui dados de recursos no payload:

      • True: inclui todos os dados de recursos. Para limitar quais campos são incluídos, adicione o campo fieldMask e especifique pelo menos um campo para o recurso alterado. Somente assinaturas de recursos do Chat aceitam a inclusão de dados de recursos.
      • False: exclui dados de recursos.
  2. Para criar a assinatura do Google Workspace, execute o seguinte comando no terminal:

    python3 create_subscription.py

A API Google Workspace Events retorna uma operação de longa duração concluída que contém a instância do recurso Subscription criado.

Testar sua assinatura do Google Workspace

Para testar se você está recebendo eventos do Google Workspace, acione um evento e extraia mensagens para a assinatura do Pub/Sub.

Para testar sua assinatura do Google Workspace:

Console do Google Cloud

  1. Acione um ou mais tipos de eventos no recurso de destino da sua assinatura do Google Workspace. Por exemplo, se você se inscreveu para receber novas mensagens em um espaço do Chat, envie uma mensagem para o espaço.

  2. No console do Google Cloud, acesse a página do Pub/Sub:

    Ir para o Pub/Sub

    Verifique se o projeto do Google Cloud do seu app está selecionado.

  3. No menu Pub/Sub, clique em Assinaturas.

  4. Na tabela, encontre a assinatura do Pub/Sub para seu tópico e clique no nome dela.

  5. Clique na guia Mensagens.

  6. Clique em Pull. Pode levar alguns minutos para que um evento gere uma mensagem do Pub/Sub.

gcloud

  1. Acione um ou mais tipos de eventos no recurso de destino da sua assinatura do Google Workspace. Por exemplo, se você se inscreveu para receber novas mensagens em um espaço do Chat, poste uma mensagem nele.

  2. Execute este comando:

    gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ack

    Substitua:

    • PUBSUB_SUBSCRIPTION_NAME: o nome completo da sua assinatura do Pub/Sub, formatado como projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID.
    • MESSAGE_COUNT: o número máximo de mensagens do Pub/Sub que você quer extrair.

    Pode levar alguns minutos para que um evento gere uma mensagem do Pub/Sub.

Para cada evento do Google Workspace acionado, uma mensagem é enviada à sua assinatura do Pub/Sub com o evento. Para mais detalhes, consulte Receber eventos como mensagens do Google Cloud Pub/Sub.

Configurar como seu app recebe eventos

A assinatura do Pub/Sub que você criou é baseada em pull. Depois de testar sua assinatura do Pub/Sub, atualize o tipo de entrega para mudar a forma como seu app recebe eventos. Por exemplo, é possível configurar a assinatura do Pub/Sub para um tipo de entrega por push, para que seu app receba eventos diretamente em um endpoint do app.

Para saber como configurar uma assinatura do Pub/Sub, consulte a documentação do Pub/Sub.

Inscrever-se em eventos de espaços do Chat como um app do Google Chat

Você pode se inscrever em eventos do Chat como um app do Chat em um espaço em que o app do Chat é participante. Os apps de chat não podem se inscrever em eventos do usuário.

crie uma chave de API

Para chamar um método da API Developer Preview, use uma versão não pública do documento de descoberta da API. Para autenticar a solicitação, transmita uma chave de API.

Para criar a chave de API, abra o projeto do Google Cloud do app e faça o seguinte:

  1. No console do Google Cloud, acesse Menu > APIs e serviços > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais > Chave de API.
  3. Sua nova chave de API é exibida.
    • Clique em Copiar para copiar a chave de API e usar no código do app. A chave de API também pode ser encontrada na seção "Chaves de API" das credenciais do seu projeto.
    • Para evitar o uso não autorizado, recomendamos restringir os locais e as APIs em que a chave de API pode ser usada. Para mais detalhes, consulte Adicionar restrições de API.

Escrever um script que chama a API Google Workspace Events

Saiba como criar uma assinatura para eventos de espaço do Chat com autenticação de app e aprovação do administrador:

  1. Se necessário, crie um app de chat.
  2. Inscrever-se em um recurso do Chat, mas:

    1. Em vez da autenticação do usuário, autentique como um app do Chat com aprovação única do administrador.
    2. Especifique os escopos de autorização que permitem que o app do Chat se inscreva em eventos do Chat. Esses escopos de autorização sempre começam com chat.app e incluem o seguinte:

      • https://www.googleapis.com/auth/chat.app.memberships: inscrever-se em eventos de membros do espaço do Chat.
      • https://www.googleapis.com/auth/chat.app.messages.readonly: Inscreva-se em eventos de mensagens e reações do espaço do Chat.
      • https://www.googleapis.com/auth/chat.app.spaces: Assine eventos do espaço do Chat.

O exemplo de código a seguir se inscreve em eventos de mensagem em um espaço do Chat especificado:

Python

  """Create subscription."""

  from google.oauth2 import service_account
  from apiclient.discovery import build

  # Specify required scopes.
  SCOPES = ['https://www.googleapis.com/auth/chat.app.messages.readonly']

  # Specify service account details.
  CREDENTIALS = (
      service_account.Credentials.from_service_account_file('credentials.json')
      .with_scopes(SCOPES)
  )

  # The Google Workspace resource to monitor for events.
  TARGET_RESOURCE = '//chat.googleapis.com/spaces/SPACE_ID'

  # The types of events to receive.
  EVENT_TYPES = [
                  'google.workspace.chat.message.v1.created',
                  'google.workspace.chat.message.v1.updated',
                  'google.workspace.chat.message.v1.deleted',
                ]

  # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
  TOPIC = 'TOPIC_NAME'

  # Call the Workspace Events API using the service endpoint.
  service = build(
      'workspaceevents',
      'v1beta',
      credentials=CREDENTIALS,
      discoveryServiceUrl='https://workspaceevents.googleapis.com/$discovery/rest?version=v1beta&labels=DEVELOPER_PREVIEW&key=API_KEY',
  )

  BODY = {
      'target_resource': TARGET_RESOURCE,
      'event_types': EVENT_TYPES,
      'notification_endpoint': {'pubsub_topic': TOPIC},
      'payload_options': {'include_resource': RESOURCE_DATA},
  }
  response = service.subscriptions().create(body=BODY).execute()
  print(response)

Substitua:

  • SPACE_ID: o nome do espaço, que pode ser obtido com o método spaces.list na API Chat ou no URL de um espaço.
  • TOPIC_NAME: o nome completo do tópico do Pub/Sub que você criou no projeto do Cloud. Formatado como projects/PROJECT_ID/topics/TOPIC_ID.
  • API_KEY: a chave de API que você criou para criar o endpoint de serviço da API Google Workspace Events.
  • RESOURCE_DATA: um booleano que especifica se a assinatura inclui dados de recursos no payload:

    • True: inclui todos os dados de recursos. Para limitar quais campos são incluídos, adicione o campo fieldMask e especifique pelo menos um campo para o recurso alterado. Somente assinaturas de recursos do Chat aceitam a inclusão de dados de recursos.
    • False: exclui dados de recursos.