Servicio de chat avanzado

El servicio de Chat avanzado te permite usar la API de Google Chat en Apps Script. Esta API permite que las secuencias de comandos busquen, creen y modifiquen espacios de Chat, agreguen o quiten miembros en espacios, y lean o publiquen mensajes con texto, tarjetas, archivos adjuntos y reacciones.

Requisitos previos

Reference

Para obtener más información sobre este servicio, consulta la documentación de referencia de la API de Chat. Al igual que todos los servicios avanzados de Apps Script, el servicio de Chat usa los mismos objetos, métodos y parámetros que la API pública.

Código de muestra

En estos ejemplos, se muestra cómo realizar acciones comunes de la API de Google Chat con el servicio avanzado.

Publica un mensaje con las credenciales del usuario

En el siguiente ejemplo, se muestra cómo publicar un mensaje en un espacio de Chat en nombre del usuario.

  1. Agrega el alcance de autorización chat.messages.create al archivo appsscript.json del proyecto de Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Agrega una función como esta al código del proyecto de Apps Script:

    advanced/chat.gs
    /**
     * Posts a new message to the specified space on behalf of the user.
     * @param {string} spaceName The resource name of the space.
     */
    function postMessageWithUserCredentials(spaceName) {
      try {
        const message = {'text': 'Hello world!'};
        Chat.Spaces.Messages.create(message, spaceName);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create message with error %s', err.message);
      }
    }

Publica un mensaje con las credenciales de la app

En el siguiente ejemplo, se muestra cómo publicar un mensaje en un espacio de Chat en nombre de la app. El uso del servicio avanzado de Chat con una cuenta de servicio no requiere que especifiques los permisos de autorización en appsscript.json. Para obtener detalles sobre la autenticación con cuentas de servicio, consulta Autentícate como una app de Google Chat.

advanced/chat.gs
/**
 * Posts a new message to the specified space on behalf of the app.
 * @param {string} spaceName The resource name of the space.
 */
function postMessageWithAppCredentials(spaceName) {
  try {
    // See https://developers.google.com/chat/api/guides/auth/service-accounts
    // for details on how to obtain a service account OAuth token.
    const appToken = getToken_();
    const message = {'text': 'Hello world!'};
    Chat.Spaces.Messages.create(
        message,
        spaceName,
        {},
        // Authenticate with the service account token.
        {'Authorization': 'Bearer ' + appToken});
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to create message with error %s', err.message);
  }
}

Obtener un espacio

En el siguiente ejemplo, se muestra cómo obtener información sobre un espacio de Chat.

  1. Agrega el alcance de autorización chat.spaces.readonly al archivo appsscript.json del proyecto de Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Agrega una función como esta al código del proyecto de Apps Script:

    advanced/chat.gs
    /**
     * Gets information about a Chat space.
     * @param {string} spaceName The resource name of the space.
     */
    function getSpace(spaceName) {
      try {
        const space = Chat.Spaces.get(spaceName);
        console.log('Space display name: %s', space.displayName);
        console.log('Space type: %s', space.spaceType);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to get space with error %s', err.message);
      }
    }

Crea un espacio

En el siguiente ejemplo, se muestra cómo crear un espacio de Chat.

  1. Agrega el alcance de autorización chat.spaces.create al archivo appsscript.json del proyecto de Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Agrega una función como esta al código del proyecto de Apps Script:

    advanced/chat.gs
    /**
     * Creates a new Chat space.
     */
    function createSpace() {
      try {
        const space = {'displayName': 'New Space', 'spaceType': 'SPACE'};
        Chat.Spaces.create(space);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }

Enumerar membresías

En el siguiente ejemplo, se muestra cómo enumerar todos los miembros de un espacio de Chat.

  1. Agrega el alcance de autorización chat.memberships.readonly al archivo appsscript.json del proyecto de Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Agrega una función como esta al código del proyecto de Apps Script:

    advanced/chat.gs
    /**
     * Lists all the members of a Chat space.
     * @param {string} spaceName The resource name of the space.
     */
    function listMemberships(spaceName) {
      let response;
      let pageToken = null;
      try {
        do {
          response = Chat.Spaces.Members.list(spaceName, {
            pageSize: 10,
            pageToken: pageToken
          });
          if (!response.memberships || response.memberships.length === 0) {
            pageToken = response.nextPageToken;
            continue;
          }
          response.memberships.forEach((membership) => console.log(
              'Member resource name: %s (type: %s)',
              membership.name,
              membership.member.type));
          pageToken = response.nextPageToken;
        } while (pageToken);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed with error %s', err.message);
      }
    }

Solución de problemas

Si encuentras Error 400: invalid_scope con el mensaje de error Some requested scopes cannot be shown, significa que no especificaste ningún alcance de autorización en el archivo appsscript.json del proyecto de Apps Script. En la mayoría de los casos, Apps Script determina automáticamente qué alcances necesita una secuencia de comandos, pero cuando usas el servicio avanzado de Chat, debes agregar de forma manual los permisos de autorización que usa tu secuencia de comandos al archivo de manifiesto del proyecto de Apps Script. Consulta Cómo configurar permisos explícitos.

Para resolver el error, agrega los permisos de autorización adecuados al archivo appsscript.json del proyecto de Apps Script como parte del array oauthScopes. Por ejemplo, para llamar al método spaces.messages.create, agrega lo siguiente:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Límites y consideraciones

El servicio de Chat avanzado no es compatible con los siguientes elementos:

Si deseas descargar el archivo adjunto de un mensaje o llamar a un método de vista previa para desarrolladores, usa UrlFetchApp en su lugar.