Пригласите или добавьте пользователя, группу Google или приложение Google Chat в пространство.

В этом руководстве объясняется, как использовать метод create() ресурса Membership API Google Chat для приглашения или добавления пользователя, группы Google или приложения Chat в пространство, что также называется созданием членства. Если при создании членства у указанного участника отключена политика автоматического принятия, он получает приглашение и должен принять приглашение перед присоединением. В противном случае создание членства добавляет участника непосредственно в указанное пространство.

Если вы являетесь администратором Google Workspace, вы можете добавлять пользователей, группы Google или приложения чата в любое пространство в вашей организации Google Workspace.

Ресурс Membership показывает, приглашен ли пользователь-человек или приложение Google Chat в пространство, является его частью или отсутствует в нем.

Предпосылки

Node.js

Питон

Ява

Скрипт приложений

Пригласить или добавить пользователя в пространство в качестве пользователя

Чтобы пригласить или добавить пользователя в пространство с аутентификацией пользователя , передайте в запросе следующее:

  • Укажите область авторизации chat.memberships .
  • Вызовите метод CreateMembership() .
  • Передайте parent как имя ресурса пространства, в котором необходимо создать членство.
  • Передайте membership как экземпляр Membership со следующим набором полей member :
    • Поле type установлено на HUMAN .
    • Поле name имеет значение users/{user} , где {user} — имя человека, которого вы хотите добавить в чат. Чтобы указать пользователя чата , замените {user} на любое из следующих значений:
      • Идентификатор пользователя в API People. Например, если resourceName пользователя API People — people/123456789 , то следует использовать значение users/123456789 .
      • Идентификатор пользователя в API каталога.
      • Адрес электронной почты пользователя. Например, users/222larabrown@gmail.com или users/larabrown@cymbalgroup.com . Если пользователь использует учётную запись Google или принадлежит к другой организации Google Workspace, необходимо указать его адрес электронной почты.

В следующем примере пользователь добавляется в пространство с аутентификацией пользователя :

Node.js

chat/client-libraries/cloud/create-membership-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.memberships'];

// This sample shows how to create membership with user credential for a human user
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    membership: {
      member: {
        // Replace USER_NAME here
        name: 'users/USER_NAME',
        // User type for the membership
        type: 'HUMAN'
      }
    }
  };

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

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

main().catch(console.error);

Питон

chat/client-libraries/cloud/create_membership_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.memberships"]

# This sample shows how to create membership with user credential for a human
# user
def create_membership_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "member": {
                # Replace USER_NAME here
                "name": "users/USER_NAME",
                # user type for the membership
                "type_": "HUMAN"
            }
        }
    )

    # Make the request
    response = client.create_membership(request)

    # Handle the response
    print(response)

create_membership_with_user_cred()

Ява

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.User;

// This sample shows how to create membership with user credential for a human
// user.
public class CreateMembershipUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.memberships";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setMember(User.newBuilder()
            // replace USER_NAME here
            .setName("users/USER_NAME")
            // user type for the membership
            .setType(User.Type.HUMAN)));
      Membership response = chatServiceClient.createMembership(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Скрипт приложений

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with user credential for a human user
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    member: {
      // TODO(developer): Replace USER_NAME here
      name: 'users/USER_NAME',
      // User type for the membership
      type: 'HUMAN'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

Чтобы запустить образец, замените следующее:

  • SPACE_NAME : идентификатор из name пространства. Идентификатор можно получить, вызвав метод ListSpaces() или указав URL пространства.
  • USER_NAME : идентификатор пользователя.

API чата возвращает экземпляр Membership , который подробно описывает созданное членство пользователя.

Пригласите или добавьте группу Google в пространство

Чтобы пригласить или добавить группу Google в пространство с аутентификацией пользователя ( аутентификация приложения не поддерживает приглашение или добавление группы Google в пространство), передайте в запросе следующее:

  • Укажите область авторизации chat.memberships .
  • Вызовите метод CreateMembership() .
  • Передайте parent как имя ресурса пространства, в котором необходимо создать членство.
  • Передайте membership как экземпляр Membership , задав для поля groupMember name groups/{group} , где {group} — идентификатор группы, для которой вы хотите создать членство. Идентификатор группы можно получить с помощью API Cloud Identity .

Группы Google нельзя добавлять в групповой чат или личное сообщение, можно только в именованное пространство.

В следующем примере группа добавляется в именованное пространство с аутентификацией пользователя:

Node.js

chat/client-libraries/cloud/create-membership-user-cred-for-group.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.memberships'];

// This sample shows how to create membership with user credential for a group
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    membership: {
      groupMember: {
        // Replace GROUP_NAME here
        name: 'groups/GROUP_NAME'
      }
    }
  };

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

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

main().catch(console.error);

Питон

chat/client-libraries/cloud/create_membership_user_cred_for_group.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.memberships"]

# This sample shows how to create membership with user credential for a group
def create_membership_with_user_cred_for_group():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "groupMember": {
                # Replace GROUP_NAME here
                "name": "groups/GROUP_NAME"
            }
        }
    )

    # Make the request
    response = client.create_membership(request)

    # Handle the response
    print(response)

create_membership_with_user_cred_for_group()

Ява

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCredForGroup.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.Group;

// This sample shows how to create membership with user credential for a group.
public class CreateMembershipUserCredForGroup {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.memberships";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setGroupMember(Group.newBuilder()
            // replace GROUP_NAME here
            .setName("groups/GROUP_NAME")));
      Membership response = chatServiceClient.createMembership(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Скрипт приложений

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with user credential for a group
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCredForGroup() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    groupMember: {
      // TODO(developer): Replace GROUP_NAME here
      name: 'groups/GROUP_NAME'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

Чтобы запустить образец, замените следующее:

  • SPACE_NAME : идентификатор из name пространства. Идентификатор можно получить, вызвав метод ListSpaces() или указав URL пространства.
  • GROUP_NAME : идентификатор группы.

API чата возвращает экземпляр Membership , который подробно описывает созданное членство пользователя.

Добавьте приложение чата в пространство

Приложение чата не может добавлять другие приложения в качестве участников пространства. Чтобы добавить приложение чата в пространство или отправить прямое сообщение между двумя пользователями, передайте в запросе следующую информацию с аутентификацией пользователя ( аутентификация приложения не поддерживает приглашение или добавление приложения чата в пространство):

  • Укажите область авторизации chat.memberships.app .
  • Вызовите метод CreateMembership() .
  • Передайте parent как имя ресурса пространства, в котором необходимо создать членство.
  • Передайте membership как экземпляр Membership со следующим набором полей member :
    • Поле type установлено на BOT .
    • Поле name установлено на users/app ; псевдоним, представляющий приложение, вызывающее API чата.

В следующем примере приложение чата добавляется в пространство:

Node.js

chat/client-libraries/cloud/create-membership-user-cred-for-app.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.memberships.app'];

// This sample shows how to create membership with app credential for an app
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    membership: {
      member: {
        // Member name for app membership, do not change this
        name: 'users/app',
        // User type for the membership
        type: 'BOT'
      }
    }
  };

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

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

main().catch(console.error);

Питон

chat/client-libraries/cloud/create_membership_user_cred_for_app.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.memberships.app"]

# This sample shows how to create membership with app credential for an app
def create_membership_with_user_cred_for_app():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "member": {
                # member name for app membership, do not change this.
                "name": "users/app",
                # user type for the membership
                "type_": "BOT"
            }
        }
    )

    # Make the request
    response = client.create_membership(request)

    # Handle the response
    print(response)

create_membership_with_user_cred_for_app()

Ява

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCredForApp.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.User;

// This sample shows how to create membership with user credential for the
// calling app.
public class CreateMembershipUserCredForApp {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.memberships.app";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setMember(User.newBuilder()
            // member name for app membership, do not change this.
            .setName("users/app")
            // user type for the membership
            .setType(User.Type.BOT)));
      Membership response = chatServiceClient.createMembership(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Скрипт приложений

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with app credential for an app
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships.app'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCredForApp() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    member: {
      // Member name for app membership, do not change this
      name: 'users/app',
      // User type for the membership
      type: 'BOT'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

Чтобы запустить пример, замените SPACE_NAME на идентификатор из name пространства. Идентификатор можно получить, вызвав метод ListSpaces() или указав URL пространства.

API чата возвращает экземпляр Membership , который подробно описывает созданное членство пользователя.

Пригласите или добавьте пользователя в пространство как приложение чата

Аутентификация приложения требует однократного одобрения администратора .

Чтобы пригласить или добавить пользователя в пространство с аутентификацией через приложение , передайте в запросе следующее:

  • Укажите область авторизации chat.app.memberships .
  • Вызовите метод create для ресурса membership .
  • Установите parent на имя ресурса пространства, в котором необходимо создать членство.
  • Установите для member users/{user} , где {user} — это человек, для которого вы хотите создать членство, и он может быть:
    • Идентификатор пользователя в API People. Например, если resourceName пользователя API People — people/123456789 , то установите membership.member.name равным users/123456789 .
    • Идентификатор пользователя в API каталога.
    • Адрес электронной почты пользователя. Например, users/222larabrown@gmail.com или users/larabrown@cymbalgroup.com . Если пользователь использует учётную запись Google или принадлежит к другой организации Google Workspace, необходимо указать его адрес электронной почты.

Напишите скрипт, который вызывает Chat API

В следующем примере пользователь добавляется в пространство с аутентификацией приложения :

Питон

  1. В рабочем каталоге создайте файл с именем chat_membership_app_create.py .
  2. Включите следующий код в chat_membership_app_create.py :

    from google.oauth2 import service_account
    from apiclient.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.app.memberships"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then adds a user to a Chat space by creating a membership.
        '''
    
        # 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)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().members().create(
    
            # The space in which to create a membership.
            parent = 'spaces/SPACE',
    
            # Specify which user the membership is for.
            body = {
              'member': {
                'name':'users/USER',
                'type': 'HUMAN'
              }
            }
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. В коде замените следующее:

    • SPACE : имя пространства, которое можно получить из метода spaces.list в API чата или из URL-адреса пространства.

    • USER : идентификатор пользователя.

  4. В вашем рабочем каталоге соберите и запустите пример:

    python3 chat_membership_app_create.py

Добавьте пользователей или группы Google в пространство как администратор Google Workspace.

Если вы являетесь администратором Google Workspace, вы можете вызвать метод create() , чтобы добавить пользователей, группы Google или приложения чата в любое пространство в вашей организации Google Workspace.

Чтобы вызвать этот метод от имени администратора Google Workspace, выполните следующие действия:

Дополнительную информацию и примеры см. в статье Управление пространствами Google Chat в качестве администратора Google Workspace .

Ограничения и соображения