사용자의 스페이스 읽기 상태 업데이트

이 가이드에서는 updateSpaceReadState 메서드를 스페이스를 읽음 또는 읽지않음으로 표시하기 위한 Google Chat API의 SpaceReadState 리소스입니다.

SpaceReadState 리소스 인코더-디코더 아키텍처에 대한 세부정보를 나타내는 지정된 사용자가 Google Chat 스페이스에서 마지막으로 읽은 메시지입니다.

기본 요건

Python

Node.js

Apps Script

호출하는 사용자의 스페이스 읽기 상태 업데이트

스페이스 내에서 사용자의 읽기 상태를 업데이트하려면 다음을 포함합니다. 요청:

  • chat.users.readstate 승인 범위를 지정합니다.
  • 먼저 updateSpaceReadState 메서드SpaceReadState 리소스.
  • 가져올 스페이스 읽기 상태의 name(사용자 ID 포함)를 전달합니다. 스페이스 ID로 구성됩니다. 스페이스 읽기 상태 가져오기는 읽기 가져오기만 지원합니다. 상태를 호출할 수 있습니다. 이는 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    • me 별칭. 예를 들면 users/me/spaces/SPACE/spaceReadState입니다.
    • 발신자의 Workspace 이메일 주소입니다. 예를 들면 다음과 같습니다. users/user@example.com/spaces/SPACE/spaceReadState
    • 호출하는 사용자의 사용자 ID입니다. 예를 들면 다음과 같습니다. users/USER/spaces/SPACE/spaceReadState
  • 스페이스 읽기 상태의 측면을 지정하는 updateMask를 전달합니다. update는 다음 필드 경로를 지원합니다. <ph type="x-smartling-placeholder">
      </ph>
    • lastReadTime: 사용자의 스페이스 읽기 상태가 업데이트된 시간입니다. 일반적으로 이는 마지막으로 읽은 메시지의 타임스탬프, 또는 사용자가 지정한 타임스탬프 있습니다. lastReadTime가 최신 메시지 생성 시간 이전이면 스페이스가 UI에 읽지 않은 상태로 표시됩니다. 스페이스를 읽음으로 표시하려면 lastReadTime를 최근 메시지 생성 시점 이후의 (더 큰) 값으로 변경 있습니다. lastReadTime는 최근 메시지 생성 시간과 일치하도록 강제 적용됩니다. 스페이스 읽기 상태는 다음에 해당하는 메시지의 읽기 상태에만 영향을 미칩니다. 스페이스의 최상위 대화에 표시됩니다. 대화목록 내 답장 이 타임스탬프의 영향을 받지 않고 대신 스레드 읽기 상태에 의존합니다.

다음 예에서는 호출하는 사용자의 스페이스 읽기 상태를 업데이트합니다.

Python

  1. 작업 디렉터리에서 chat_spaceReadState_update.py
  2. chat_spaceReadState_update.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.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. 코드에서 다음을 바꿉니다.

    • SPACE: 스페이스 이름입니다. GCP 콘솔에서 spaces.list 메서드 Chat API 또는 스페이스의 URL에서 가져올 수 있습니다.
  4. 작업 디렉터리에서 샘플을 빌드하고 실행합니다.

    python3 chat_spaceReadState_update.py
    

Node.js

  1. 작업 디렉터리에서 chat_spaceReadState_update.js
  2. chat_spaceReadState_update에 다음 코드를 포함합니다.

    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. 코드에서 다음을 바꿉니다.

    • SPACE: 스페이스 이름입니다. GCP 콘솔에서 spaces.list 메서드 Chat API 또는 스페이스의 URL에서 가져올 수 있습니다.
  4. 작업 디렉터리에서 샘플을 빌드하고 실행합니다.

    node chat_spaceReadState_update.js
    

Apps Script

이 예시에서는 고급 채팅 서비스.

  1. chat.users.readstate 승인 범위를 Apps Script 프로젝트의 appsscript.json 파일:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. 이러한 함수를 Apps Script 프로젝트의 코드:

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

Google Chat API는 지정된 스페이스 읽기 상태를 업데이트하고 다음을 반환합니다. 인스턴스 SpaceReadState 리소스.