Trovare uno spazio per i messaggi diretti

Questa guida spiega come utilizzare il metodo findDirectMessage nella risorsa Space dell'API Google Chat per ottenere dettagli su uno spazio di messaggi diretti.

La risorsa Space rappresenta un luogo in cui le persone e le app di chat possono inviare messaggi, condividere file e collaborare. Esistono diversi tipi di spazi:

  • I messaggi diretti sono conversazioni tra due utenti o un utente e un'app di Chat.
  • Le chat di gruppo sono conversazioni tra tre o più utenti e app di Chat.
  • Gli spazi con nome sono spazi permanenti in cui le persone inviano messaggi, condividono file e collaborano.

L'autenticazione con l'autenticazione app consente a un'app di Chat di ricevere messaggi diretti a cui l'app Chat ha accesso in Google Chat (ad esempio, i messaggi diretti di cui è membro). L'autenticazione con autenticazione utente restituisce i messaggi diretti a cui l'utente autenticato ha accesso.

Prerequisiti

Python

  • Python 3.6 o versioni successive
  • Lo strumento di gestione dei pacchetti pip
  • Le librerie client di Google più recenti per Python. Per installarli o aggiornarli, esegui questo comando nell'interfaccia a riga di comando:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth
    
  • Un progetto Google Cloud in cui l'API Google Chat è abilitata e configurata. Per i passaggi da seguire, consulta Creare un'app Google Chat.
  • Autorizzazione configurata per l'app Chat. Trovando un messaggio diretto sono supportati

Node.js

  • Node.js e npm
  • Le librerie client di Google più recenti per Node.js. Per installarle, esegui questo comando nell'interfaccia a riga di comando:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Un progetto Google Cloud in cui l'API Google Chat è abilitata e configurata. Per i passaggi da seguire, consulta Creare un'app Google Chat.
  • Autorizzazione configurata per l'app Chat. Trovando un messaggio diretto sono supportati

Trovare un messaggio diretto

Per trovare un messaggio diretto in Google Chat, trasmetti quanto segue nella richiesta:

  • Con l'autenticazione app, specifica l'ambito di autorizzazione chat.bot. Con l'autenticazione utente, specifica l'ambito di autorizzazione chat.spaces.readonly o chat.spaces.
  • Chiama il metodo findDirectMessage sulla risorsa User, passando il name dell'altro utente nel messaggio diretto da restituire. Con l'autenticazione dell'utente, questo metodo restituisce un messaggio diretto tra l'utente chiamante e l'utente specificato. Con l'autenticazione app, questo metodo restituisce un messaggio diretto tra l'app per le chiamate e l'utente specificato.
  • Per aggiungere un utente umano come membro dello spazio, specifica users/{user}, dove {user} corrisponde a {person_id} per person dall'API People o l'ID di user nell'API Directory. Ad esempio, se l'utente dell'API People resourceName è people/123456789, puoi aggiungere l'utente allo spazio includendo un abbonamento con users/123456789 come member.name.

Trovare un messaggio diretto con autenticazione utente

Ecco come trovare un messaggio diretto con autenticazione utente:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.readonly"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then returns details about a specified DM.
        '''
    
        # Authenticate with Google Workspace
        # and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file(
                          'client_secrets.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().findDirectMessage(
    
              # The other user in the direct message (DM) to return.
              #
              # Replace USER with a user name.
              name='users/USER'
    
          ).execute()
    
        # Prints details about the direct message.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Nel codice, sostituisci USER con il valore name di una User in Google Chat.

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

    python3 chat_space_find_dm_user.py
    

Node.js

  1. Nella directory di lavoro, crea un file denominato find-direct-message-space.js.

  2. Includi il seguente codice in find-direct-message-space.js:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Find a direct message Chat space for a user.
    * @return {!Promise<!Object>}
    */
    async function findDirectMessageSpace() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.spaces.readonly',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.findDirectMessage(
          {name: 'users/USER'});
    }
    
    findDirectMessageSpace().then(console.log);
    
  3. Nel codice, sostituisci USER con il valore name di una User in Google Chat.

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

    node find-direct-message-space.js
    

L'API Chat restituisce un'istanza di Space che descrive in dettaglio il messaggio diretto specificato.

Trovare un messaggio diretto con l'autenticazione delle app

Ecco come trovare un messaggio diretto con l'autenticazione delle app:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Use the service endpoint to call Chat API.
    result = chat.spaces().findDirectMessage(
    
        # The other user in the direct message (DM) to return.
        #
        # Replace USER with a user name.
        name='users/USER'
    
    ).execute()
    
    print(result)
    
  3. Nel codice, sostituisci USER con il valore name di una User in Google Chat.

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

    python3 chat_space_find_dm_app.py
    

Node.js

  1. Nella directory di lavoro, crea un file denominato app-find-direct-message-space.js.

  2. Includi il seguente codice in app-find-direct-message-space.js:

    const chat = require('@googleapis/chat');
    
    /**
    * Find a direct message Chat space for a user.
    * @return {!Promise<!Object>}
    */
    async function findDirectMessageSpace() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.bot',
      ];
    
      const auth = new chat.auth.GoogleAuth({
        scopes,
        keyFilename: 'credentials.json',
      });
    
      const authClient = await auth.getClient();
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.findDirectMessage(
          {name: 'users/USER'});
    }
    
    findDirectMessageSpace().then(console.log);
    
  3. Nel codice, sostituisci USER con il valore name di una User in Google Chat.

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

    node app-find-direct-message-space.js
    

L'API Chat restituisce un'istanza di Space che descrive in dettaglio il messaggio diretto specificato.