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:
- Prepare o ambiente.
- 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.
- Chame o método
create
da API Google Workspace Events no recursoSubscription
. - Teste sua assinatura do Google Workspace para verificar se o tópico do Pub/Sub recebe os eventos a que você se inscreveu.
- 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:
- Instale o Google Cloud CLI.
- Para
inicializar a CLI
gcloud
, execute o seguinte código:
gcloud init
- Um projeto do Google Cloud com o faturamento ativado. Para assinaturas do Chat, você também precisa ativar a API Chat no seu projeto do Cloud e configurar os campos Nome do app, URL do avatar e Descrição. Para mais detalhes, consulte Criar um app do Google Chat.
- Exige autenticação do usuário com a tela de permissão OAuth configurada para o app. Ao configurar a tela de permissão, especifique um escopo para compatibilidade com cada tipo de evento da assinatura. Para configurar a tela de consentimento e identificar os escopos necessários, consulte Escolher escopos.
- 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 para configurar a tela de permissão OAuth, você também precisa adicionar os
escopos ao arquivo
appsscript.json
no seu projeto do Apps Script. Exemplo: - Ative
o serviço avançado do
Google Workspace Events
.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.readonly" ]
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:
- Instale o Google Cloud CLI.
- Para
inicializar a CLI
gcloud
, execute o seguinte código:
gcloud init
- Um projeto do Google Cloud com o faturamento ativado. Para assinaturas do Chat, você também precisa ativar a API Chat no seu projeto do Cloud e configurar os campos Nome do app, URL do avatar e Descrição. Para mais detalhes, consulte Criar um app do Google Chat.
- Exige autenticação do usuário com a tela de permissão OAuth configurada para o app. Ao configurar a tela de permissão, especifique um escopo para compatibilidade com cada tipo de evento da assinatura. Para configurar a tela de consentimento e identificar os escopos necessários, consulte Escolher escopos.
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:
gcloud
No diretório de trabalho, faça login na sua Conta do Google:
gcloud auth login
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.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
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > Aplicativo da Web.
- No campo Nome, digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- 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.
- 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
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > Android.
- No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- No campo "Nome do pacote", insira o nome do pacote do arquivo
AndroidManifest.xml
. - No campo "Impressão digital do certificado SHA-1", insira a impressão digital do certificado SHA-1 gerada.
- Clique em Criar.
A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".
iOS
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > iOS.
- No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- No campo "ID do pacote", insira o identificador do pacote conforme listado no arquivo
Info.plist
do app. - Opcional: se o app aparecer na App Store da Apple, insira o ID da App Store.
- Opcional: no campo "ID da equipe", insira a string exclusiva de 10 caracteres gerada pela Apple e atribuída à sua equipe.
- Clique em Criar.
A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".
App do Chrome
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > Extensão do Chrome.
- No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- 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.
- Clique em Criar.
A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".
App para computador
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > App para computador.
- No campo Nome, digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- Clique em Criar.
A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".
TVs e dispositivos de entrada limitada
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > TVs e dispositivos de entrada limitada.
- No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- Clique em Criar.
A credencial recém-criada aparece em "IDs de cliente OAuth 2.0".
Plataforma Universal do Windows (UWP)
- No console do Google Cloud, acesse Menu > > Clientes.
- Clique em Criar cliente.
- Clique em Tipo de aplicativo > Plataforma Universal do Windows (UWP).
- No campo "Nome", digite um nome para a credencial. Esse nome é mostrado apenas no console do Google Cloud.
- 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.
- 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.
No console do Google Cloud, acesse Menu > APIs e serviços > Credenciais.
Em IDs do cliente OAuth 2.0, clique no ID do cliente que você criou.
Clique em Fazer o download do JSON.
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
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.
Clique em
Criar tópico e faça o seguinte:- Digite um nome para o tópico, como
workspace-events-topic
. - 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
. - Opcional: atualize ou configure outras propriedades do seu tópico.
- Digite um nome para o tópico, como
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.Conceda acesso para publicar mensagens do Pub/Sub no seu tópico:
- Na página do tópico, acesse o painel lateral e abra a guia Permissões.
- Clique em Adicionar principal.
- No campo Adicionar principais, adicione a conta de serviço do aplicativo do Google Workspace que envia eventos para sua assinatura:
- Para eventos do Chat,
chat-api-push@system.gserviceaccount.com
. - Prévia para desenvolvedores: para eventos do Drive,
drive-api-event-push@system.gserviceaccount.com
. - Para eventos do Meet,
meet-api-event-push@system.gserviceaccount.com
.
- Para eventos do Chat,
- No menu Atribuir papéis, selecione
Pub/Sub Publisher
. - Clique em Salvar. Pode levar alguns minutos para atualizar as permissões do seu tema.
gcloud
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, comoworkspace-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.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 comoprojects/PROJECT_ID/topics/TOPIC_ID
.GOOGLE_WORKSPACE_APPLICATION
: o aplicativo do Google Workspace que precisa enviar eventos para 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
.
- Para receber eventos do Chat, use
Pode levar alguns minutos para atualizar as permissões do seu tema.
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, comoworkspace-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 |
em que SPACE é o ID no
nome do recurso do recurso |
O usuário do Chat que autoriza a assinatura precisa ser membro do espaço com a Conta do Google ou do Google Workspace. |
Todos os espaços de um usuário |
|
A assinatura só recebe eventos dos espaços em que o usuário é membro pela conta do Google Workspace ou do Google. |
Usuário |
em que USER é o ID no
nome do recurso do recurso |
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. |
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 |
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 |
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 |
|
Usuário | //cloudidentity.googleapis.com/users/USER
em que USER é o ID no campo
|
A assinatura recebe eventos sobre espaços de reunião em que o usuário é um dos seguintes:
|
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 eventos.
Para criar uma assinatura do Google Workspace:
Apps Script
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 IDAAAABBBB
, 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 comoprojects/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 campofieldMask
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.
Para criar a assinatura do Google Workspace, execute a função
createSubscription
no seu projeto do Apps Script.
Python
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 IDAAAABBBB
, 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 comoprojects/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 campofieldMask
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.
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
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.
No console do Google Cloud, acesse a página do Pub/Sub:
Verifique se o projeto do Google Cloud do seu app está selecionado.
No menu Pub/Sub, clique em Assinaturas.
Na tabela, encontre a assinatura do Pub/Sub para seu tópico e clique no nome dela.
Clique na guia Mensagens.
Clique em Pull. Pode levar alguns minutos para que um evento gere uma mensagem do Pub/Sub.
gcloud
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.
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 comoprojects/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.