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

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

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

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

Предварительные требования

Node.js

Python

Java

Apps Script

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

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

  • Укажите область авторизации 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);
}

await main();

Python

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()

Java

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));
    }
  }
}

Apps Script

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} — это идентификатор группы, для которой вы хотите создать членство. Идентификатор группы можно получить с помощью Cloud Identity API .

Группы 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);
}

await main();

Python

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()

Java

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));
    }
  }
}

Apps Script

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 an app membership.
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);
}

await main();

Python

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()

Java

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));
    }
  }
}

Apps Script

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} — это человек, для которого вы хотите создать членство, и он может быть либо:
    • Идентификатор пользователя в People API. Например, если resourceName пользователя в People API — people/123456789 , то установите membership.member.name равным users/123456789 .
    • Идентификатор пользователя в API каталога.
    • Адрес электронной почты пользователя. Например, users/222larabrown@gmail.com или users/larabrown@cymbalgroup.com . Если пользователь использует учетную запись Google или принадлежит к другой организации Google Workspace, необходимо использовать его адрес электронной почты.

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

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

Python

  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» .

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