Uwierzytelnianie jako aplikacja do obsługi czatu

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Z tego przewodnika dowiesz się, jak skonfigurować konto usługi i używać go w celu korzystania z interfejsu Google Chat REST API w imieniu aplikacji Google Chat. Najpierw dowiesz się, jak utworzyć konto usługi. Następnie pokazuje, jak napisać skrypt korzystający z konta usługi do uwierzytelniania za pomocą interfejsu Chat API i publikować wiadomość w pokoju czatu.

Aplikacje do obsługi czatu mogą używać kont usługi do uwierzytelniania podczas asynchronicznego wywoływania interfejsu Google Chat REST API w celu:

  • Wysyłaj wiadomości do Google Chat z użyciem spaces.messages.create do:
    • Powiadom użytkowników o zakończeniu uruchomionego długotrwałego zadania w tle.
    • Powiadamiaj użytkowników o tym, że serwer jest offline.
    • Poproś osobę odpowiedzialną za obsługę klienta, aby radził sobie w nowo otwartym zgłoszeniu.
  • Zaktualizuj wysłane wcześniej wiadomości za pomocą spaces.messages.update na:
    • Zmień stan operacji w toku.
    • Zaktualizuj osobę przypisaną do zadania lub termin oddania zadania.
  • Wyświetl użytkowników w pokoju z spaces.members.list, aby:
    • Zobacz, kto jest w pokoju.
    • Sprawdź, czy w pokoju są wszyscy członkowie zespołu.

Aby uwierzytelnić się przy użyciu konta usługi i uzyskać dostęp do danych w pokoju czatu lub wykonywać w nich określone czynności, aplikacje do obsługi czatu muszą należeć do tego pokoju. Aby na przykład utworzyć listę osób w pokoju lub utworzyć wiadomość w pokoju, aplikacja Google Chat musi być również członkiem tego pokoju.

Jeśli Twoja aplikacja do obsługi czatu potrzebuje dostępu do danych użytkownika lub wykonywać działania w jego imieniu, zamiast tego uwierzytelnij się jako użytkownik.

Aby dowiedzieć się, kiedy aplikacje do obsługi czatu wymagają uwierzytelniania i jakiego rodzaju uwierzytelniania należy użyć, przeczytaj artykuł Typy wymaganych uwierzytelniania w omówieniu uwierzytelniania i autoryzacji interfejsu Chat API.

Wymagania wstępne

Aby uruchomić przykład z tego przewodnika, musisz spełnić te warunki wstępne:

Python

Krok 1. Utwórz konto usługi w Google Cloud Console

Utwórz konto usługi, które będzie używane przez aplikację do obsługi dostępu do interfejsów API Google.

Utwórz konto usługi:

Aby utworzyć konto usługi, wykonaj te czynności:

  1. W konsoli Google Cloud kliknij Menu > Administracja > Konta usługi.

    Otwórz konta usługi

  2. Kliknij Utwórz konto usługi.
  3. Podaj szczegóły konta usługi, a następnie kliknij Utwórz i kontynuuj.
  4. Opcjonalnie: przypisz role do konta usługi, aby przyznać dostęp do zasobów projektu Google Cloud. Więcej informacji znajdziesz w artykule Przyznawanie, zmienianie i anulowanie dostępu do zasobów.
  5. Kliknij Dalej.
  6. Opcjonalnie: wpisz użytkowników lub grupy, którzy mogą zarządzać kontem i wykonywać na nim działania. Więcej informacji znajdziesz w artykule Zarządzanie personifikacją konta usługi.
  7. Kliknij Gotowe.

Konto usługi pojawi się na stronie konta usługi. Następnie utwórz klucz prywatny dla konta usługi.

Tworzenie klucza prywatnego

Aby utworzyć klucz prywatny dla konta usługi, wykonaj te czynności:

  1. W konsoli Google Cloud kliknij Menu > Administracja > Konta usługi.

    Otwórz konta usługi

  2. Wybierz konto usługi.
  3. Kliknij Klucze > Dodaj klucz > Utwórz nowy klucz.
  4. Wybierz JSON, a następnie kliknij Utwórz.

    Nowa para kluczy publicznych/prywatnych zostanie wygenerowana i pobrana na komputer jako nowy plik. Ten plik to jedyna kopia tego klucza. Informacje o tym, jak bezpiecznie przechowywać klucz, znajdziesz w artykule Zarządzanie kluczami konta usługi.

  5. Kliknij Zamknij.

Więcej informacji o kontach usługi znajdziesz w artykule Konta usługi w dokumentacji Google Cloud IAM.

Krok 2. Napisz skrypt, który korzysta z konta usługi do uwierzytelniania w interfejsie Chat REST API

Ten kod uwierzytelnia się za pomocą interfejsu API REST Chat przy użyciu konta usługi, a następnie publikuje wiadomość w pokoju czatu:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_app_auth.py.
  2. Umieść w kodzie chat_app_auth.py ten kod:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message.
    result = chat.spaces().messages().create(
    
        # The space to create the message in.
        #
        # Replace SPACE_NAME with a space name.
        # Obtain the space name from the spaces resource of Chat API,
        # or from a space's URL.
        parent='spaces/SPACE_NAME',
    
        # The message to create.
        body={'text': 'Hello, world!'}
    
    ).execute()
    
    print(result)
    
  3. W kodzie zastąp SPACE_NAME nazwą pokoju, który możesz uzyskać za pomocą metody spaces.list w interfejsie Chat API lub z adresu URL pokoju.

Krok 3. Uruchom cały przykład

W katalogu roboczym utwórz i uruchom przykład:

Python

python3 chat_create_card_message.py

Skrypt wysyła uwierzytelnione żądanie do interfejsu API REST Chat, który odpowiada przez opublikowanie wiadomości w pokoju czatu jako aplikacji do obsługi czatu.

Rozwiązywanie problemu z przykładem

Ta sekcja zawiera opis typowych problemów, które mogą wystąpić podczas próby uruchomienia przykładowej aplikacji.

Nie masz uprawnień do korzystania z tej aplikacji

Po uruchomieniu chat_app_auth.py może pojawić się błąd:

<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">

Ten komunikat o błędzie oznacza, że aplikacja Google Chat nie ma uprawnień do publikowania wiadomości w pokoju czatu, w którym próbuje opublikować wiadomości.

Aby naprawić błąd, dodaj aplikację do obsługi czatu do pokoju czatu wskazanego w polu chat_app_auth.py.

Następny krok

Funkcje interfejsu Chat API znajdziesz w dokumentacji referencyjnej