Elencare gli eventi da uno spazio di Google Chat

Questa guida spiega come utilizzare il metodo list() nella risorsa SpaceEvent dell'API Google Chat per elencare le modifiche alle risorse in uno spazio.

La risorsa SpaceEvent rappresenta una modifica allo spazio di destinazione, incluse le risorse figlio dello spazio come messaggi, reazioni e abbonamenti. Per ulteriori informazioni sull'elenco dei tipi di eventi e dei payload degli eventi supportati, consulta i campi eventType e payload della documentazione di riferimento della risorsa SpaceEvent.

Puoi elencare gli eventi fino a 28 giorni prima dell'ora della richiesta. Il server restituisce gli eventi che contengono la versione più recente della risorsa interessata. Ad esempio, se elenchi eventi relativi a nuovi membri dello spazio, il server restituisce risorse Membership che contengono i dettagli di appartenenza più recenti. Se nuovi membri sono stati rimossi durante il periodo richiesto, il payload dell'evento contiene una risorsa Membership vuota.

Per elencare gli eventi di uno spazio, l'utente autenticato o l'app Chat deve essere membro dello spazio.

Prerequisiti

Node.js

Python

Elenca gli eventi dello spazio (autenticazione utente)

Per elencare gli eventi dello spazio di uno spazio di Chat, passa quanto segue nella richiesta:

  • Specifica uno o più ambiti di autorizzazione per supportare ogni tipo di evento nella tua richiesta. Come best practice, scegli l'ambito più restrittivo che consenta comunque il funzionamento della tua app. Per scegliere un ambito, vedi la Panoramica di autenticazione e autorizzazione.

  • Chiama il metodo ListSpaceEvents() passando filter dei tipi di eventi da elencare. Devi specificare almeno un tipo di evento e puoi anche filtrare per data. Per un elenco dei tipi di eventi supportati, consulta il campo eventType della risorsa SpaceEvent nella documentazione di riferimento.

L'esempio seguente elenca gli eventi relativi a nuovi abbonamenti e messaggi in uno spazio:

Node.js

chat/client-libraries/cloud/list-space-events-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

// Authorization scopes based on the event types
const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.memberships.readonly',
  'https://www.googleapis.com/auth/chat.messages.readonly',
];

// This sample shows how to list space events with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // A required filter. Filters events about new memberships and messages.
    filter:
      'eventTypes:"google.workspace.chat.membership.v1.created" OR eventTypes:"google.workspace.chat.message.v1.created"',
  };

  // Make the request
  const pageResult = chatClient.listSpaceEventsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

await main();

Per eseguire questo esempio, sostituisci SPACE_NAME con l'ID dello spazio name. Puoi ottenere l'ID chiamando il metodo ListSpaces() o dall'URL dello spazio.

L'API Chat restituisce un elenco impaginato di eventi dello spazio relativi a nuove iscrizioni e nuovi messaggi.

Elenca gli eventi dello spazio (autenticazione dell'app Chat)

L'autenticazione dell'app richiede l'approvazione dell'amministratore una sola volta.

Per elencare gli eventi dello spazio da uno spazio con autenticazione dell'app e l'API REST di Chat, passa quanto segue nella richiesta:

  • Specifica uno o più ambiti di autorizzazione per supportare ogni tipo di evento nella tua richiesta. Come best practice, scegli l'ambito più restrittivo che consenta comunque il funzionamento della tua app. Per scoprire di più sulla scelta di un ambito, consulta la Panoramica di autenticazione e autorizzazione.
    • https://www.googleapis.com/auth/chat.app.memberships
    • https://www.googleapis.com/auth/chat.app.messages.readonly
    • https://www.googleapis.com/auth/chat.app.spaces
  • Chiama il metodo list sulla risorsa spaceEvents.
  • Passa l'name dello spazio da cui elencare i messaggi.
  • Passa un filter per eseguire query su tipi di eventi specifici.

Crea una chiave API

Per chiamare un metodo API di anteprima per gli sviluppatori, devi utilizzare una versione di anteprima per gli sviluppatori non pubblica del documento di rilevamento API. Per autenticare la richiesta, devi trasmettere una chiave API.

Per creare la chiave API, apri il progetto Google Cloud della tua app e svolgi i seguenti passaggi:

  1. Nella console Google Cloud, vai a Menu > API e servizi > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali > Chiave API.
  3. Viene visualizzata la nuova chiave API.
    • Fai clic su Copia per copiare la chiave API da utilizzare nel codice della tua app. La chiave API è disponibile anche nella sezione "Chiavi API" delle credenziali del progetto.
    • Per impedire l'uso non autorizzato, ti consigliamo di limitare dove e per quali API può essere utilizzata la chiave API. Per maggiori dettagli, vedi Aggiungere limitazioni API.

Scrivere uno script che chiama l'API Chat

Ecco come elencare gli eventi dello spazio con l'autenticazione dell'app e l'API REST di Chat:

Python

  1. Nella directory di lavoro, crea un file denominato chat_spaceevents_list_app.py.
  2. Includi il seguente codice in chat_spaceevents_list_app.py:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # Set authorization scopes based on the
    # event type. For example, if you are getting a space event
    # about a new membership, use the `chat.app.memberships.readonly` scope.
    #
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships",
              "https://www.googleapis.com/auth/chat.app.messages.readonly",
              "https://www.googleapis.com/auth/chat.app.spaces"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then lists space events from a specified space.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY')
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().spaceEvents().list(
    
            # The space to list events from.
            #
            # Replace SPACE_NAME with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE_NAME',
    
            # A required filter. Filters events by event type.
            #
            # Update this filter to match your requirements.
            filter='eventTypes:"google.workspace.chat.message.v1.created"'
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Nel codice, sostituisci quanto segue:

    • API_KEY: la chiave API che hai creato per creare l'endpoint del servizio per l'API Chat.
    • SPACE_NAME: il nome di uno spazio, che puoi ottenere dal metodo spaces.list nell'API Chat o dall'URL di uno spazio.
  4. Nella directory di lavoro, compila ed esegui l'esempio:

    python3 chat_spaceevents_list_app.py

L'API Chat restituisce un elenco impaginato di eventi dello spazio relativi a nuove iscrizioni e nuovi messaggi.