Zaawansowana usługa czatu

Zaawansowany czat pozwala korzystać z interfejsu Google Chat API w Apps Script. Ten interfejs API umożliwia skryptom znajdowanie, tworzenie i modyfikowanie pokoi czatu, dodawanie i usuwanie użytkowników pokoi oraz odczytywanie lub publikowanie wiadomości z tekstem, kartami, załącznikami i reakcjami.

Wymagania wstępne

Dokumentacja

Więcej informacji o tej usłudze znajdziesz w dokumentacji interfejsu Chat API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa Google Chat używa tych samych obiektów, metod i parametrów co publiczny interfejs API.

Przykładowy kod

Te przykłady pokazują, jak wykonywać typowe działania w interfejsie Google Chat API za pomocą usługi zaawansowanej.

Opublikuj wiadomość z danymi logowania użytkownika

Przykład poniżej pokazuje, jak opublikować wiadomość w pokoju czatu w imieniu użytkownika.

  1. Dodaj zakres autoryzacji chat.messages.create do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Dodaj funkcję podobną do tej do kodu projektu 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);
      }
    }

Opublikuj wiadomość z danymi logowania do aplikacji

Przykład poniżej pokazuje, jak opublikować wiadomość w pokoju czatu w imieniu aplikacji. Używanie zaawansowanej usługi Google Chat z kontem usługi nie wymaga określania zakresów autoryzacji w appsscript.json. Więcej informacji o uwierzytelnianiu za pomocą kont usługi znajdziesz w artykule Uwierzytelnianie jako aplikacji 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);
  }
}

Znajdź pokój

Z przykładu poniżej dowiesz się, jak uzyskać informacje o pokoju czatu.

  1. Dodaj zakres autoryzacji chat.spaces.readonly do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Dodaj funkcję podobną do tej do kodu projektu 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);
      }
    }

Utwórz pokój

Przykład poniżej pokazuje, jak utworzyć pokój czatu.

  1. Dodaj zakres autoryzacji chat.spaces.create do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Dodaj funkcję podobną do tej do kodu projektu 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);
      }
    }

Wyświetlanie listy członków

Poniższy przykład pokazuje, jak wyświetlić listę wszystkich użytkowników pokoju czatu.

  1. Dodaj zakres autoryzacji chat.memberships.readonly do pliku appsscript.json projektu Apps Script:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Dodaj funkcję podobną do tej do kodu projektu 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);
      }
    }

Rozwiązywanie problemów

Jeśli Error 400: invalid_scope z komunikatem o błędzie Some requested scopes cannot be shown wyświetla się, oznacza to, że w pliku appsscript.json projektu Apps Script nie zostały określone żadne zakresy autoryzacji. W większości przypadków Apps Script automatycznie określa zakresy, których potrzebuje skrypt. Jeśli jednak korzystasz z usługi zaawansowanej Google Chat, musisz ręcznie dodać zakresy autoryzacji używane przez skrypt do pliku manifestu projektu Apps Script. Zobacz Ustawianie zakresów jawnych.

Aby naprawić ten błąd, dodaj odpowiednie zakresy autoryzacji do pliku appsscript.json projektu Apps Script w tablicy oauthScopes. Aby np. wywołać metodę spaces.messages.create, dodaj ten kod:

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

Ograniczenia i uwagi

Usługa czatu zaawansowanego nie obsługuje:

Aby pobrać załącznik do wiadomości lub wywołać metodę podglądu dewelopera, użyj metody UrlFetchApp.