En esta guía, se explica cómo usar la API de Google Chat para administrar el estado de disponibilidad y el estado personalizado de un usuario.
Para leer y actualizar la disponibilidad de un usuario de Chat, tu app debe autenticarse con la autenticación de usuario. Solo se puede acceder o modificar la disponibilidad del usuario autenticado.
Requisitos previos
Node.js
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de la API de Cloud para Node.js.
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación de usuario.
Python
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de la API de Cloud para Python.
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación de usuario.
Java
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de la API de Cloud para Java .
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación de usuario.
Apps Script
- Una cuenta de Google Workspace Business o Enterprise con acceso a Google Chat.
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Crea un proyecto independiente de Apps Script, y activa el servicio avanzado de Chat.
- Elige un alcance de autorización que admita la autenticación de usuario.
Obtén la disponibilidad de un usuario
Para leer la disponibilidad de un usuario de Google Chat, pasa lo siguiente en tu solicitud:
- Especifica el
chat.users.availability.readonlyochat.users.availabilityalcance de autorización. - Llama al
GetAvailabilitymétodo. - Pasa el
namedel recurso de disponibilidad que se recuperará. El nombre debe tener el formatousers/{user}/availability. Se puede usar la dirección de correo electrónico del usuario o el aliasmepara hacer referencia a la persona que llama. Por ejemplo,users/me/availability.
Aquí te mostramos cómo obtener la disponibilidad de un usuario:
Node.js
const { ChatServiceClient } = require('@google-apps/chat').v1;
// Instantiates a client
const chatServiceClient = new ChatServiceClient();
async function getAvailability() {
const request = {
// The name of the availability resource to retrieve.
// Format: users/{user}/availability
// The 'me' alias can be used to refer to the calling user.
name: 'users/me/availability',
};
try {
const response = await chatServiceClient.getAvailability(request);
console.log(response);
} catch (err) {
console.error('Error retrieving availability:', err);
}
}
getAvailability();
Python
from google.apps import chat_v1 as google_chat
def get_availability():
# Instantiates a client
client = google_chat.ChatServiceClient()
# Prepare request
request = google_chat.GetAvailabilityRequest(
# Format: users/{user}/availability
# The 'me' alias refers to the calling user.
name="users/me/availability",
)
# Call the API
try:
response = client.get_availability(request=request)
print(response)
except Exception as e:
print(f"Error retrieving availability: {e}")
get_availability()
Java
import com.google.chat.v1.Availability;
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.GetAvailabilityRequest;
public class GetAvailability {
public static void main(String[] args) throws Exception {
// Instantiates a client
try (ChatServiceClient chatServiceClient = ChatServiceClient.create()) {
GetAvailabilityRequest request = GetAvailabilityRequest.newBuilder()
// Format: users/{user}/availability
// The 'me' alias refers to the calling user.
.setName("users/me/availability")
.build();
Availability response = chatServiceClient.getAvailability(request);
System.out.println(response);
}
}
}
Apps Script
/**
* Retrieves the calling user's availability details.
*/
function getUserAvailability() {
const name = 'users/me/availability';
try {
const availability = Chat.Users.Availability.get(name);
console.log(availability);
} catch (err) {
console.error('Failed to get availability: ' + err.message);
}
}
La API de Chat muestra una instancia de
Availability
que detalla el estado de presencia y el estado personalizado del usuario.
Actualiza el estado personalizado
Para actualizar el estado personalizado de un usuario, pasa lo siguiente en tu solicitud:
- Especifica el alcance de autorización
chat.users.availability. - Llama al
UpdateAvailabilitymétodo. - Pasa el recurso
Availabilityy especifica los nuevos detalles decustomStatus. - Configura el parámetro
update_maskpara incluir el campocustom_status.
Aquí te mostramos cómo actualizar el estado personalizado de un usuario:
Node.js
const { ChatServiceClient } = require('@google-apps/chat').v1;
// Instantiates a client
const chatServiceClient = new ChatServiceClient();
async function updateCustomStatus() {
const request = {
// The Availability resource to update.
availability: {
name: 'users/me/availability',
customStatus: {
text: 'In a meeting',
emoji: {
unicode: '📅'
}
}
},
// The fields to update. Must contain 'custom_status'.
updateMask: {
paths: ['custom_status']
}
};
try {
const response = await chatServiceClient.updateAvailability(request);
console.log(response);
} catch (err) {
console.error('Error updating status:', err);
}
}
updateCustomStatus();
Python
from google.apps import chat_v1 as google_chat
from google.protobuf import field_mask_pb2
def update_custom_status():
# Instantiates a client
client = google_chat.ChatServiceClient()
# Define custom status and emoji
custom_status = google_chat.CustomStatus(
text="In a meeting",
emoji=google_chat.Emoji(unicode="📅")
)
# Initialize availability object
availability = google_chat.Availability(
name="users/me/availability",
custom_status=custom_status
)
# Specify update mask
update_mask = field_mask_pb2.FieldMask(paths=["custom_status"])
# Prepare request
request = google_chat.UpdateAvailabilityRequest(
availability=availability,
update_mask=update_mask
)
# Call the API
try:
response = client.update_availability(request=request)
print(response)
except Exception as e:
print(f"Error updating status: {e}")
update_custom_status()
Java
import com.google.chat.v1.Availability;
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.CustomStatus;
import com.google.chat.v1.Emoji;
import com.google.chat.v1.UpdateAvailabilityRequest;
import com.google.protobuf.FieldMask;
public class UpdateCustomStatus {
public static void main(String[] args) throws Exception {
// Instantiates a client
try (ChatServiceClient chatServiceClient = ChatServiceClient.create()) {
CustomStatus customStatus = CustomStatus.newBuilder()
.setText("In a meeting")
.setEmoji(Emoji.newBuilder().setUnicode("📅"))
.build();
Availability availability = Availability.newBuilder()
.setName("users/me/availability")
.setCustomStatus(customStatus)
.build();
FieldMask updateMask = FieldMask.newBuilder()
.addPaths("custom_status")
.build();
UpdateAvailabilityRequest request = UpdateAvailabilityRequest.newBuilder()
.setAvailability(availability)
.setUpdateMask(updateMask)
.build();
Availability response = chatServiceClient.updateAvailability(request);
System.out.println(response);
}
}
}
Apps Script
/**
* Updates the calling user's custom status message.
*/
function updateCustomStatus() {
const name = 'users/me/availability';
const availability = {
customStatus: {
text: 'In a meeting',
emoji: {
unicode: '📅'
}
}
};
const updateMask = 'custom_status';
try {
const response = Chat.Users.Availability.patch(availability, name, {
updateMask: updateMask
});
console.log(response);
} catch (err) {
console.error('Failed to update status: ' + err.message);
}
}
La API de Chat actualiza y muestra una instancia de
Availability
con el nuevo estado personalizado.
Para borrar el estado personalizado de un usuario, actualiza la disponibilidad y omite los detalles de customStatus.
Actualiza el estado de presencia
Según el estado de presencia de destino, puedes actualizar la disponibilidad de un usuario llamando a uno de los siguientes métodos personalizados:
- Activo: Llama al
MarkAsActivemétodo para establecer la presencia como activa. Se pueden proporcionar valores de vencimiento opcionales (ttloexpireTime). - Ausente: Llama al
MarkAsAwaymétodo para establecer la presencia como ausente. - No interrumpir: Llama al método
MarkAsDoNotDisturbpara silenciar las notificaciones.
Para obtener detalles, incluidas las descripciones de los campos y las plantillas de consulta, consulta la guía de referencia de cada método.
Identifica los cambios de disponibilidad de un evento
Tu app de Chat puede suscribirse a eventos google.workspace.chat.availability.v1.updated para recibir notificaciones cuando cambia la disponibilidad de un usuario. Cuando se produce una actualización de disponibilidad, la app recibe un evento con una carga útil que contiene el recurso Availability.