Crea un espacio de Google Chat y agrega miembros

En esta guía, se explica cómo usar el método setUp() en el recurso Space de la API de Google Chat para crear un espacio de Chat y agregar miembros a él.

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.

Puedes usar el método setUp() para realizar cualquiera de las siguientes acciones:

  • Crea un espacio con nombre y miembros iniciales.
  • Crear un mensaje directo entre dos personas
  • Configurar un mensaje grupal entre varias personas

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 es necesario que especifiques su membresía en la solicitud.
  • Cuando se crea un mensaje directo (MD), si existe un MD entre dos usuarios, se muestra el MD. De lo contrario, se crea un mensaje directo.
  • Cuando se crea 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 solo incluya al usuario que realiza la llamada).
  • No puedes configurar espacios con respuestas en conversaciones ni agregar personas ajenas a 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

Cómo configurar un espacio

Para configurar un espacio, pasa lo siguiente en tu 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 el resourceName de la persona de la API de Personas 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 de un espacio, en el que {group} es el ID del grupo para el que deseas 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 la realiza, 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.