Créer un espace Google Chat et y ajouter des membres

Ce guide explique comment utiliser la méthode setUp() sur la ressource Space de l'API Google Chat pour créer un espace Chat et y ajouter des membres.

La ressource Space représente un emplacement où les utilisateurs et les applications Chat peuvent envoyer des messages, partager des fichiers et collaborer. Il existe plusieurs types d'espaces:

  • Les messages privés (MP) sont des conversations entre deux utilisateurs ou entre un utilisateur et une application Chat.
  • Les chats de groupe sont des conversations entre trois utilisateurs ou plus et des applications Chat.
  • Les espaces nommés sont des espaces persistants où les utilisateurs peuvent envoyer des messages, partager des fichiers et collaborer.

Vous pouvez utiliser la méthode setUp() pour effectuer les opérations suivantes:

  • Créez un espace nommé avec des membres initiaux.
  • Créer un message privé entre deux personnes
  • Créer une discussion de groupe entre plusieurs personnes

Lorsque vous configurez un espace, tenez compte des points suivants:

  • L'utilisateur appelant (authentifié) est automatiquement ajouté à l'espace. Vous n'avez donc pas besoin de spécifier son appartenance dans la requête.
  • Lorsque vous créez un message privé (MP), si un MP existe entre deux utilisateurs, le MP est renvoyé. Sinon, un message privé est créé.
  • Lors de la création d'un chat de groupe, si aucun des membres indiqués dans la requête n'est ajouté au chat de groupe (par exemple, en raison d'un problème d'autorisation), un chat de groupe vide (n'incluant que l'utilisateur appelant) peut être créé.
  • Vous ne pouvez pas configurer d'espaces avec des réponses sous forme de fil de discussion ni ajouter de personnes externes à votre organisation Google Workspace.
  • Les adhésions en double (y compris l'utilisateur appelant) fournies dans la requête sont filtrées au lieu de générer une erreur de requête.

Prérequis

Node.js

Python

Java

Apps Script

Configurer un espace

Pour configurer un espace, transmettez les éléments suivants dans votre requête:

  • Spécifiez le champ d'application d'autorisation chat.spaces.create ou chat.spaces.
  • Appelez la méthode SetUpSpace().
  • Transmettez space en tant qu'instance de Space avec tous les champs nécessaires, tels que displayName ou spaceType.
  • Transmettez memberships en tant que tableau d'instances Membership. Pour chaque instance :
    • Spécifiez users/{user} pour ajouter un utilisateur humain en tant que membre d'un espace, où {user} correspond à l'{person_id} de l'person de l'API People ou à l'ID d'un user dans l'API Directory. Par exemple, si la personne resourceName de l'API People est people/123456789, vous pouvez ajouter l'utilisateur à l'espace en incluant une adhésion avec users/123456789 comme member.name.
    • Spécifiez groups/{group} pour ajouter un groupe en tant que membre d'un espace, où {group} correspond à l'ID du groupe pour lequel vous souhaitez créer une appartenance. L'ID du groupe peut être récupéré à l'aide de l'API Cloud Identity. Par exemple, si l'API Cloud Identity renvoie un groupe nommé groups/123456789, définissez membership.groupMember.name sur groups/123456789. Les groupes Google ne peuvent pas être ajoutés à un chat de groupe ni à un message privé, mais uniquement à un espace nommé.

Pour créer un message privé entre l'utilisateur appelant et un autre utilisateur humain, spécifiez l'appartenance de l'utilisateur humain dans votre requête.

Pour créer un MP entre l'utilisateur appelant et l'application appelante, définissez space.singleUserBotDm sur true et ne spécifiez aucun abonnement. Vous ne pouvez utiliser cette méthode que pour configurer un message privé avec l'application appelante. Pour ajouter l'application appelante en tant que membre d'un espace ou d'un message privé existant entre deux utilisateurs humains, consultez la section Créer une appartenance.

L'exemple suivant crée un espace nommé et une appartenance à l'espace pour deux utilisateurs humains (l'utilisateur authentifié et un autre utilisateur).

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

Pour exécuter l'exemple, remplacez les éléments suivants:

  • DISPLAY_NAME: nom à afficher du nouvel espace.
  • USER_NAME: ID de l'autre utilisateur pour lequel inclure une adhésion.

Pour accéder à l'espace, utilisez l'ID de ressource de l'espace pour créer son URL. Vous pouvez obtenir l'ID de ressource à partir de l'espace name dans le corps de la réponse Google Chat. Par exemple, si le name de votre espace est spaces/1234567, vous pouvez y accéder à l'aide de l'URL suivante : https://mail.google.com/chat/u/0/#chat/space/1234567.