Ottenere dettagli su un evento dello spazio di Google Chat

Questa guida spiega come utilizzare il metodo get() sulla risorsa SpaceEvent dell'API Google Chat per ottenere dettagli su un evento da uno spazio di Chat di Google Chat.

La risorsa SpaceEvent rappresenta una modifica a uno spazio o alle relative risorse figlio, come messaggi, reazioni e iscrizioni. Per scoprire di più sui tipi di eventi supportati, consulta il campo eventType della documentazione di riferimento della risorsa SpaceEvent.

Puoi richiedere eventi fino a 28 giorni prima della data della richiesta. L'evento contiene la versione più recente della risorsa modificata. Ad esempio, se richiedi un evento relativo a un nuovo messaggio, ma il messaggio è stato aggiornato in un secondo momento, il server restituisce la risorsa Message aggiornata nel payload dell'evento.

Per chiamare questo metodo, devi utilizzare l'autenticazione utente. Per ottenere un evento, l'utente autenticato deve essere membro dello spazio in cui si è verificato l'evento.

Prerequisiti

Node.js

Python

Visualizzare i dettagli di un evento dello spazio (autenticazione utente)

Per ottenere dettagli su un evento dello spazio in Google Chat, passa quanto segue nella tua richiesta:

  • Specifica un ambito di autorizzazione che supporti il tipo di evento nella richiesta. Come best practice, scegli l'ambito più restrittivo che consenta comunque alla tua app di funzionare.
  • Chiama il metodo GetSpaceEvent() passando name dell'evento dello spazio da ottenere.

L'esempio seguente recupera un evento dello spazio:

Node.js

Questo esempio di codice Node.js utilizza l'API RPC Chat.

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

// Replace SCOPE_NAME here with an authorization scope based on the event type
const USER_AUTH_OAUTH_SCOPES = ['SCOPE_NAME'];

// This sample shows how to get space event 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 and SPACE_EVENT_NAME here
    name: 'spaces/SPACE_NAME/spaceEvents/SPACE_EVENT_NAME',
  };

  // Make the request
  const response = await chatClient.getSpaceEvent(request);

  // Handle the response
  console.log(response);
}

await main();

Per eseguire questo esempio, sostituisci quanto segue:

  • SCOPE_NAME: un ambito di autorizzazione basato sul tipo di evento. Ad esempio, se ricevi un evento dello spazio relativo a un nuovo abbonamento, utilizza l'ambito chat.memberships.readonly, nel formato https://www.googleapis.com/auth/chat.memberships.readonly. Puoi ottenere il tipo di evento dal metodo ListSpaceEvents(). Per scoprire come utilizzare questo metodo, consulta Elencare gli eventi di uno spazio.
  • SPACE_NAME: l'ID dello spazio name. Puoi ottenere l'ID chiamando il metodo ListSpaces() o dall'URL dello spazio.
  • SPACE_EVENT_NAME: l'ID dell'name dell'evento dello spazio. Puoi ottenere l'ID dal metodo ListSpaceEvents(). Per scoprire come utilizzare questo metodo, consulta Elencare gli eventi di uno spazio.

L'API Chat restituisce un'istanza di SpaceEvent con i dettagli dell'evento.

Visualizzare i dettagli di un evento dello spazio (autenticazione dell'app Chat)

L'autenticazione dell'app richiede un'approvazione dell'amministratore una tantum.

Per ottenere i dettagli di un evento dello spazio da uno spazio con autenticazione dell'app utilizzando l'API REST di Chat, trasmetti 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 alla tua app di funzionare. Per saperne 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.memberships.readonly
    • https://www.googleapis.com/auth/chat.app.messages.readonly
    • https://www.googleapis.com/auth/chat.app.spaces
    • https://www.googleapis.com/auth/chat.app.spaces.readonly
  • Chiama il metodo get sulla risorsa spaceEvents.
  • Passa l'name dello spazio da cui recuperare i dettagli dell'evento.

Scrivere uno script che chiama l'API Chat

Ecco come ottenere i dettagli di un evento dello spazio con l'autenticazione dell'app e l'API REST di Chat:

Python

Questo esempio di codice Python utilizza l'API REST Chat.

  1. Nella directory di lavoro, crea un file denominato chat_spaceevents_get_app.py.
  2. Includi il seguente codice in chat_spaceevents_get_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` 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.memberships.readonly",
              "https://www.googleapis.com/auth/chat.app.messages.readonly",
              "https://www.googleapis.com/auth/chat.app.spaces",
              "https://www.googleapis.com/auth/chat.app.spaces.readonly"]
    
    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)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().spaceEvents().get(
    
            # The space to get event details 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.
            name='spaces/SPACE_NAME/spaceEvents/SPACE_EVENT_NAME',
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Nel codice, sostituisci quanto segue:

  4. Nella directory di lavoro, compila ed esegui l'esempio:

    python3 chat_spaceevents_get_app.py

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