Cómo configurar un espacio con miembros iniciales

En esta guía, se explica cómo usar la setUp() en el recurso Space de la API de Google Chat para configurar una conversación espacio. Cuando configuras un espacio, se crea uno y se agregan a él los usuarios especificados.

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 donde las personas envían mensajes, y colaborar.

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 necesita especificar la membresía del usuario en la solicitud.
  • Cuando se crea un mensaje directo (MD), si hay un DM entre dos usuarios, y, luego, se devuelve el DM. De lo contrario, se crea un mensaje directo.
  • Cuando crees un chat en grupo, si ninguna de las membresías proporcionadas en la solicitud se agreguen correctamente al chat en grupo (por ejemplo, si hay un problema con los permisos) y, luego, Es posible que se cree un chat en grupo vacío (incluido solo el usuario que realiza la llamada).
  • No puedes configurar espacios con respuestas en múltiples conversaciones ni agregar personas fuera de tu en 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 tu solicitud:

  • Especifica el permiso 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 Membership individuales. Para cada instancia:
    • Especifica users/{user} para agregar un usuario humano como miembro del espacio, donde {user} es el {person_id} de person de la API de People o el ID de un user en la API de Directory. Por ejemplo, si la persona de la API de People resourceName es people/123456789. Para agregar el usuario al espacio, incluida 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 pueden recuperar API de Cloud Identity. Por ejemplo, si el API de Cloud Identity muestra un grupo con el nombre groups/123456789 y, luego, establece membership.groupMember.name a groups/123456789. Los Grupos de Google no se pueden a un chat en grupo o MD, pero solo a un espacio con nombre.

Para crear un MD entre el usuario que llama y otro usuario humano, especifica un la 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. Puedes solo usarás este método para configurar un MD con la app que realiza la llamada. Para agregar la llamada como miembro de un espacio o un DM existente entre dos usuarios humanos, consulta crea una membresía.

En el siguiente ejemplo, se crea un espacio con nombre y una membresía en 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 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.