このガイドでは、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
の場合、member.name
としてusers/123456789
を持つメンバーシップを含めることで、そのユーザーをスペースに追加できます。 - グループをスペースのメンバーとして追加するには、
groups/{group}
を指定します。ここで、{group}
はメンバーシップを作成するグループ ID です。グループの ID は、Cloud Identity API を使用して取得できます。たとえば、Cloud Identity API がgroups/123456789
という名前のグループを返す場合は、membership.groupMember.name
をgroups/123456789
に設定します。Google グループは、グループ チャットや DM には追加できません。名前付きスペースにのみ追加できます。 - 呼び出し元のユーザーと別の人間のユーザー間の DM を作成するには、リクエストに人間のユーザーのメンバーシップを指定します。
- 呼び出し元ユーザーと呼び出し元アプリの間の DM を作成するには、
Space.singleUserBotDm
をtrue
に設定し、メンバーシップは指定しません。このメソッドは、通話アプリで DM を設定する場合にのみ使用できます。2 人の人間のユーザー間のスペースまたは既存の DM のメンバーとして通話アプリを追加するには、メンバーシップを作成するをご覧ください。
次の例では、名前付きスペースを作成し、1 つのグループと 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 users and groups 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' } }, { 'groupMember': { 'name': 'groups/11223344' } } ] } ).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'}}, {groupMember: {name: 'groups/11223344'}}, ] } }); } setupSpace().then(console.log);
作業ディレクトリでサンプルを実行します。
node setup-space.js
1 つのグループと 3 人の人間ユーザー(認証済みユーザーを含む)からなる名前付きの Chat スペースが設定されます。
スペースにアクセスするには、スペースのリソース ID を使用してスペースの URL を作成します。
リソース ID は、Google Chat のレスポンス本文のスペース name
から取得できます。たとえば、スペースの name
が spaces/1234567
の場合、URL https://mail.google.com/chat/u/0/#chat/space/1234567
を使用してスペースにアクセスできます。
関連トピック
- スペースを作成します。
- スペースの詳細を調べる
- スペースを一覧表示する。
- スペースを更新する。
- スペースを削除する
- ダイレクト メッセージ スペースを見つけます。
- 特定のユーザーがスペースを検索できるようにする