Google Chat スペースのイベントの詳細を取得する

このガイドでは、Google Chat API の SpaceEvent リソースで get() メソッドを使用して、Google Chat スペースのイベントの詳細を取得する方法について説明します。

SpaceEvent リソースは、スペースまたはその子リソース(メッセージ、リアクション、メンバーシップなど)に対する変更を表します。サポートされているイベント タイプについては、SpaceEvent リソースの eventType フィールドの参照ドキュメントをご覧ください。

リクエストの時点から最大 28 日前のイベントをリクエストできます。このイベントには、変更されたリソースの最新バージョンが含まれます。たとえば、新しいメッセージに関するイベントをリクエストした後にメッセージが更新された場合、サーバーは更新された Message リソースをイベント ペイロードで返します。

このメソッドを呼び出すには、ユーザー認証を使用する必要があります。イベントを取得するには、認証されたユーザーがイベントが発生したスペースのメンバーである必要があります。

前提条件

Node.js

Python

スペース イベントの詳細を取得する(ユーザー認証)

Google Chat のスペース イベントの詳細を取得するには、リクエストで次の情報を渡します。

  • リクエストのイベントタイプをサポートする認可スコープを指定します。アプリが機能する範囲で最も制限の大きいスコープを選択することをおすすめします。
  • GetSpaceEvent() メソッドを呼び出し、取得するスペース イベントの name を渡します。

次の例では、スペース イベントを取得します。

Node.js

この Node.js コードサンプルでは、Chat RPC API を使用しています。

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

// Replace SCOPE_NAME here with an authorization scope based on the event type
const USER_AUTH_OAUTH_SCOPES = ['SCOPE_NAME'];

// This sample shows how to get space event with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME and SPACE_EVENT_NAME here
    name: 'spaces/SPACE_NAME/spaceEvents/SPACE_EVENT_NAME',
  };

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

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

await main();

このサンプルを実行するには、次の値を置き換えます。

  • SCOPE_NAME: イベントタイプに基づく認可スコープ。たとえば、新しいメンバーシップに関するスペース イベントを取得する場合は、chat.memberships.readonly スコープを https://www.googleapis.com/auth/chat.memberships.readonly 形式で使用します。イベントタイプは、ListSpaceEvents() メソッドから取得できます。このメソッドの使用方法については、スペースからイベントを一覧表示するをご覧ください。
  • SPACE_NAME: スペースの name からの ID。ID は、ListSpaces() メソッドを呼び出すか、スペースの URL から取得できます。
  • SPACE_EVENT_NAME: スペース イベントの name からの ID。ID は ListSpaceEvents() メソッドから取得できます。このメソッドの使用方法については、スペースからイベントを一覧表示するをご覧ください。

Chat API は、イベントの詳細を含む SpaceEvent のインスタンスを返します。

スペース イベントの詳細を取得する(Chat 用アプリの認証)

アプリの認証には、1 回限りの管理者による承認が必要です。

Chat REST API を使用して、アプリ認証でスペースのスペース イベントの詳細を取得するには、リクエストで次の情報を渡します。

  • リクエストで各イベントタイプをサポートする 1 つ以上の認可スコープを指定します。ベスト プラクティスとして、アプリが機能する範囲で最も制限の大きいスコープを選択します。スコープの選択の詳細については、認証と認可の概要をご覧ください。
    • https://www.googleapis.com/auth/chat.app.memberships
    • https://www.googleapis.com/auth/chat.app.messages.readonly
    • https://www.googleapis.com/auth/chat.app.spaces
  • spaceEvents リソースget メソッドを呼び出します。
  • スペースの name を渡して、イベントの詳細を取得します。

API キーを作成する

デベロッパー プレビュー API メソッドを呼び出すには、API ディスカバリ ドキュメントの非公開のデベロッパー プレビュー バージョンを使用する必要があります。リクエストを認証するには、API キーを渡す必要があります。

API キーを作成するには、アプリの Google Cloud プロジェクトを開いて次の操作を行います。

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] > [API キー] をクリックします。
  3. 新しい API キーが表示されます。
    • [コピー] をクリックして、アプリのコードで使用する API キーをコピーします。API キーは、プロジェクトの認証情報の [API キー] セクションでも確認できます。
    • 不正使用を防ぐため、API キーを使用できる場所と対象の API を制限することをおすすめします。詳細については、API 制限を追加するをご覧ください。

Chat API を呼び出すスクリプトを作成する

アプリ認証Chat REST API を使用してスペース イベントの詳細を取得する方法は次のとおりです。

Python

この Python コードサンプルでは、Chat REST API を使用します。

  1. 作業ディレクトリに chat_spaceevents_get_app.py という名前のファイルを作成します。
  2. chat_spaceevents_get_app.py に次のコードを含めます。

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # Set authorization scopes based on the
    # event type. For example, if you are getting a space event
    # about a new membership, use the `chat.app.memberships.readonly` scope.
    #
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships",
              "https://www.googleapis.com/auth/chat.app.messages.readonly",
              "https://www.googleapis.com/auth/chat.app.spaces"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then lists space events from a specified space.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY')
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().spaceEvents().get(
    
            # The space to get event details from.
            #
            # Replace SPACE_NAME with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            name='spaces/SPACE_NAME/spaceEvents/SPACE_EVENT_NAME',
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. コードで、次の値を置き換えます。

    • API_KEY: Chat API のサービス エンドポイントを構築するために作成した API キー。
    • SPACE_NAME: スペース名。Chat API の spaces.list メソッドまたはスペースの URL から取得できます。
    • SPACE_EVENT_NAME: スペース イベントの name からの ID。ID は ListSpaceEvents() メソッドから取得できます。このメソッドの使用方法については、スペースからイベントを一覧表示するをご覧ください。
  4. 作業ディレクトリで、サンプルをビルドして実行します。

    python3 chat_spaceevents_get_app.py

Chat API は、新しいメンバーシップとメッセージに関するスペース イベントのページネーション リストを返します。