Cómo configurar un espacio con miembros iniciales

En esta guía, se explica cómo usar el método setUp() en el recurso Space de la API de Google Chat para configurar un espacio de Google Chat. Cuando configuras un espacio, se crea un espacio y se le agregan usuarios específicos.

El recurso Space representa un lugar donde las personas y las apps de Chat pueden enviar mensajes, compartir archivos y colaborar. Existen varios tipos de espacios:

  • Los mensajes directos (MD) son conversaciones entre dos usuarios o un usuario y una app de Chat.
  • Los chats en grupo son conversaciones entre tres o más usuarios y apps de chat.
  • Los espacios con nombre son lugares persistentes en los que las personas envían mensajes, comparten archivos y colaboran.

Cuando configures un espacio, ten en cuenta lo siguiente:

  • El usuario que realiza la llamada (autenticado) se agrega automáticamente al espacio, por lo que no necesitas especificar su membresía en la solicitud.
  • Cuando se crea un mensaje directo (MD), si existe un DM entre dos usuarios, se muestra el DM. De lo contrario, se crea un mensaje directo.
  • Cuando creas un chat en grupo, si ninguna de las membresías proporcionadas en la solicitud se agrega correctamente al chat en grupo (por ejemplo, un problema de permisos), es posible que se cree un chat en grupo vacío (que incluya solo al usuario que llama).
  • No puedes configurar espacios con respuestas en múltiples conversaciones ni agregar personas fuera de tu cuenta de Google Workspace.
  • Las membresías duplicadas (incluido el usuario que realiza la llamada) proporcionadas en la solicitud se filtran en lugar de generar un error de solicitud.

Requisitos previos

Node.js

Python

Java

Apps Script

Configura un espacio

Para configurar un espacio, pasa lo siguiente en la solicitud:

  • Especifica el alcance de autorización chat.spaces.create o chat.spaces.
  • Realiza una llamada al método SetUpSpace().
  • Pasa space como una instancia de Space con todos los campos necesarios, como displayName o spaceType.
  • Pasa memberships como un array de instancias de Membership. Para cada instancia, haz lo siguiente:
    • Especifica users/{user} para agregar un usuario humano como miembro de un espacio, en el que {user} es el {person_id} para el person de la API de People o el ID de un user en la API de Directory. Por ejemplo, si la persona resourceName de la API de People es people/123456789, puedes agregar al usuario al espacio si incluyes una membresía con users/123456789 como member.name.
    • Especifica groups/{group} para agregar un grupo como miembro del espacio, en el que {group} es el ID del grupo para el que quieres crear la membresía. El ID del grupo se puede recuperar con la API de Cloud Identity. Por ejemplo, si la API de Cloud Identity muestra un grupo con el nombre groups/123456789, establece membership.groupMember.name en groups/123456789. Los Grupos de Google no se pueden agregar a un chat en grupo ni a un MD, sino solo a un espacio con nombre.

Para crear un DM entre el usuario que realiza la llamada y otro usuario humano, especifica una membresía del usuario humano en tu solicitud.

Para crear un MD entre el usuario que realiza la llamada y la app que realiza la llamada, establece space.singleUserBotDm en true y no especifiques ninguna membresía. Solo puedes usar este método para configurar un DM con la app de llamadas. Para agregar la app de llamadas como miembro de un espacio o un DM existente entre dos usuarios humanos, consulta Cómo crear una membresía.

En el siguiente ejemplo, se crea un espacio con nombre y una membresía para el espacio para dos usuarios humanos (el usuario autenticado y otro usuario).

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

main().catch(console.error);

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

Para ejecutar la muestra, reemplaza lo siguiente:

  • DISPLAY_NAME: Es el nombre visible del espacio nuevo.
  • USER_NAME: Es el ID del otro usuario para el que se incluirá una membresía.

Para ir al espacio, usa el ID de recurso del espacio para compilar la URL del espacio. Puedes obtener el ID del recurso del espacio name en el cuerpo de la respuesta de Google Chat. Por ejemplo, si el name de tu espacio es spaces/1234567, puedes ir al espacio con la siguiente URL: https://mail.google.com/chat/u/0/#chat/space/1234567.