Chat API の MessagePin リソースを使用すると、アプリでメッセージを固定したり、固定を解除したり、Google Chat スペースで固定されているすべてのメッセージのリストを取得したりできます。固定されたメッセージは、スペースのすべてのメンバーの Chat インターフェースに表示されます。この API を使用すると、アプリでユーザーに代わって固定メッセージを管理できます。
ユーザーがスペースでメッセージを固定する方法については、スペースやメッセージでメッセージ、ファイル、リンクを固定するをご覧ください。
前提条件
Node.js
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- 環境を設定します。
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成する。
- Chat 用アプリの名前、アイコン、説明を使用して、Google Chat API を有効にして構成します。
- Node.js Cloud クライアント ライブラリをインストールします。
- デスクトップ アプリケーション用の
OAuth クライアント ID 認証情報を作成します。このガイドのサンプルを実行するには、認証情報を
credentials.jsonという名前の JSON ファイルとしてローカル ディレクトリに保存します。
- ユーザー認証をサポートする 認可スコープを選択します。
考慮事項
- 固定できるのは、スペースにすでに存在するメッセージのみです。同じリクエストで新しいメッセージを作成して固定することはできません。
- 自分だけに表示されるメッセージは固定できません。たとえば、アプリから受信した非公開メッセージは固定できません。
- 各 Chat スペースには、最大 100 件の固定メッセージを設定できます。アプリが 101 件目のメッセージを固定しようとすると、API はエラーを返します。
メッセージを固定する
ユーザー認証を使用してメッセージを固定するには、リクエストで次の情報を渡します。
chat.spaces.pinsまたはchat.spaces認証スコープを指定します。messagePins.createを呼び出します。parent(Space 名)を指定し、元のメッセージのmessageリソース名を含むbodyを指定します。
次のサンプルでは、スペースにメッセージを固定します。
Python
- 作業ディレクトリに
chat_pin_message.pyという名前のファイルを作成します。 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()コードで、次のように置き換えます。
作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_pin_message.py
メッセージの固定を解除する
ユーザー認証を使用してメッセージのピン留めを解除するには、リクエストで次の値を渡します。
chat.spaces.pinsまたはchat.spaces認証スコープを指定します。messagePins.deleteを呼び出します。nameに、削除するMessagePinのリソース名を設定します。
メッセージのピン留めを解除する方法は次のとおりです。
Python
- 作業ディレクトリに
chat_unpin_message.pyという名前のファイルを作成します。 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()コードで、次のように置き換えます。
作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_unpin_message.py
固定されたメッセージのリストを取得する
アクセス権のあるスペースに固定されているメッセージのリストを取得するには、ユーザー認証を使用し、リクエストで次の情報を渡します。
- 読み取りスコープとして
chat.spaces.pins.readonly、chat.spaces.readonly、chat.spaces.pins、chat.spacesのいずれかを指定します。 messagePins.listを呼び出します。- 固定メッセージを取得する Space 名として
parentを指定します。
固定されたメッセージを一覧表示する方法は次のとおりです。
Python
- 作業ディレクトリに
chat_list_pinned_messages.pyという名前のファイルを作成します。 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()コードで、
SPACEはスペースのnameのスペース ID に置き換えます。作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_list_pinned_messages.py