Расширенный чат

Служба Advanced Chat позволяет использовать API Google Chat в Apps Script. Этот API позволяет скриптам находить, создавать и изменять чат-группы, добавлять и удалять участников, а также читать и публиковать сообщения с текстом, карточками, вложениями и реакциями.

Предпосылки

Ссылка

Подробнее об этой службе см. в справочной документации по API чата . Как и все расширенные службы в Apps Script, служба чата использует те же объекты, методы и параметры, что и общедоступный API.

Пример кода

В этих примерах показано, как выполнять общие действия API Google Chat с использованием расширенного сервиса.

Опубликовать сообщение с учетными данными пользователя

В следующем примере показано, как опубликовать сообщение в чате от имени пользователя.

  1. Добавьте область авторизации chat.messages.create в файл appsscript.json проекта Apps Script:

    "oauthScopes": [   "https://www.googleapis.com/auth/chat.messages.create" ] 
  2. Добавьте в код проекта Apps Script такую функцию:

    расширенный/чат.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);   } }

Опубликовать сообщение с учетными данными приложения

В следующем примере показано, как отправить сообщение в чат-группу от имени приложения. Использование расширенного сервиса чата с учётной записью сервиса не требует указания областей авторизации в appsscript.json . Подробнее об аутентификации с использованием учётных записей сервисов см. в разделе «Аутентификация в качестве приложения Google 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);   } }

Получить место

В следующем примере показано, как получить информацию о чат-пространстве.

  1. Добавьте область авторизации chat.spaces.readonly в файл appsscript.json проекта Apps Script:

    "oauthScopes": [   "https://www.googleapis.com/auth/chat.spaces.readonly" ] 
  2. Добавьте в код проекта Apps Script такую функцию:

    расширенный/чат.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);   } }

Создать пространство

В следующем примере показано, как создать чат-пространство.

  1. Добавьте область авторизации chat.spaces.create в файл appsscript.json проекта Apps Script:

    "oauthScopes": [   "https://www.googleapis.com/auth/chat.spaces.create" ] 
  2. Добавьте в код проекта Apps Script такую функцию:

    расширенный/чат.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);   } }

Список членств

В следующем примере показано, как составить список всех участников чат-пространства.

  1. Добавьте область авторизации chat.memberships.readonly в файл appsscript.json проекта Apps Script:

    "oauthScopes": [   "https://www.googleapis.com/auth/chat.memberships.readonly" ] 
  2. Добавьте в код проекта Apps Script такую функцию:

    расширенный/чат.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);   } }

Устранение неполадок

Если вы столкнулись Error 400: invalid_scope и сообщением « Some requested scopes cannot be shown , это означает, что вы не указали области авторизации в файле appsscript.json проекта Apps Script. В большинстве случаев Apps Script автоматически определяет необходимые скрипту области, но при использовании расширенного сервиса Chat необходимо вручную добавить области авторизации, используемые вашим скриптом, в файл манифеста проекта Apps Script. См. раздел Настройка явных областей .

Чтобы устранить ошибку, добавьте соответствующие области авторизации в файл appsscript.json проекта Apps Script в массив oauthScopes . Например, для вызова метода spaces.messages.create добавьте следующее:

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

Ограничения и соображения

Служба расширенного чата не поддерживает:

Чтобы загрузить вложение к сообщению или вызвать метод предварительного просмотра для разработчиков, используйте вместо этого UrlFetchApp .