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

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

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

前提条件

Node.js

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

スペース内のユーザーの既読状態を更新するには、リクエストに次のものを含めます。

  • chat.users.readstate 認証スコープを指定します。
  • UpdateSpaceReadState() メソッドを呼び出します。
  • updateMask に値 lastReadTime を渡します。
  • spaceReadState を、次のものを含む SpaceReadState のインスタンスとして渡します:
    • 更新するスペースの既読状態に設定された 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);
}

await main();

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

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