Aktualizowanie stanu odczytu pokoju użytkownika

Z tego przewodnika dowiesz się, jak używać metody updateSpaceReadState w SpaceReadState zasób interfejsu Google Chat API do oznaczania pokoi jako przeczytanych lub nieprzeczytanych.

SpaceReadState zasób to pojedynczy zasób, który przedstawia szczegółowe informacje ostatniej przeczytanej wiadomości określonego użytkownika w pokoju Google Chat.

Wymagania wstępne

Python

  • Python w wersji 3.6 lub nowszej
  • narzędzie do zarządzania pakietami pip;
  • Najnowsze biblioteki klienta Google. Aby je zainstalować lub zaktualizować: uruchom następujące polecenie w interfejsie wiersza poleceń:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

Node.js

  • Node.js w wersji 14 lub nowszej
  • npm narzędzie do zarządzania pakietami
  • Najnowsze biblioteki klienta Google. Aby je zainstalować lub zaktualizować: uruchom następujące polecenie w interfejsie wiersza poleceń:
    npm install @google-cloud/local-auth @googleapis/chat
    

Google Apps Script

Zaktualizuj stan odczytu pokoju użytkownika dzwoniącego

Aby zaktualizować stan odczytu użytkownika w pokoju, umieść w Twoja prośba:

  • Określ zakres autoryzacji chat.users.readstate.
  • Wywołaj funkcję Metoda updateSpaceReadState w SpaceReadState zasób.
  • Aby uzyskać wartość, przekaż name stanu odczytu pokoju, który zawiera identyfikator użytkownika lub alias i identyfikator pokoju. Uzyskiwanie stanu odczytu pokoju obsługuje tylko pobieranie odczytu stanu użytkownika wywołującego, który można określić, ustawiając jedną z :
    • Alias me. Przykład: users/me/spaces/SPACE/spaceReadState
    • Adres e-mail użytkownika nawiązującego połączenie z Workspace. Przykład: users/user@example.com/spaces/SPACE/spaceReadState
    • Identyfikator użytkownika wywołującego. Przykład: users/USER/spaces/SPACE/spaceReadState
  • Przekazuj parametr updateMask, który określa aspekty stanu odczytu pokoju update, która obsługuje te ścieżki pól:
    • lastReadTime: czas zaktualizowania stanu odczytu pokoju użytkownika. Zwykle odpowiada to sygnaturze czasowej ostatniej przeczytanej wiadomości lub w postaci sygnatury czasowej określonej przez użytkownika, która oznacza ostatnią pozycję przeczytaną w kosmosu. Gdy lastReadTime jest przed ostatnią godziną utworzenia wiadomości, że pokój będzie wyświetlany w UI jako nieprzeczytany. Aby oznaczyć pokój jako przeczytany, ustaw lastReadTime na dowolną wartość późniejszą (większą) niż w wyniku utworzenia ostatniej wiadomości obecnie się znajdujesz. Wartość lastReadTime jest przekształcona tak, aby pasowała do ostatniego czasu utworzenia wiadomości. Pamiętaj, że stan odczytu pokoju wpływa tylko na stan odczytu wiadomości, które są widoczne w rozmowie na najwyższym poziomie pokoju. Odpowiedzi w wątkach są nie ma wpływu na tę sygnaturę czasową, a zamiast tego polegają na stanie odczytu wątku.

Ten przykład aktualizuje stan odczytu przestrzeni użytkownika wywołującego:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_spaceReadState_update.py
  2. Umieść w pliku chat_spaceReadState_update.py ten kod:

    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. Zastąp w kodzie następujące elementy:

    • SPACE: nazwa pokoju, która który znajdziesz w Metoda spaces.list w interfejsie Chat API lub z adresu URL pokoju.
  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. W katalogu roboczym utwórz plik o nazwie chat_spaceReadState_update.js
  2. Umieść w pliku chat_spaceReadState_update ten kod:

    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. Zastąp w kodzie następujące elementy:

    • SPACE: nazwa pokoju, która który znajdziesz w Metoda spaces.list w interfejsie Chat API lub z adresu URL pokoju.
  4. W katalogu roboczym skompiluj i uruchom przykład:

    node chat_spaceReadState_update.js
    

Google Apps Script

W tym przykładzie wywołujemy interfejs Chat API za pomocą parametru Zaawansowana usługa czatu.

  1. Dodaj zakres autoryzacji chat.users.readstate do Plik appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. Dodaj funkcję taką jak ta do kod:

    /**
    * 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);
      }
    }
    

Interfejs Google Chat API aktualizuje określony stan odczytu pokoju i zwraca go wystąpienie SpaceReadState zasób.