Details zum Lesestatus eines Nutzers abrufen

In dieser Anleitung wird erläutert, wie Sie die Methode getThreadReadState für die Ressource ThreadReadState der Google Chat API verwenden, um Details zum Lesestatus eines Nutzers in einem Nachrichten-Thread abzurufen. Informationen zum Abrufen des Lesestatus einer Nachricht in einem Gruppenbereich finden Sie unter Details zum Lesestatus eines Nutzers für den Gruppenbereich abrufen.

Die Ressource ThreadReadState ist eine Singleton-Ressource, die Details zur letzten gelesenen Nachricht eines bestimmten Nutzers in einem Google Chat-Nachrichtenthread darstellt.

Voraussetzungen

Python

  • Python 3.6 oder höher
  • Das Paketverwaltungstool pip
  • Die aktuellen Google-Clientbibliotheken für Python. Führen Sie den folgenden Befehl in der Befehlszeile aus, um sie zu installieren oder zu aktualisieren:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Ein Google Cloud-Projekt, in dem die Google Chat API aktiviert und konfiguriert ist. Eine entsprechende Anleitung finden Sie unter Google Chat-App erstellen.
  • Für die Chat-App konfigurierte Autorisierung. Um Details zum Lesestatus eines Nutzers in einem Bereich abzurufen, ist eine Nutzerauthentifizierung mit dem Autorisierungsbereich chat.users.readstate oder chat.users.readstate.readonly erforderlich.

Node.js

  • Node.js und npm
  • Aktuelle Google-Clientbibliotheken für Node.js Führen Sie den folgenden Befehl über die Befehlszeile aus, um sie zu installieren:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Ein Google Cloud-Projekt, in dem die Google Chat API aktiviert und konfiguriert ist. Eine entsprechende Anleitung finden Sie unter Google Chat-App erstellen.
  • Für die Chat-App konfigurierte Autorisierung. Um Details zum Lesestatus eines Nutzers in einem Bereich abzurufen, ist eine Nutzerauthentifizierung mit dem Autorisierungsbereich chat.users.readstate oder chat.users.readstate.readonly erforderlich.

Apps Script

  • Ein Google Workspace-Konto mit Zugriff auf Google Chat.
  • Eine veröffentlichte Chat-App. Folgen Sie dieser quickstart, um eine Chat-App zu erstellen.
  • Für die Chat-App konfigurierte Autorisierung. Um Details zum Lesestatus eines Nutzers in einem Bereich abzurufen, ist eine Nutzerauthentifizierung mit dem Autorisierungsbereich chat.users.readstate oder chat.users.readstate.readonly erforderlich.

Lesestatus des aufrufenden Nutzers abrufen

Um Details zum Lesestatus eines Nutzers in einem Nachrichten-Thread zu erhalten, fügen Sie Ihrer Anfrage Folgendes hinzu:

  • Geben Sie den Autorisierungsbereich chat.users.readstate oder chat.users.readstate.readonly an.
  • Rufen Sie die Methode getThreadReadState für die Ressource ThreadReadState auf.
  • Übergeben Sie den name des abzurufenden Lesestatus des Threads, der eine Nutzer-ID oder einen Alias und eine Gruppenbereichs-ID enthält. Das Abrufen des Thread-Lesestatus unterstützt nur das Abrufen des Lesestatus des aufrufenden Nutzers, der durch Festlegen einer der folgenden Optionen angegeben werden kann:
    • Der Alias me. Beispiel: users/me/spaces/SPACE/threads/THREAD/threadReadState
    • Die Workspace-E-Mail-Adresse des anrufenden Nutzers. Beispiel: users/user@example.com/spaces/SPACEthreads/THREAD/threadReadState
    • Die Nutzer-ID des aufrufenden Nutzers. Beispiel: users/USER/spaces/SPACE/threads/THREAD/threadReadState

Im folgenden Beispiel wird der Lesestatus des aufrufenden Nutzers abgerufen:

Python

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen chat_threadReadState_get.py.
  2. Fügen Sie den folgenden Code in chat_threadReadState_get.py ein:

    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.users.readstate.readonly"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then gets the thread read state for the calling user.
        '''
    
        # 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.users().spaces().threads().getThreadReadState(
    
            # The thread read state to get.
            #
            # Replace USER with the calling user's ID, Workspace email,
            # or the alias me.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            #
            # Replace THREAD with a thread name.
            # Obtain the thread name from the messages resource of Chat API.
            name='users/me/spaces/SPACE/threads/THREAD/threadReadState'
    
          ).execute()
    
        # Prints the API's response.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Ersetzen Sie im Code Folgendes:

    • SPACE: Der Name eines Gruppenbereichs, den Sie über die Methode spaces.list in der Chat API oder aus der URL eines Gruppenbereichs abrufen können.

    • THREAD: ein Thread-Name, den Sie aus der Methode spaces.messages.get in der Chat API abrufen können.

  4. Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:

    python3 chat_threadReadState_get.py
    

Node.js

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen chat_threadReadState_get.js.
  2. Fügen Sie den folgenden Code in chat_threadReadState_get ein:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Authenticates with Chat API via user credentials,
    * then gets the thread read state for the calling user.
    * @return {!Promise<!Object>}
    */
    async function getThreadReadState() {
    
      /**
      * Authenticate with Google Workspace
      * and get user authorization.
      */
      const scopes = [
        'https://www.googleapis.com/auth/chat.users.readstate.readonly',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      /**
      * Build a service endpoint for Chat API.
      */
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      /**
      * Use the service endpoint to call Chat API.
      */
      return await chatClient.users.spaces.threads.getThreadReadState({
    
        /**
        * The thread read state to get.
        *
        * Replace USER with the calling user's ID, Workspace email,
        * or the alias me.
        *
        * Replace SPACE with a space name.
        * Obtain the space name from the spaces resource of Chat API,
        * or from a space's URL.
        */
        name: 'users/me/spaces/SPACE/threads/THREADS/threadReadState'
      });
    }
    
    /**
    * Use the service endpoint to call Chat API.
    */
    getThreadReadState().then(console.log);
    
  3. Ersetzen Sie im Code Folgendes:

    • SPACE: Der Name eines Gruppenbereichs, den Sie über die Methode spaces.list in der Chat API oder aus der URL eines Gruppenbereichs abrufen können.

    • THREAD: ein Thread-Name, den Sie aus der Methode spaces.messages.get in der Chat API abrufen können.

  4. Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:

    node chat_threadReadState_get.js
    

Apps Script

In diesem Beispiel wird die Chat API mit dem Advanced Chat Service aufgerufen.

  1. Fügen Sie der Datei appsscript.json des Apps Script-Projekts den Autorisierungsbereich chat.users.readstate.readonly hinzu:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate.readonly"
    ]
    
  2. Fügen Sie dem Code des Apps Script-Projekts eine Funktion wie diese hinzu:

    /**
    * Authenticates with Chat API via user credentials,
    * then gets the thread read state for the calling user.
    * @param {string} threadReadStateName The resource name of the thread read state.
    */
    function getThreadReadState(threadReadStateName) {
      try {
        Chat.Users.Spaces.Threads.getThreadReadState(threadReadStateName);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to get read state with error %s', err.message);
      }
    }
    

Die Google Chat API ruft den angegebenen Lesestatus des Threads ab und gibt eine Instanz der Ressource ThreadReadState zurück.