Google Chat スペースでメッセージを固定または固定解除する

Chat API の MessagePin リソースを使用すると、アプリでメッセージを固定したり、固定を解除したり、Google Chat スペースで固定されているすべてのメッセージのリストを取得したりできます。固定されたメッセージは、スペースのすべてのメンバーの Chat インターフェースに表示されます。この API を使用すると、アプリでユーザーに代わって固定メッセージを管理できます。

ユーザーがスペースでメッセージを固定する方法については、スペースやメッセージでメッセージ、ファイル、リンクを固定するをご覧ください。

前提条件

Node.js

考慮事項

  • 固定できるのは、スペースにすでに存在するメッセージのみです。同じリクエストで新しいメッセージを作成して固定することはできません。
  • 自分だけに表示されるメッセージは固定できません。たとえば、アプリから受信した非公開メッセージは固定できません。
  • 各 Chat スペースには、最大 100 件の固定メッセージを設定できます。アプリが 101 件目のメッセージを固定しようとすると、API はエラーを返します。

メッセージを固定する

ユーザー認証を使用してメッセージを固定するには、リクエストで次の情報を渡します。

  • chat.spaces.pins または chat.spaces 認証スコープを指定します。
  • messagePins.create を呼び出します。
  • parent(Space 名)を指定し、元のメッセージの message リソース名を含む body を指定します。

次のサンプルでは、スペースにメッセージを固定します。

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.pins"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then pins a message in a space.
        '''
    
        # Authenticate with Google Workspace and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        service = build('chat', 'v1', credentials=creds)
    
        # Pin a message.
        result = service.spaces().messagePins().create(
            # The space to pin the message in.
            #
            # Replace SPACE with a space ID or name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE',
    
            # The message to pin.
            body={
                'message': 'spaces/SPACE/messages/MESSAGE'
            }
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. コードで、次のように置き換えます。

    • SPACE: スペースの name からの ID。
    • MESSAGE: メッセージの name からの ID。
  4. 作業ディレクトリで、サンプルをビルドして実行します。

    python3 chat_pin_message.py

メッセージの固定を解除する

ユーザー認証を使用してメッセージのピン留めを解除するには、リクエストで次の値を渡します。

  • chat.spaces.pins または chat.spaces 認証スコープを指定します。
  • messagePins.delete を呼び出します。
  • name に、削除する MessagePin のリソース名を設定します。

メッセージのピン留めを解除する方法は次のとおりです。

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.pins"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then unpins a message from a space.
        '''
    
        # Authenticate with Google Workspace and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        service = build('chat', 'v1', credentials=creds)
    
        # Unpin a message.
        result = service.spaces().messagePins().delete(
            # The resource name of the message pin to delete.
            #
            # Replace SPACE with a space ID or name, and MESSAGE with the message ID.
            name='spaces/SPACE/messagePins/MESSAGE'
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. コードで、次のように置き換えます。

    • SPACE: スペースの name からの ID。
    • MESSAGE: メッセージの name からの ID。
  4. 作業ディレクトリで、サンプルをビルドして実行します。

    python3 chat_unpin_message.py

固定されたメッセージのリストを取得する

アクセス権のあるスペースに固定されているメッセージのリストを取得するには、ユーザー認証を使用し、リクエストで次の情報を渡します。

  • 読み取りスコープとして chat.spaces.pins.readonlychat.spaces.readonlychat.spaces.pinschat.spaces のいずれかを指定します。
  • messagePins.list を呼び出します。
  • 固定メッセージを取得する Space 名として parent を指定します。

固定されたメッセージを一覧表示する方法は次のとおりです。

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.pins.readonly"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then lists pinned messages in a space.
        '''
    
        # Authenticate with Google Workspace and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        service = build('chat', 'v1', credentials=creds)
    
        # List pinned messages.
        result = service.spaces().messagePins().list(
            # The space to list pinned messages from.
            #
            # Replace SPACE with a space ID or name.
            parent='spaces/SPACE'
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. コードで、SPACE はスペースの name のスペース ID に置き換えます。

  4. 作業ディレクトリで、サンプルをビルドして実行します。

    python3 chat_list_pinned_messages.py