このガイドでは、Google Chat API の Space
リソースの setup
メソッドを使用して、Google Chat スペースを設定する方法について説明します。スペースを設定するとスペースが作成され
指定したユーザーが追加されます
Space
リソースは、ユーザーと Chat アプリがメッセージの送信、ファイル共有、コラボレーションを行う場所を表します。スペースには次の種類があります。
- ダイレクト メッセージ(DM)は、2 人のユーザー間の会話、またはユーザーと Chat アプリ間の会話です。
- グループ チャットとは、3 人以上のユーザーと Chat アプリの間で交わされる会話のことです。
- 名前付きスペースは、メッセージの送信、ファイルの共有、共同編集を行う永続的な場所です。
スペースを設定する際は、次の点を考慮してください。
- 呼び出し元(認証済み)ユーザーはスペースに自動的に追加されるため、リクエストでユーザーのメンバーシップを指定する必要はありません。
- ダイレクト メッセージ(DM)を作成する際、2 人のユーザーの間に DM が存在する場合は DM が返されます。それ以外の場合は、DM が作成されます。
- グループ チャットを作成する際に、リクエストで提供されたメンバーシップがグループ チャットに正常に追加されない場合(権限の問題など)、空のグループ チャット(呼び出し元のユーザーのみを含む)が作成されることがあります。
- スレッド返信を使用したスペースを設定したり、Google Workspace の外部にユーザーを追加したりすることはできません。
- リクエストで提供された重複するメンバーシップ(呼び出し元のユーザーを含む)は、リクエスト エラーにならずに除外されます。
前提条件
Python
- Python 3.6 以降
- pip パッケージ管理ツール
Python 用の最新の Google クライアント ライブラリ。これらをインストールまたは更新するには、コマンドライン インターフェースで次のコマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Google Chat API が有効で構成された Google Cloud プロジェクト。手順については、Google Chat アプリを作成するをご覧ください。
Chat アプリに認可が構成されています。スペースを設定するには、
chat.spaces.create
またはchat.spaces
承認スコープを持つユーザー認証が必要です。
Node.js
- Node.js と npm
Node.js 用の最新の Google クライアント ライブラリ。これらをインストールするには、コマンドライン インターフェースで次のコマンドを実行します。
npm install @google-cloud/local-auth @googleapis/chat
- Google Chat API が有効で構成された Google Cloud プロジェクト。手順については、Google Chat アプリを作成するをご覧ください。
Chat アプリ用に認可が構成されています。スペースを作成するには、承認スコープが
chat.spaces.create
またはchat.spaces
のユーザー認証が必要です。
スペースを設定する
スペースを設定するには、リクエストに以下を渡します。
chat.spaces.create
またはchat.spaces
承認スコープを指定します。Space
リソースのsetup
メソッドを呼び出します。- 人間のユーザーをスペースのメンバーとして追加するには、
users/{user}
を指定します。ここで、{user}
は People API のperson
の{person_id}
か、Directory API のuser
の ID です。たとえば、People API のユーザーresourceName
がpeople/123456789
の場合、users/123456789
のメンバーシップをmember.name
として追加することで、ユーザーをスペースに追加できます。 - 呼び出し元のユーザーと人間の別のユーザーの DM を作成するには、リクエストで人間のユーザーのメンバーシップを指定します。
- 呼び出し元のユーザーと呼び出し元アプリの間の DM を作成するには、
Space.singleUserBotDm
をtrue
に設定し、メンバーシップは指定しません。このメソッドを使用できるのは、呼び出し元アプリに対する DM の設定のみです。呼び出し元アプリをスペースのメンバーまたは 2 人の人間のユーザー間の既存の DM として追加するには、メンバーシップを作成するをご覧ください。
次の例では、名前付きスペースを作成し、人間 3 人(認証済みユーザーと他の 2 人の指定ユーザー)のスペースへのメンバーシップを作成します。
Python
- 作業ディレクトリに、
chat_space_setup.py
という名前のファイルを作成します。 chat_space_setup.py
に次のコードを追加します。from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"] def main(): ''' Authenticates with Chat API via user credentials, then sets up a Chat space by creating a space and adding members. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. result = chat.spaces().setup( # Details about the space to set up. body = { # Attributes of the space to set up, like space type and display name. 'space': { # To set up a named space, set spaceType to SPACE. 'spaceType': 'SPACE', # The user-visible name of the space 'displayName': 'API-setup' }, # The people and app to add to the space. # # The authenticated user is automatically added to the space, # and doesn't need to be specified in the memberships array. 'memberships': [ { 'member': { 'name':'users/123456789', 'type': 'HUMAN' } }, { 'member': { 'name':'users/987654321', 'type': 'HUMAN' } } ] } ).execute() # Prints details about the created space. print(result) if __name__ == '__main__': main()
作業ディレクトリで、サンプルをビルドして実行します。
python3 chat_space_setup.py
Node.js
- 作業ディレクトリに、
setup-space.js
という名前のファイルを作成します。 setup-space.js
に次のコードを追加します。const chat = require('@googleapis/chat'); const {authenticate} = require('@google-cloud/local-auth'); /** * Sets up a new Chat space with users. * @return {!Promise<!Object>} */ async function setupSpace() { const scopes = [ 'https://www.googleapis.com/auth/chat.spaces.create', ]; const authClient = await authenticate({scopes, keyfilePath: 'client_secrets.json'}); const chatClient = await chat.chat({version: 'v1', auth: authClient}); return await chatClient.spaces.setup({ requestBody: { space: { spaceType: 'SPACE', displayName: 'API-made', }, memberships: [ {member: {name: 'users/123456789', type: 'HUMAN'}}, {member: {name: 'users/987654321', type: 'HUMAN'}}, ] } }); } setupSpace().then(console.log);
作業ディレクトリでサンプルを実行します。
node setup-space.js
認証済みユーザーを含む 3 人のユーザーが参加する名前付き Chat スペースが設定されます。
スペースに移動するには、スペースのリソース ID を使用してスペースの URL を作成します。
リソース ID は、Google Chat のレスポンス本文のスペース name
から取得できます。たとえば、スペースの name
が spaces/1234567
の場合、https://mail.google.com/chat/u/0/#chat/space/1234567
という URL を使用してスペースに移動できます。