Criar um espaço do Google Chat e adicionar participantes

Este guia explica como usar o método setUp() no recurso Space da API Google Chat para criar um espaço do Chat e adicionar participantes a ele.

O recurso Space representa um lugar onde pessoas e apps do Chat podem enviar mensagens, compartilhar arquivos e colaborar. Há vários tipos de espaços:

  • As mensagens diretas (DMs) são conversas entre dois usuários ou entre um usuário e um app do Chat.
  • Os chats em grupo são conversas entre três ou mais usuários e apps de chat.
  • Os espaços nomeados são lugares permanentes onde as pessoas enviam mensagens, compartilham arquivos e colaboram.

Você pode usar o método setUp() para fazer o seguinte:

  • Crie um espaço nomeado com membros iniciais.
  • Crie uma mensagem direta (DM) entre duas pessoas.
  • Configure uma mensagem em grupo entre várias pessoas.

Ao configurar um espaço, considere o seguinte:

  • O usuário que faz a chamada (autenticado) é adicionado automaticamente ao espaço. Portanto, não é necessário especificar a associação do usuário na solicitação.
  • Ao criar uma mensagem direta (MD), se uma MD existir entre dois usuários, ela será retornada. Caso contrário, uma mensagem direta será criada.
  • Ao criar um chat em grupo, se nenhuma das associações fornecidas na solicitação for adicionada ao chat em grupo (por exemplo, problema de permissão), um chat em grupo vazio (incluindo apenas o usuário que fez a chamada) poderá ser criado.
  • Não é possível configurar espaços com respostas encadeadas nem adicionar pessoas de fora da sua organização do Google Workspace.
  • Assinaturas duplicadas (incluindo o usuário que fez a chamada) fornecidas na solicitação são filtradas em vez de resultar em um erro de solicitação.
  • Quando um administrador do Google Workspace instala um app do Chat para toda a organização do Google Workspace, o Google Chat cria uma mensagem direta entre o app instalado e cada usuário da organização, então não é necessário configurar mensagens diretas por programação. Em vez disso, liste os espaços para retornar todas as mensagens diretas ou encontre uma mensagem direta para ver detalhes sobre uma mensagem específica.

Pré-requisitos

Node.js

Python

Java

Apps Script

Configurar um espaço

Para configurar um espaço, transmita o seguinte na sua solicitação:

  • Especifique o escopo de autorização chat.spaces.create ou chat.spaces.
  • Chame o método SetUpSpace().
  • Transmita space como uma instância de Space com todos os campos necessários, como displayName ou spaceType.
  • Transmita memberships como uma matriz de instâncias Membership. Para cada instância:
    • Especifique users/{user} para adicionar um usuário humano como membro de um espaço. {user} é o {person_id} do person da API People ou o ID de um user na API Directory. Por exemplo, se a pessoa resourceName da API People for people/123456789, você poderá adicionar o usuário ao espaço incluindo uma associação com users/123456789 como member.name.
    • Especifique groups/{group} para adicionar um grupo como membro de um espaço, em que {group} é o ID do grupo que você quer criar como membro. O ID do grupo pode ser recuperado usando a API Cloud Identity. Por exemplo, se a API Cloud Identity retornar um grupo com o nome groups/123456789, defina membership.groupMember.name como groups/123456789. Os Grupos do Google não podem ser adicionados a um chat em grupo ou mensagem direta, apenas a um espaço nomeado.

Para criar uma mensagem direta entre o usuário que faz a chamada e outro usuário humano, especifique uma associação do usuário humano na sua solicitação.

Para criar uma mensagem direta entre o usuário e o app que fez a chamada, defina space.singleUserBotDm como true e não especifique nenhuma associação. Você só pode usar esse método para configurar uma mensagem direta com o app de chamadas. Para adicionar o app de chamadas como membro de um espaço ou de uma mensagem direta entre dois usuários humanos, consulte criar uma associação.

O exemplo a seguir cria um espaço nomeado e uma associação ao espaço para dois usuários humanos (o usuário autenticado e outro usuário).

Node.js

chat/client-libraries/cloud/set-up-space-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';  const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.spaces.create'];  // This sample shows how to set up a named space with one initial member // with user credential async function main() {   // Create a client   const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);    // Initialize request argument(s)   const request = {     space: {       spaceType: 'SPACE',       // Replace DISPLAY_NAME here.       displayName: 'DISPLAY_NAME'     },     memberships: [{       member: {         // Replace USER_NAME here.         name: 'users/USER_NAME',         type: 'HUMAN'       }     }]   };    // Make the request   const response = await chatClient.setUpSpace(request);    // Handle the response   console.log(response); }  main().catch(console.error);

Python

chat/client-libraries/cloud/set_up_space_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.spaces.create"]  def set_up_space_with_user_cred():     # Create a client     client = create_client_with_user_credentials(SCOPES)      # Initialize request argument(s)     request = google_chat.SetUpSpaceRequest(         space = {             "space_type": 'SPACE',             # Replace DISPLAY_NAME here.             "display_name": 'DISPLAY_NAME'         },         memberships = [{             "member": {                 # Replace USER_NAME here.                 "name": 'users/USER_NAME',                 "type_": 'HUMAN'             }         }]     )      # Make the request     response = client.set_up_space(request)      # Handle the response     print(response)  set_up_space_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/SetUpSpaceUserCred.java
import com.google.chat.v1.ChatServiceClient; import com.google.chat.v1.Membership; import com.google.chat.v1.SetUpSpaceRequest; import com.google.chat.v1.Space; import com.google.chat.v1.User;  // This sample shows how to set up a named space with one initial member with // user credential. public class SetUpSpaceUserCred {    private static final String SCOPE =     "https://www.googleapis.com/auth/chat.spaces.create";    public static void main(String[] args) throws Exception {     try (ChatServiceClient chatServiceClient =         AuthenticationUtils.createClientWithUserCredentials(           ImmutableList.of(SCOPE))) {       SetUpSpaceRequest.Builder request = SetUpSpaceRequest.newBuilder()         .setSpace(Space.newBuilder()           .setSpaceType(Space.SpaceType.SPACE)           // Replace DISPLAY_NAME here.           .setDisplayName("DISPLAY_NAME"))         .addAllMemberships(ImmutableList.of(Membership.newBuilder()           .setMember(User.newBuilder()             // Replace USER_NAME here.             .setName("users/USER_NAME")             .setType(User.Type.HUMAN)).build()));       Space response = chatServiceClient.setUpSpace(request.build());        System.out.println(JsonFormat.printer().print(response));     }   } }

Apps Script

chat/advanced-service/Main.gs
/**  * This sample shows how to set up a named space with one initial member with  * user credential.  *   * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.spaces.create'  * referenced in the manifest file (appsscript.json).  */ function setUpSpaceUserCred() {   // Initialize request argument(s)   const space = {     spaceType: 'SPACE',     // TODO(developer): Replace DISPLAY_NAME here     displayName: 'DISPLAY_NAME'   };   const memberships = [{     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.setup({ space: space, memberships: memberships });    // Handle the response   console.log(response); }

Para executar a amostra, substitua o seguinte:

  • DISPLAY_NAME: o nome de exibição do novo espaço.
  • USER_NAME: o ID do outro usuário para incluir uma assinatura.

Para acessar o espaço, use o ID do recurso dele para criar o URL. Você pode receber o ID do recurso do espaço name no corpo da resposta do Google Chat. Por exemplo, se o name do seu espaço for spaces/1234567, acesse o espaço usando o seguinte URL: https://mail.google.com/chat/u/0/#chat/space/1234567.