Criar um espaço do Google Chat e adicionar participantes

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

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

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

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

  • Criar um espaço nomeado com participantes iniciais.
  • Criar uma mensagem direta (MD) entre duas pessoas.
  • Configurar 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 participaçã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 grupo de chat, se nenhuma das associações fornecidas na solicitação for adicionada com sucesso ao grupo de chat (por exemplo, problema de permissão), um grupo de chat vazio (incluindo apenas o usuário que faz a chamada) poderá ser criado.
  • Não é possível configurar Espaços com respostas agrupadas ou adicionar pessoas de fora da sua organização do Google Workspace.
  • As associações duplicadas (incluindo o usuário que faz 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 do Chat instalado e cada usuário da organização. Portanto, não é necessário configurar mensagens diretas de forma programática. Em vez disso, liste os espaços para retornar todas as MDs ou encontre uma mensagem direta para receber detalhes sobre uma MD específica.

Pré-requisitos

Node.js

  • Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.

Python

  • Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.

Java

  • Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.

Apps Script

  • Uma conta do Google Workspace Business ou Enterprise com acesso ao Google Chat.

Configurar um espaço

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

  • Especifique o escopo de autorização chat.spaces.create ou chat.spaces.
  • Chame o SetUpSpace() método.
  • Transmita space como uma instância de Space com todos os campos necessários, como displayName ou spaceType.
  • Transmita memberships como uma matriz de Membership instâncias. Para cada instância:
    • Especifique users/{user} para adicionar um usuário humano como participante do espaço, em que {user} é o {person_id} da person da API People ou o ID de um user na API Directory. Por exemplo, se o resourceName da pessoa da API People for people/123456789, você poderá adicionar o usuário ao espaço incluindo uma participação com users/123456789 como member.name.
    • Especifique groups/{group} para adicionar um grupo como participante do espaço, em que {group} é o ID do grupo para o qual você quer criar a participação. 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 grupo de chat ou MD, 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 participação do usuário humano na solicitação.

Para criar uma mensagem direta entre o usuário que faz a chamada e o app que faz a chamada, defina space.singleUserBotDm como true e não especifique nenhuma participação. Só é possível usar esse método para configurar uma mensagem direta com o app de ligação. Para adicionar o app de ligação como membro de um Espaço ou uma mensagem direta existente entre dois usuários humanos, consulte Criar uma participação.

O exemplo a seguir cria um espaço nomeado e uma participação no 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);
}

await main();

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 o exemplo, 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 participação.

Para acessar o espaço, use o ID do recurso do espaço para criar o URL dele. É possível receber o ID do recurso do name do espaço no corpo da resposta do Google Chat. Por exemplo, se o name do espaço for spaces/1234567, você poderá acessar o espaço usando o seguinte URL: https://mail.google.com/chat/u/0/#chat/space/1234567.