Crea un espacio de Google Chat y agrega miembros

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

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 entre un usuario y una app de Chat.
  • Los chats grupales son conversaciones entre tres o más usuarios y apps de Chat.
  • Los espacios con nombre son lugares persistentes donde 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.
  • Crea un mensaje directo (MD) entre dos personas.
  • Configurar un mensaje grupal entre varias personas

Cuando configures un espacio, ten en cuenta lo siguiente:

  • El usuario que llama (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 devuelve 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, por 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 subprocesos ni agregar personas ajenas a tu organización de Google Workspace.
  • Las membresías duplicadas (incluido el usuario que llama) proporcionadas en la solicitud se filtran en lugar de generar un error de solicitud.
  • Cuando un administrador de Google Workspace instala una app de Chat para toda su organización de Google Workspace, Google Chat crea un MD entre la app de Chat instalada y cada usuario de la organización, por lo que no es necesario configurar los MD de forma programática. En su lugar, enumera los espacios para devolver todos los MD o busca un mensaje directo para obtener detalles sobre un MD específico.

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 del espacio, donde {user} es el {person_id} del 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 incluyendo una membresía con users/123456789 como member.name.
    • Especifica groups/{group} para agregar un grupo como miembro del espacio, donde {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 devuelve 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 MD entre el usuario que llama y otro usuario humano, especifica la membresía del usuario humano en tu solicitud.

Para crear un MD entre el usuario que llama y la app que llama, establece space.singleUserBotDm en true y no especifiques ninguna membresía. Solo puedes usar este método para configurar un MD con la app que realiza la llamada. Para agregar la app que realiza la llamada como miembro de un espacio o de un MD 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 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 su URL. 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.