Lesestatus eines Nutzers für den Gruppenbereich aktualisieren

In dieser Anleitung wird erläutert, wie Sie die Methode updateSpaceReadState für die Ressource SpaceReadState der Google Chat API verwenden, um Gruppenbereiche als gelesen oder ungelesen zu markieren.

Die Ressource SpaceReadState ist eine Singleton-Ressource, die Details zu der zuletzt gelesenen Nachricht eines bestimmten Nutzers in einem Google Chat-Bereich 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 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 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 erforderlich.

Lesestatus des aufrufenden Nutzers für den Gruppenbereich aktualisieren

Nehmen Sie Folgendes in Ihre Anfrage auf, um den Lesestatus eines Nutzers in einem Bereich zu aktualisieren:

  • Geben Sie den Autorisierungsbereich chat.users.readstate an.
  • Rufen Sie die Methode updateSpaceReadState für die Ressource SpaceReadState auf.
  • Übergeben Sie den name des abzurufenden Lesestatus des Gruppenbereichs, der eine Nutzer-ID oder einen Alias und eine Gruppenbereichs-ID enthält. Durch das Abrufen des Lesestatus für den Gruppenbereich kann nur der Lesestatus des aufrufenden Nutzers abgerufen werden. Dazu legen Sie einen der folgenden Werte fest:
    • Der Alias me. Beispiel: users/me/spaces/SPACE/spaceReadState
    • Die Workspace-E-Mail-Adresse des anrufenden Nutzers. Beispiel: users/user@example.com/spaces/SPACE/spaceReadState
    • Die Nutzer-ID des aufrufenden Nutzers. Beispiel: users/USER/spaces/SPACE/spaceReadState
  • Übergeben Sie den updateMask, der die Aspekte des zu aktualisierenden Bereichslesestatus angibt. Dabei werden die folgenden Feldpfade unterstützt:
    • lastReadTime: Die Zeit, zu der der Lesestatus des Gruppenbereichs des Nutzers aktualisiert wurde. In der Regel entspricht dies entweder dem Zeitstempel der letzten gelesenen Nachricht oder einem Zeitstempel, der vom Nutzer angegeben wurde, um die zuletzt gelesene Position in einem Leerzeichen zu markieren. Wenn der lastReadTime vor dem letzten Erstellungszeitpunkt der Nachricht liegt, wird der Bereich in der UI als ungelesen angezeigt. Wenn Sie den Bereich als gelesen markieren möchten, setzen Sie lastReadTime auf einen beliebigen Wert, der später (größer) als der Zeitpunkt der letzten Nachrichtenerstellung ist. Für lastReadTime wird erzwungen, dass sie dem Zeitpunkt der letzten Nachrichtenerstellung entspricht. Der Lesestatus des Gruppenbereichs wirkt sich nur auf den Lesestatus von Nachrichten aus, die in der Unterhaltung der obersten Ebene des Gruppenbereichs sichtbar sind. Antworten in Threads sind von diesem Zeitstempel nicht betroffen und basieren stattdessen auf dem Lesestatus des Threads.

Im folgenden Beispiel wird der Lesestatus des aufrufenden Nutzers für den Gruppenbereich aktualisiert:

Python

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen chat_spaceReadState_update.py.
  2. Fügen Sie den folgenden Code in chat_spaceReadState_update.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"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates the space 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().updateSpaceReadState(
    
            # The space read state to update.
            #
            # 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/spaceReadState',
            updateMask='lastReadTime',
            body={'lastReadTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z'}
    
          ).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.
  4. Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:

    python3 chat_spaceReadState_update.py
    

Node.js

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

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Authenticates with Chat API via user credentials,
    * then updates the space read state for the calling user.
    * @return {!Promise<!Object>}
    */
    async function updateSpaceReadState() {
    
      /**
      * Authenticate with Google Workspace
      * and get user authorization.
      */
      const scopes = [
        'https://www.googleapis.com/auth/chat.users.readstate',
      ];
    
      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.updateSpaceReadState({
    
        /**
        * The space read state to update.
        *
        * 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/spaceReadState',
        updateMask: 'lastReadTime',
        requestBody: {
          lastReadTime: '{datetime.datetime(2000, 1, 3).isoformat()}Z'
        }
      });
    }
    
    /**
    * Use the service endpoint to call Chat API.
    */
    getSpaceReadState().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.
  4. Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:

    node chat_spaceReadState_update.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 hinzu:

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

    /**
    * Authenticates with Chat API via user credentials,
    * then updates the space read state for the calling user.
    * @param {string} spaceReadStateName The resource name of the space read state.
    */
    function updateSpaceReadState(spaceReadStateName) {
      try {
        const time = new Date('January 1, 2000')).toJSON();
        const body = {'lastReadTime': time};
        Chat.Users.Spaces.updateSpaceReadState(spaceReadStateName, body);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to update read state with error %s', err.message);
      }
    }
    

Die Google Chat API aktualisiert den angegebenen Lesestatus des Bereichs und gibt eine Instanz der Ressource SpaceReadState zurück.