ユーザーのスペースの読み取り状態を更新する

このガイドでは、Google Chat API の SpaceReadState リソースで update() メソッドを使用して、スペースを既読または未読としてマークする方法について説明します。

SpaceReadState リソースは、指定したユーザーが Google Chat スペースで最後に読んだメッセージの詳細を表すシングルトン リソースです。

前提条件

Node.js

呼び出し元ユーザーのスペース読み取り状態を更新する

スペース内のユーザーの読み取り状態を更新するには、リクエストに以下を含めます。

  • chat.users.readstate 認可スコープを指定します。
  • UpdateSpaceReadState() メソッドを呼び出します。
  • updateMask と値 lastReadTime を渡します。
  • 次のように、spaceReadStateSpaceReadState のインスタンスとして渡します。
    • 更新するスペースの読み取り状態に設定された name フィールド。ユーザー ID またはエイリアスとスペース ID が含まれます。スペースの読み取り状態の更新は、呼び出し元のユーザーの読み取り状態の更新のみをサポートします。これは、次のいずれかを設定することで指定できます。
      • me エイリアス。例: users/me/spaces/SPACE/spaceReadState
      • 呼び出し元のユーザーの Workspace メールアドレス。例: users/user@example.com/spaces/SPACE/spaceReadState
      • 呼び出し元のユーザーのユーザー ID。例: users/USER/spaces/SPACE/spaceReadState
    • lastReadTime フィールド。ユーザーのスペース読み取り状態が更新された時刻の更新値に設定されます。通常、これは最後に読まれたメッセージのタイムスタンプか、スペース内の最後に読まれた位置をマークするためにユーザーが指定したタイムスタンプのいずれかに対応します。lastReadTime が最新のメッセージ作成時間より前の場合、UI ではスペースが未読として表示されます。スペースを既読としてマークするには、lastReadTime を最新のメッセージ作成時間より後の値(大きい値)に設定します。lastReadTime は、最新のメッセージ作成時間と一致するように強制変換されます。スペースの読み取りステータスは、スペースの最上位の会話に表示されるメッセージの読み取りステータスにのみ影響します。スレッド内の返信は、このタイムスタンプの影響を受けず、スレッドの読み取り状態に依存します。

次の例では、呼び出し元ユーザーのスペース読み取り状態を更新します。

Node.js

chat/client-libraries/cloud/update-space-read-state-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.users.readstate'];

// This sample shows how to update a space read state for the calling user
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const timestamp = new Date('2000-01-01').getTime();
  const request = {
    spaceReadState: {
      // Replace SPACE_NAME here
      name: 'users/me/spaces/SPACE_NAME/spaceReadState',
      lastReadTime: {
        seconds: Math.floor(timestamp / 1000),
        nanos: (timestamp % 1000) * 1000000
      }
    },
    updateMask: {
      // The field paths to update.
      paths: ['last_read_time']
    }
  };

  // Make the request
  const response = await chatClient.updateSpaceReadState(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

このサンプルを実行するには、SPACE_NAME をスペースの name の ID に置き換えます。ID は、ListSpaces() メソッドを呼び出すか、スペースの URL から取得できます。

Google Chat API は、指定されたスペースの読み取り状態を更新し、SpaceReadState のインスタンスを返します。