Zapraszanie i dodawanie użytkownika, grupy dyskusyjnej Google lub aplikacji Google Chat do pokoju

Z tego przewodnika dowiesz się, jak używać metody create() w zasobach Membership interfejsu Google Chat API, aby zaprosić lub dodać użytkownika, grupę dyskusyjną Google lub aplikację Google Chat do pokoju (czyli stworzyć członkostwo). Jeśli podczas tworzenia subskrypcji określonego użytkownika nie jest włączona zasada automatycznego akceptowania, to po otrzymaniu zaproszenia musi on zaakceptować zaproszenie do pokoju, zanim dołączy do pokoju. W przeciwnym razie utworzenie członkostwa spowoduje dodanie użytkownika bezpośrednio do wybranego pokoju.

Jeśli jesteś administratorem Google Workspace, możesz dodawać użytkowników, Grupy dyskusyjne i aplikacje Google Chat do dowolnego pokoju w organizacji Google Workspace.

MembershipZasób wskazuje, czy użytkownik lub aplikacja Google Chat zostali zaproszeni do pokoju, czy są w nim obecni, czy też są z niego wykluczeni.

Wymagania wstępne

Node.js

Python

Java

Google Apps Script

Zapraszanie użytkownika do pokoju jako użytkownika lub dodawanie go do pokoju

Aby zaprosić użytkownika do pokoju lub dodać go do pokoju z uwierzytelnianiem użytkownika, prześlij w żądaniu:

  • Określ zakres upoważnienia chat.memberships.
  • Wywołaj metodę CreateMembership().
  • Jako nazwę zasobu podaj parent, czyli nazwę pokoju, w którym chcesz utworzyć członkostwo.
  • Przekaż wartość membership jako instancja typu Membership, w której pole member ma te ustawienia:
    • W polu type ustaw wartość HUMAN.
    • Pole name ma wartość users/{user}, gdzie {user} to osoba, którą chcesz dodać do pokoju. Aby określić użytkownika Google Chat, zastąp {user} dowolnym z tych elementów:
      • Identyfikator osoby w People API. Jeśli na przykład w usłudze People API parametr person resourceName ma wartość people/123456789, użyj wartości users/123456789.
      • Identyfikator użytkownika w interfejsie Directory API.
      • Adres e-mail użytkownika. Na przykład users/222larabrown@gmail.com lub users/larabrown@cymbalgroup.com. Jeśli użytkownik korzysta z konta Google lub należy do innej organizacji Google Workspace, musisz użyć jego adresu e-mail.

W tym przykładzie użytkownik jest dodawany do pokoju z uwierzytelnianiem użytkownika:

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));
    }
  }
}

Google 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);
}

Aby uruchomić przykład, zastąp te wartości:

  • SPACE_NAME: identyfikator pokojuname. Identyfikator możesz uzyskać, wywołując metodę ListSpaces() lub korzystając z adresu URL pokoju.
  • USER_NAME: identyfikator użytkownika.

Interfejs Chat API zwraca instancję Membership z informacjami o utworzonym członkostwie użytkownika.

Zapraszanie grupy dyskusyjnej Google do pokoju lub dodawanie jej

Aby zaprosić lub dodać grupę Google do pokoju przy użyciu uwierzytelniania użytkownika (uwierzytelnianie aplikacji nie obsługuje zapraszania ani dodawania grupy Google do pokoju), prześlij w żądaniu te informacje:

  • Określ zakres upoważnienia chat.memberships.
  • Wywołaj metodę CreateMembership().
  • Jako nazwę zasobu podaj parent, czyli nazwę pokoju, w którym chcesz utworzyć członkostwo.
  • Przekaż membership jako instancję Membership, w której polu name obiektu groupMember ma wartość groups/{group}, gdzie {group} to identyfikator grupy, dla której chcesz utworzyć członkostwo. Identyfikator grupy można pobrać za pomocą interfejsu Cloud Identity API.

Grup dyskusyjnych Google nie można dodawać do czatu grupowego ani czatu bezpośredniego, a tylko do pokoju o nazwie.

W tym przykładzie grupa jest dodawana do pokoju o nazwie za pomocą uwierzytelniania użytkownika:

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));
    }
  }
}

Google 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);
}

Aby uruchomić przykład, zastąp te wartości:

  • SPACE_NAME: identyfikator pokojuname. Identyfikator możesz uzyskać, wywołując metodę ListSpaces() lub z adresu URL pokoju.
  • GROUP_NAME: identyfikator grupy.

Interfejs Chat API zwraca wystąpienie Membership z informacjami o utworzonym członkostwie użytkownika.

Dodawanie aplikacji Google Chat do pokoju

Aplikacja Google Chat nie może dodać innej aplikacji jako użytkownika pokoju. Aby dodać aplikację Google Chat do pokoju lub wiadomości bezpośredniej między dwoma użytkownikami, prześlij te informacje w żądaniu z uwierzytelnianiem użytkownika (uwierzytelnianie aplikacji nie obsługuje zapraszania ani dodawania aplikacji Google Chat do pokoju):

  • Określ zakres upoważnienia chat.memberships.app.
  • Wywołaj metodę CreateMembership().
  • Jako nazwę zasobu podaj parent, czyli nazwę pokoju, w którym chcesz utworzyć członkostwo.
  • Przekaż wartość membership jako instancja typu Membership, w której pole member ma te ustawienia:
    • W polu type ustaw wartość BOT.
    • Pole name ustawione na users/app; alias reprezentujący aplikację wywołującą interfejs Chat API.

W tym przykładzie dodaję do pokoju aplikację Google Chat:

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));
    }
  }
}

Google 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);
}

Aby uruchomić próbkę, zastąp SPACE_NAME identyfikatorem z name. Identyfikator możesz uzyskać, wywołując metodę ListSpaces() lub korzystając z adresu URL pokoju.

Interfejs Chat API zwraca wystąpienie Membership z informacjami o utworzonym członkostwie użytkownika.

Zapraszanie lub dodawanie użytkownika do pokoju jako aplikacji Google Chat

Uwierzytelnianie aplikacji wymaga jednorazowego zatwierdzenia przez administratora.

Aby zaprosić użytkownika do pokoju lub dodać go do pokoju przy użyciu uwierzytelniania aplikacji, prześlij w żądaniu te informacje:

  • Określ zakres upoważnienia chat.app.memberships.
  • Wywołaj metodę create zasobu membership.
  • Ustaw wartość parent na nazwę zasobu pokoju, w którym chcesz utworzyć członkostwo.
  • Ustaw wartość member na users/{user}, gdzie {user} to osoba, dla której chcesz utworzyć opcję wspierania. Może to być:
    • Identyfikator osoby w People API. Jeśli na przykład wartość atrybutu person w interfejsie People API jest people/123456789, ustaw wartość atrybutu membership.member.name na users/123456789.resourceName
    • Identyfikator użytkownika w interfejsie Directory API.
    • Adres e-mail użytkownika. Na przykład users/222larabrown@gmail.com lub users/larabrown@cymbalgroup.com. Jeśli użytkownik korzysta z konta Google lub należy do innej organizacji Google Workspace, musisz użyć jego adresu e-mail.

Tworzenie klucza interfejsu API

Aby wywołać metodę interfejsu API w wersji przedpremierowej dla programistów, musisz użyć niepublicznej wersji dokumentu dotyczącego wykrywania interfejsu API w wersji przedpremierowej dla programistów. Aby uwierzytelnić żądanie, musisz podać klucz interfejsu API.

Aby utworzyć klucz interfejsu API, otwórz projekt Google Cloud aplikacji i wykonaj te czynności:

  1. W konsoli Google Cloud kliknij Menu  > Interfejsy API i usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Klucz interfejsu API.
  3. Wyświetli się nowy klucz API.
    • Kliknij Kopiuj , aby skopiować klucz interfejsu API i użyć go w kodzie aplikacji. Klucz interfejsu API znajdziesz też w sekcji „Klucze interfejsu API” w danych logowania projektu.
    • Aby zaktualizować ustawienia zaawansowane i ograniczyć użycie klucza API, kliknij Ogranicz klucz. Więcej informacji znajdziesz w artykule Stosowanie ograniczeń kluczy interfejsu API.

Napisać skrypt, który wywołuje interfejs Chat API

W tym przykładzie użytkownik jest dodawany do pokoju za pomocą uwierzytelniania aplikacji:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_membership_app_create.py.
  2. Dodaj do pliku chat_membership_app_create.py ten kod:

    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. W kodzie zamień:

    • API_KEY: klucz interfejsu API utworzony do tworzenia punktu końcowego usługi Chat API.

    • SPACE: nazwa pokoju, którą możesz uzyskać za pomocą metody spaces.list w interfejsie API Google Chat lub z adresu URL pokoju.

    • USER: identyfikator użytkownika.

  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_membership_app_create.py

Dodawanie użytkowników lub grup dyskusyjnych Google do pokoju jako administrator Google Workspace

Jeśli jesteś administratorem Google Workspace, możesz użyć metody create(), aby dodać użytkowników, Google Groups lub aplikacje Google Chat do dowolnego pokoju w organizacji Google Workspace.

Aby wywołać tę metodę jako administrator Google Workspace:

  • Wywołaj metodę, używając uwierzytelniania użytkownika, i określ zakres autoryzacji, który obsługuje wywoływanie metody przy użyciu uprawnień administratora.
  • W żądaniu ustaw parametr zapytania useAdminAccess na true.

Więcej informacji i przykłady znajdziesz w artykule Zarządzanie pokojami Google Chat przez administratora Google Workspace.

Ograniczenia i uwagi

  • Dzięki uwierzytelnianiu aplikacji aplikacja Google Chat może zapraszać użytkowników lub dodawać ich do czatu, ale nie może tego robić aplikacja Grupy Google ani aplikacja Google Chat. Aby dodać się do listy, aplikacja do czatu musi używać uwierzytelniania użytkownika w zakresie autoryzacji chat.memberships.