Создайте пространство Google Chat и добавьте участников.

В этом руководстве объясняется, как использовать метод setUp() ресурса Space в Google Chat API для создания пространства чата и добавления в него участников.

Ресурс Space представляет собой место, где люди и приложения для чата могут отправлять сообщения, обмениваться файлами и сотрудничать. Существует несколько типов пространств:

  • Личные сообщения (DM) — это переписка между двумя пользователями или между пользователем и приложением для чата.
  • Групповые чаты — это беседы между тремя или более пользователями в чат-приложениях.
  • Именованные пространства — это постоянно доступные места, где люди отправляют сообщения, обмениваются файлами и сотрудничают.

Метод setUp() можно использовать для выполнения любого из следующих действий:

  • Создайте именованное пространство с первоначальным набором участников.
  • Создайте личное сообщение (DM) между двумя людьми.
  • Создайте групповой чат для нескольких человек.

При обустройстве пространства следует учитывать следующее:

  • Пользователь, вызывающий соединение (прошедший аутентификацию), автоматически добавляется в пространство, поэтому вам не нужно указывать членство пользователя в запросе.
  • При создании личного сообщения (ЛС), если между двумя пользователями уже существует ЛС, возвращается ЛС. В противном случае создается ЛС.
  • При создании группового чата, если ни одно из указанных в запросе членств не будет успешно добавлено в групповой чат (например, из-за проблем с правами доступа), может быть создан пустой групповой чат (содержащий только вызывающего пользователя).
  • Вы не можете создавать пространства с древовидными ответами или добавлять людей, не входящих в вашу организацию Google Workspace.
  • Указанные в запросе дублирующиеся данные о членстве (включая данные вызывающего пользователя) отфильтровываются, а не приводят к ошибке запроса.
  • Когда администратор Google Workspace устанавливает приложение чата для всей своей организации Google Workspace , Google Chat создает личное сообщение между установленным приложением чата и каждым пользователем в организации, поэтому нет необходимости программно настраивать личные сообщения. Вместо этого можно перечислить пространства , чтобы получить все личные сообщения, или найти личное сообщение, чтобы получить подробную информацию о конкретном сообщении.

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

Node.js

Python

Java

Apps Script

Обустройте пространство

Для создания пространства передайте в запросе следующее:

  • Укажите область авторизации chat.spaces.create или chat.spaces .
  • Вызовите метод SetUpSpace() .
  • Передайте space в виде экземпляра класса Space со всеми необходимыми полями, такими как displayName или spaceType .
  • Передайте memberships в виде массива экземпляров Membership . Для каждого экземпляра:
    • Укажите users/{user} , чтобы добавить пользователя в качестве участника пространства, где {user} — это либо {person_id} person из People API, либо ID user в Directory API. Например, если resourceName пользователя в People API — people/123456789 , вы можете добавить пользователя в пространство, указав в качестве member.name users/123456789 .
    • Укажите groups/{group} , чтобы добавить группу в качестве участника пространства, где {group} — это идентификатор группы, для которой вы хотите создать членство. Идентификатор группы можно получить с помощью Cloud Identity API . Например, если Cloud Identity API возвращает группу с именем groups/123456789 , то установите membership.groupMember.name равным groups/123456789 . Группы Google нельзя добавить в групповой чат или личные сообщения, только в именованное пространство.

Для создания личного сообщения между вызывающим пользователем и другим пользователем-человеком укажите в запросе принадлежность этого пользователя к группе.

Чтобы создать личное сообщение между вызывающим пользователем и вызывающим приложением, установите space.singleUserBotDm в true и не указывайте никаких членств. Этот метод можно использовать только для создания личного сообщения с вызывающим приложением. Чтобы добавить вызывающее приложение в качестве участника пространства или существующего личного сообщения между двумя пользователями, см. раздел «Создание членства» .

В следующем примере создается именованное пространство и регистрируется один пользователь в этом пространстве (аутентифицированный пользователь и еще один пользователь).

Node.js

chat/client-libraries/cloud/set-up-space-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

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

// This sample shows how to set up a named space with one initial member
// with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    space: {
      spaceType: 'SPACE',
      // Replace DISPLAY_NAME here.
      displayName: 'DISPLAY_NAME',
    },
    memberships: [
      {
        member: {
          // Replace USER_NAME here.
          name: 'users/USER_NAME',
          type: 'HUMAN',
        },
      },
    ],
  };

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

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

await main();

Python

chat/client-libraries/cloud/set_up_space_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.spaces.create"]

def set_up_space_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.SetUpSpaceRequest(
        space = {
            "space_type": 'SPACE',
            # Replace DISPLAY_NAME here.
            "display_name": 'DISPLAY_NAME'
        },
        memberships = [{
            "member": {
                # Replace USER_NAME here.
                "name": 'users/USER_NAME',
                "type_": 'HUMAN'
            }
        }]
    )

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

    # Handle the response
    print(response)

set_up_space_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/SetUpSpaceUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SetUpSpaceRequest;
import com.google.chat.v1.Space;
import com.google.chat.v1.User;

// This sample shows how to set up a named space with one initial member with
// user credential.
public class SetUpSpaceUserCred {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      SetUpSpaceRequest.Builder request = SetUpSpaceRequest.newBuilder()
        .setSpace(Space.newBuilder()
          .setSpaceType(Space.SpaceType.SPACE)
          // Replace DISPLAY_NAME here.
          .setDisplayName("DISPLAY_NAME"))
        .addAllMemberships(ImmutableList.of(Membership.newBuilder()
          .setMember(User.newBuilder()
            // Replace USER_NAME here.
            .setName("users/USER_NAME")
            .setType(User.Type.HUMAN)).build()));
      Space response = chatServiceClient.setUpSpace(request.build());

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

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to set up a named space with one initial member with
 * user credential.
 *
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.spaces.create'
 * referenced in the manifest file (appsscript.json).
 */
function setUpSpaceUserCred() {
  // Initialize request argument(s)
  const space = {
    spaceType: "SPACE",
    // TODO(developer): Replace DISPLAY_NAME here
    displayName: "DISPLAY_NAME",
  };
  const memberships = [
    {
      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.setup({
    space: space,
    memberships: memberships,
  });

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

Для запуска примера замените следующее:

  • DISPLAY_NAME : отображаемое имя нового пространства.
  • USER_NAME : идентификатор другого пользователя, для которого необходимо добавить членство.

Чтобы перейти в пространство, используйте идентификатор ресурса пространства для формирования URL-адреса пространства. Идентификатор ресурса можно получить из name пространства в теле ответа Google Chat. Например, если name вашего пространства — spaces/1234567 , вы можете перейти в него, используя следующий URL-адрес: https://mail.google.com/chat/u/0/#chat/space/1234567 .