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

Ten przewodnik wyjaśnia, jak używać metody create() w zasobie Membership interfejsu Google Chat API, aby zaprosić lub dodać użytkownika, grupę dyskusyjną Google lub aplikację do obsługi czatu do pokoju, czyli utworzyć członkostwo. Jeśli podczas tworzenia członkostwa określony członek ma wyłączone automatyczne akceptowanie, zostanie zaproszony i musi zaakceptować zaproszenie do pokoju, zanim do niego dołączy. W przeciwnym razie utworzenie członkostwa spowoduje dodanie użytkownika bezpośrednio do określonego pokoju.

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

MembershipZasób określa, czy użytkownik lub aplikacja Google Chat jest zaproszony do pokoju, należy do niego czy nie.

Wymagania wstępne

Node.js

Python

Java

Google Apps Script

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

Aby zaprosić lub dodać użytkownika do pokoju z uwierzytelnianiem użytkownika, w żądaniu przekaż następujące informacje:

  • Określ zakres autoryzacji chat.memberships.
  • Wywołaj metodę CreateMembership().
  • Przekaż parent jako nazwę zasobu pokoju, w którym chcesz utworzyć członkostwo.
  • Przekaż membership jako instancję Membership z polem member ustawionym w ten sposób:
    • Pole type ma wartość HUMAN.
    • Pole name ustawione na users/{user}, gdzie {user} to osoba, którą chcesz dodać do pokoju. Aby określić użytkownika Google Chat, zastąp {user} jednym z tych elementów:
      • Identyfikator osoby w interfejsie People API. Jeśli na przykład interfejs People API 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 dodajemy użytkownika 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 elementy:

  • SPACE_NAME: identyfikator z przestrzeni name. Możesz go uzyskać, wywołując metodę ListSpaces() lub z adresu URL pokoju.
  • USER_NAME: identyfikator użytkownika.

Interfejs Chat API zwraca instancję Membership, która zawiera szczegóły utworzonego członkostwa użytkownika.

Zapraszanie lub dodawanie grupy dyskusyjnej Google do pokoju

Aby zaprosić lub dodać grupę dyskusyjną Google do pokoju z uwierzytelnianiem użytkownika (uwierzytelnianie aplikacji nie obsługuje zapraszania ani dodawania grupy dyskusyjnej Google do pokoju), w żądaniu przekaż następujące informacje:

  • Określ zakres autoryzacji chat.memberships.
  • Wywołaj metodę CreateMembership().
  • Przekaż parent jako nazwę zasobu pokoju, w którym chcesz utworzyć członkostwo.
  • Przekaż membership jako instancję Membership z polem namegroupMember ustawionym na groups/{group}, gdzie {group} to identyfikator grupy, w 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 indywidualnego, a tylko do pokoju z nazwą.

W tym przykładzie dodajemy grupę do pokoju o nazwie z uwierzytelnianiem 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 elementy:

  • SPACE_NAME: identyfikator z przestrzeni name. Możesz go uzyskać, wywołując metodę ListSpaces() lub z adresu URL pokoju.
  • GROUP_NAME: identyfikator grupy.

Interfejs Chat API zwraca instancję Membership, która zawiera szczegóły utworzonego członkostwa użytkownika.

Dodawanie aplikacji Google Chat do pokoju

Aplikacja do obsługi czatu nie może dodać innej aplikacji jako użytkownika pokoju. Aby dodać aplikację do pokoju lub wiadomości na czacie między 2 użytkownikami, w żądaniu przekaż te informacje, korzystając z uwierzytelniania użytkownika (uwierzytelnianie aplikacji nie obsługuje zapraszania ani dodawania aplikacji do pokoju):

  • Określ zakres autoryzacji chat.memberships.app.
  • Wywołaj metodę CreateMembership().
  • Przekaż parent jako nazwę zasobu pokoju, w którym chcesz utworzyć członkostwo.
  • Przekaż membership jako instancję Membership z polem member ustawionym w ten sposób:
    • Pole type ma wartość BOT.
    • Pole name ustawione na users/app, czyli alias reprezentujący aplikację wywołującą interfejs Chat API.

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

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ć przykład, zastąp SPACE_NAME identyfikatorem z przestrzeni name. Możesz go uzyskać, wywołując metodę ListSpaces() lub z adresu URL pokoju.

Interfejs Chat API zwraca instancję Membership, która zawiera szczegóły utworzonego członkostwa użytkownika.

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

Uwierzytelnianie aplikacji wymaga jednorazowego zatwierdzenia przez administratora.

Aby zaprosić lub dodać użytkownika do pokoju z uwierzytelnianiem aplikacji, w żądaniu przekaż następujące informacje:

  • Określ zakres autoryzacji chat.app.memberships.
  • Wywołaj metodę createmembershipzasobie.
  • Ustaw parent na nazwę zasobu pokoju, w którym chcesz utworzyć członkostwo.
  • Ustaw member na users/{user}, gdzie {user} to osoba, dla której chcesz utworzyć subskrypcję, i może to być:
    • Identyfikator osoby w interfejsie People API. Jeśli np. w interfejsie People API wartość person resourceName to people/123456789, ustaw membership.member.name na 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.

Napisz skrypt, który wywołuje Chat API

W tym przykładzie dodajemy użytkownika do pokoju z uwierzytelnianiem 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)
    
        # 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 zastąp te elementy:

    • SPACE: nazwa pokoju, którą możesz uzyskać za pomocą spaces.listmetody w interfejsie Chat API 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 wywołać metodę create(), aby dodać użytkowników, grupy Google lub aplikacje do Google Chat do dowolnego pokoju w organizacji Google Workspace.

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

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

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

Ograniczenia i kwestie do rozważenia

  • W przypadku uwierzytelniania aplikacji aplikacja do obsługi czatu może zapraszać lub dodawać użytkowników, ale nie grupy Google ani aplikacje do obsługi czatu. Aby dodać siebie, aplikacja do obsługi czatu musi używać uwierzytelniania użytkownika z zakresem autoryzacji chat.memberships.