Invitar o agregar a un usuario, un Grupo de Google o una app de Google Chat a un espacio

En esta guía, se explica cómo usar el método create() en el recurso Membership de la API de Google Chat para invitar o agregar un usuario, un Grupo de Google o una app de Chat a un espacio, también conocido como crear una membresía. Cuando crees una membresía, si el miembro especificado tiene desactivada la política de aceptación automática, se le enviará una invitación y deberá aceptarla antes de unirse al espacio. De lo contrario, crear una membresía agrega al miembro directamente al espacio especificado.

Si eres administrador de Google Workspace, puedes agregar usuarios, Google Groups o apps de Chat a cualquier espacio de tu organización de Google Workspace.

El recurso Membership representa si un usuario humano o la app de Google Chat están invitados a un espacio, forman parte de él o no están presentes.

Requisitos previos

Node.js

Python

Java

Apps Script

Invitar o agregar a un usuario a un espacio como usuario

Para invitar o agregar un usuario a un espacio con autenticación de usuarios, pasa lo siguiente en tu solicitud:

  • Especifica el alcance de autorización de chat.memberships.
  • Realiza una llamada al método CreateMembership().
  • Pasa parent como el nombre del recurso del espacio en el que se creará la membresía.
  • Pasa membership como una instancia de Membership con su campo member configurado con lo siguiente:
    • El campo type configurado como HUMAN.
    • El campo name establecido en users/{user}, donde {user} es la persona que quieres agregar al espacio Para especificar el usuario de Chat, reemplaza {user} por cualquiera de las siguientes opciones:
      • Es el ID de la persona en la API de People. Por ejemplo, si el elemento person resourceName de la API de People es people/123456789, usa el valor users/123456789.
      • Es el ID del usuario en la API de Directory.
      • La dirección de correo electrónico del usuario. Por ejemplo, users/222larabrown@gmail.com o users/larabrown@cymbalgroup.com. Si el usuario usa una Cuenta de Google o pertenece a una organización de Google Workspace diferente, debes usar su dirección de correo electrónico.

En el siguiente ejemplo, se agrega un usuario a un espacio con autenticación de usuarios:

Node.js

chat/client-libraries/cloud/create-membership-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

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

// This sample shows how to create membership with user credential for a human user
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    membership: {
      member: {
        // Replace USER_NAME here
        name: 'users/USER_NAME',
        // User type for the membership
        type: 'HUMAN'
      }
    }
  };

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

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

main().catch(console.error);

Python

chat/client-libraries/cloud/create_membership_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.memberships"]

# This sample shows how to create membership with user credential for a human
# user
def create_membership_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "member": {
                # Replace USER_NAME here
                "name": "users/USER_NAME",
                # user type for the membership
                "type_": "HUMAN"
            }
        }
    )

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

    # Handle the response
    print(response)

create_membership_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.User;

// This sample shows how to create membership with user credential for a human
// user.
public class CreateMembershipUserCred {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setMember(User.newBuilder()
            // replace USER_NAME here
            .setName("users/USER_NAME")
            // user type for the membership
            .setType(User.Type.HUMAN)));
      Membership response = chatServiceClient.createMembership(request.build());

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

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with user credential for a human user
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    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.Members.create(membership, parent);

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

Para ejecutar la muestra, reemplaza lo siguiente:

  • SPACE_NAME: Es el ID del name del espacio. Para obtener el ID, llama al método ListSpaces() o desde la URL del espacio.
  • USER_NAME: Un ID de usuario.

La API de Chat muestra una instancia de Membership que detalla la membresía del usuario que se creó.

Cómo invitar a un Grupo de Google o agregarlo a un espacio

Para invitar o agregar un Grupo de Google a un espacio con autenticación de usuarios (la autenticación de apps no admite invitar o agregar un Grupo de Google a un espacio), pasa lo siguiente en tu solicitud:

  • Especifica el alcance de autorización de chat.memberships.
  • Realiza una llamada al método CreateMembership().
  • Pasa parent como el nombre del recurso del espacio en el que se creará la membresía.
  • Pasa membership como una instancia de Membership con el campo name de groupMember establecido en groups/{group}, 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.

Los Grupos de Google no se pueden agregar a un chat grupal ni a un mensaje directo, sino solo a un espacio designado.

En el siguiente ejemplo, se agrega un grupo a un espacio con nombre con autenticación de usuario:

Node.js

chat/client-libraries/cloud/create-membership-user-cred-for-group.js
import {createClientWithUserCredentials} from './authentication-utils.js';

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

// This sample shows how to create membership with user credential for a group
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    membership: {
      groupMember: {
        // Replace GROUP_NAME here
        name: 'groups/GROUP_NAME'
      }
    }
  };

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

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

main().catch(console.error);

Python

chat/client-libraries/cloud/create_membership_user_cred_for_group.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.memberships"]

# This sample shows how to create membership with user credential for a group
def create_membership_with_user_cred_for_group():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "groupMember": {
                # Replace GROUP_NAME here
                "name": "groups/GROUP_NAME"
            }
        }
    )

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

    # Handle the response
    print(response)

create_membership_with_user_cred_for_group()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCredForGroup.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.Group;

// This sample shows how to create membership with user credential for a group.
public class CreateMembershipUserCredForGroup {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setGroupMember(Group.newBuilder()
            // replace GROUP_NAME here
            .setName("groups/GROUP_NAME")));
      Membership response = chatServiceClient.createMembership(request.build());

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

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with user credential for a group
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCredForGroup() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    groupMember: {
      // TODO(developer): Replace GROUP_NAME here
      name: 'groups/GROUP_NAME'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

Para ejecutar la muestra, reemplaza lo siguiente:

  • SPACE_NAME: Es el ID del name del espacio. Para obtener el ID, llama al método ListSpaces() o desde la URL del espacio.
  • GROUP_NAME: Un ID de grupo.

La API de Chat muestra una instancia de Membership que detalla la membresía del usuario que se creó.

Cómo agregar una app de Chat a un espacio

Una app de Chat no puede agregar otra app como miembro a un espacio. Para agregar una app de Chat a un espacio o un mensaje directo entre dos usuarios humanos, pasa lo siguiente en tu solicitud con la autenticación del usuario (la autenticación de apps no admite invitar ni agregar una app de Chat a un espacio):

  • Especifica el alcance de autorización de chat.memberships.app.
  • Realiza una llamada al método CreateMembership().
  • Pasa parent como el nombre del recurso del espacio en el que se creará la membresía.
  • Pasa membership como una instancia de Membership con su campo member configurado con lo siguiente:
    • El campo type configurado como BOT.
    • El campo name establecido en users/app, un alias que representa a la app que llama a la API de Chat

En el siguiente ejemplo, se agrega una app de Chat a un espacio:

Node.js

chat/client-libraries/cloud/create-membership-user-cred-for-app.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.memberships.app'];

// This sample shows how to create membership with app credential for an app
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here.
    parent: 'spaces/SPACE_NAME',
    membership: {
      member: {
        // Member name for app membership, do not change this
        name: 'users/app',
        // User type for the membership
        type: 'BOT'
      }
    }
  };

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

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

main().catch(console.error);

Python

chat/client-libraries/cloud/create_membership_user_cred_for_app.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.memberships.app"]

# This sample shows how to create membership with app credential for an app
def create_membership_with_user_cred_for_app():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.CreateMembershipRequest(
        # Replace SPACE_NAME here
        parent = "spaces/SPACE_NAME",
        membership = {
            "member": {
                # member name for app membership, do not change this.
                "name": "users/app",
                # user type for the membership
                "type_": "BOT"
            }
        }
    )

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

    # Handle the response
    print(response)

create_membership_with_user_cred_for_app()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/CreateMembershipUserCredForApp.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CreateMembershipRequest;
import com.google.chat.v1.Membership;
import com.google.chat.v1.SpaceName;
import com.google.chat.v1.User;

// This sample shows how to create membership with user credential for the
// calling app.
public class CreateMembershipUserCredForApp {

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

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      CreateMembershipRequest.Builder request = CreateMembershipRequest.newBuilder()
        // replace SPACE_NAME here
        .setParent("spaces/SPACE_NAME")
        .setMembership(Membership.newBuilder()
          .setMember(User.newBuilder()
            // member name for app membership, do not change this.
            .setName("users/app")
            // user type for the membership
            .setType(User.Type.BOT)));
      Membership response = chatServiceClient.createMembership(request.build());

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

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to create membership with app credential for an app
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.memberships.app'
 * referenced in the manifest file (appsscript.json).
 */
function createMembershipUserCredForApp() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME here.
  const parent = 'spaces/SPACE_NAME';
  const membership = {
    member: {
      // Member name for app membership, do not change this
      name: 'users/app',
      // User type for the membership
      type: 'BOT'
    }
  };

  // Make the request
  const response = Chat.Spaces.Members.create(membership, parent);

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

Para ejecutar la muestra, reemplaza SPACE_NAME por el ID de name del espacio. Para obtener el ID, llama al método ListSpaces() o desde la URL del espacio.

La API de Chat muestra una instancia de Membership que detalla la membresía del usuario que se creó.

Invita o agrega un usuario a un espacio como una app de Chat

La autenticación de apps requiere una aprobación del administrador única.

Para invitar o agregar un usuario a un espacio con autenticación de apps, pasa lo siguiente en tu solicitud:

  • Especifica el alcance de autorización de chat.app.memberships.
  • Llama al método create en el recurso membership.
  • Establece parent en el nombre del recurso del espacio en el que se creará la membresía.
  • Establece member en users/{user}, donde {user} es la persona para la que quieres crear la membresía y es una de las siguientes opciones:
    • Es el ID de la persona en la API de People. Por ejemplo, si el elemento person de la API de People es people/123456789, establece membership.member.name como users/123456789.resourceName
    • Es el ID del usuario en la API de Directory.
    • La dirección de correo electrónico del usuario. Por ejemplo, users/222larabrown@gmail.com o users/larabrown@cymbalgroup.com. Si el usuario usa una Cuenta de Google o pertenece a una organización de Google Workspace diferente, debes usar su dirección de correo electrónico.

Crea una clave de API

Para llamar a un método de la API de la Versión preliminar para desarrolladores, debes usar una versión no pública de la versión preliminar para desarrolladores del documento de descubrimiento de la API. Para autenticar la solicitud, debes pasar una clave de API.

Para crear la clave de API, abre el proyecto de Google Cloud de tu app y haz lo siguiente:

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > Clave de API.
  3. Se mostrará tu nueva clave de API.
    • Haz clic en Copiar para copiar la clave de API y usarla en el código de tu app. La clave de API también se puede encontrar en la sección "Claves de API" de las credenciales de tu proyecto.
    • Haz clic en Restringir clave para actualizar la configuración avanzada y limitar el uso de tu clave de API. Para obtener más detalles, consulta Aplica restricciones de claves de API.

Escribe una secuencia de comandos que llame a la API de Chat

En el siguiente ejemplo, se agrega un usuario a un espacio con autenticación de apps:

Python

  1. En tu directorio de trabajo, crea un archivo llamado chat_membership_app_create.py.
  2. Incluye el siguiente código en chat_membership_app_create.py:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then adds a user to a Chat space by creating a membership.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds, discoveryServiceUrl='https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW&key=API_KEY')
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().members().create(
    
            # The space in which to create a membership.
            parent = 'spaces/SPACE',
    
            # Specify which user the membership is for.
            body = {
              'member': {
                'name':'users/USER',
                'type': 'HUMAN'
              }
            }
    
        ).execute()
    
        # Prints details about the created membership.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el código, reemplaza lo siguiente:

    • API_KEY: Es la clave de API que creaste para compilar el extremo de servicio de la API de Chat.

    • SPACE: Es un nombre de espacio que puedes obtener del método spaces.list en la API de Chat o de la URL de un espacio.

    • USER: Un ID de usuario.

  4. En tu directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_membership_app_create.py

Agrega usuarios o Grupos de Google a un espacio como administrador de Google Workspace

Si eres administrador de Google Workspace, puedes llamar al método create() para agregar usuarios, apps de Grupos de Google o Chat a cualquier espacio de tu organización de Google Workspace.

Para llamar a este método como administrador de Google Workspace, haz lo siguiente:

Para obtener más información y ejemplos, consulta Cómo administrar espacios de Google Chat como administrador de Google Workspace.

Limitaciones y consideraciones

  • Con la autenticación de apps, una app de Chat puede invitar o agregar usuarios, pero no a Google Groups ni a otras apps de Chat. Para agregarse, una app de Chat debe usar autenticación de usuarios con el permiso de autorización chat.memberships.