Importa datos a Google Chat

Con la API de Google Chat, puedes importar datos de tus otras plataformas de mensajería a Google Chat. Puedes importar mensajes, archivos adjuntos, reacciones, membresías y entidades espaciales existentes de tus otras plataformas de mensajería a los recursos de la API de Chat correspondientes. Para importar estos datos, crea espacios de Chat en el modo de importación y, luego, importa datos a ellos.

A continuación, se incluye una descripción general de los pasos necesarios para importar datos con un espacio de modo de importación:

  1. Revisa los límites de uso de las APIs y planifica con anticipación.
  2. Configura la autorización de la app de Chat.
  3. Crea un espacio en modo de importación.
  4. Importar recursos.
  5. Valida los recursos importados.
  6. Concilia las diferencias de los recursos importados con los datos de origen.
  7. Modo de importación completo.
  8. Crea recursos de membresías.

Requisitos previos

Apps Script

Python

  • Python 3.6 o superior
  • La herramienta de administración de paquetes pip
  • Las bibliotecas cliente de Google más recientes para Python. Para instalarlos o actualizarlos, ejecuta el siguiente comando en tu interfaz de línea de comandos:

    pip3 install --upgrade google-api-python-client google-auth
    
  • Una app de Chat publicada. Para crear y publicar una app de Chat, consulta Cómo compilar una app de Google Chat.

  • Autorización configurada para la app de Chat. Esta debe tener autoridad delegada de todo el dominio en cualquier dominio en el que la app importe contenido. Consulta Autoriza apps de Chat.

Revisa los límites de uso de las APIs y planifica con anticipación

El tiempo necesario para importar datos a Chat puede variar mucho según la cantidad de recursos de Chat que se importen. Planifica con anticipación. Para ello, revisa los límites de uso de tu app de Chat y la cantidad de datos programados para importar desde la plataforma de mensajería de origen a fin de determinar un cronograma estimado.

Crea un espacio en modo de importación

Para crear un espacio en modo de importación, llama al método create en el recurso Space y establece importMode en true. Para conservar la hora de creación de la entidad de espacio equivalente de la plataforma de mensajería de origen, puedes configurar el createTime del espacio. Este valor de createTime debe establecerse en un valor entre el 1 de enero de 2000 y la fecha actual.

Toma nota del name del espacio que crees para poder hacer referencia a él en pasos posteriores cuando importes contenido al espacio.

Desde el momento en que se llama al método create, las apps de Chat tienen 30 días para importar recursos al espacio, completar el modo de importación y crear recursos de membresía con el permiso chat.import. Las apps de Chat aún podrán crear membresías después de 30 días con los permisos de membresía estándar de la API de Chat. Después de 30 días, si el espacio aún está en modo de importación, se borrará automáticamente y la app de Chat no podrá acceder a él ni recuperarlo. Planifica con tiempo revisando los límites de uso de la app de Chat para asegurarte de que todos los recursos programados se puedan importar a Chat dentro de este plazo.

En el siguiente ejemplo, se muestra cómo crear un espacio en el modo de importación:

Apps Script

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'Import Mode Space',
      importMode: true,
      createTime: (new Date('January 1, 2000')).toJSON()
  });
  console.log(space.name);
}

Python

"""Create a space in import mode."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

result = (
    service.spaces()
    .create(
        body={
            'spaceType': 'SPACE',
            'displayName': 'Import Mode Space',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

Reemplaza lo siguiente:

  • EMAIL: La dirección de correo electrónico de la cuenta de usuario que suplantas con la autoridad de todo el dominio

Importa recursos

Para importar recursos de otras plataformas de mensajería, crea recursos de Google Chat (como mensajes, reacciones, archivos adjuntos) en el espacio del modo de importación. Cuando creas un recurso en el espacio, especificas los datos del recurso relacionado de la plataforma de mensajes desde la que realizas la migración.

Mensajes

Tus apps de Chat pueden importar mensajes con su propia autoridad o en nombre de un usuario mediante la suplantación de identidad. (El autor del mensaje se establece en la cuenta de usuario que suplantó la identidad). Para obtener más información, consulta Autoriza apps de Chat. Para importar un mensaje en un espacio del modo de importación, llama al método create en el recurso Message. Para conservar la hora de creación del mensaje original desde la plataforma de mensajería de origen, puedes configurar el createTime del mensaje. Este createTime se debe establecer en un valor entre la hora de creación del espacio que configuraste antes y la hora de presentación.

Los mensajes en el mismo espacio no pueden contener el mismo createTime, incluso si se borran los mensajes anteriores con esa hora.

Los mensajes que contienen URLs de terceros en espacios en modo de importación no pueden renderizar vistas previas de los vínculos en Google Chat.

Cuando creas los mensajes en el modo de importación, los espacios no envían notificaciones ni envían correos electrónicos a ningún usuario, incluidos los mensajes que contienen menciones de usuarios.

En el siguiente ejemplo, se muestra cómo crear un mensaje en un espacio del modo de importación:

Python

"""Create a message in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = (
    service.spaces()
    .messages()
    .create(
        parent=NAME,
        body={
            'text': 'Hello, world!',
            'createTime': f'{datetime.datetime(2000, 1, 2).isoformat()}Z',
        },
    )
    .execute()
)

print(result)

Reemplaza lo siguiente:

Reacciones

Tu app de Chat puede importar reacciones a mensajes mediante la API de Chat. Para obtener información sobre los métodos de recursos y los tipos de compatibilidad con la autenticación en espacios en modo de importación, consulta Autoriza apps de Chat.

Archivos adjuntos

Tu app de Chat puede subir archivos adjuntos mediante la API de Chat. Para obtener información sobre los métodos de recursos y los tipos de compatibilidad con la autenticación en espacios en modo de importación, consulta Autoriza apps de Chat.

Membresías históricas

Las membresías históricas son membresías creadas para los usuarios que ya habían abandonado la entidad espacial original desde la plataforma de mensajería de origen, pero deseas conservar sus datos en Chat. Si deseas obtener información para agregar miembros nuevos después de que el espacio ya no esté en modo de importación, consulta Cómo crear un recurso de membresía.

En muchos casos, cuando esos miembros históricos están sujetos a una política de retención de datos de Google, se recomienda conservar los datos (como los mensajes y las reacciones) que crean las membresías históricas en un espacio antes de importarlos a Chat. Mientras el espacio está en modo de importación, puedes importar esas membresías históricas al espacio con el método create en el recurso Membership. Para conservar el tiempo de licencia de la membresía histórica, debes establecer el deleteTime de la membresía. Este tiempo de licencia debe ser exacto, ya que influye en los datos que se retendrán para esas membresías. Además, este deleteTime debe ser posterior a la marca de tiempo de creación del espacio y no debe ser una marca de tiempo futura.

Además de deleteTime, también puedes configurar createTime para conservar la hora de unión original de la membresía histórica. A diferencia de deleteTime, createTime es opcional. Si no se configura, createTime se calcula automáticamente restando 1 microsegundo de deleteTime. Si se configura, createTime debe ser anterior a deleteTime y debe ser igual o posterior a la hora de creación del espacio. Esta información de createTime no se usa para determinar la retención de datos y no se puede ver en las herramientas de administrador, como la Consola del administrador de Google y Google Vault.

Si bien puede haber varias maneras en las que un usuario puede unirse a un espacio y abandonarlo en la plataforma de mensajería de origen (mediante invitaciones, unirse por sí mismo o agregar otro usuario), en Chat esas acciones se representan con los campos createTime y deleteTime de membresía histórica como agregados o quitados.

En el siguiente ejemplo, se muestra cómo crear una membresía histórica en un espacio de modo de importación:

Python

"""Create a historical membership in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
USER = 'users/USER_ID'
result = (
    service.spaces()
    .members()
    .create(
        parent=NAME,
        body={
            'createTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z',
            'deleteTime': f'{datetime.datetime(2000, 1, 4).isoformat()}Z',
            'member': {'name': USER, 'type': 'HUMAN'},
        },
    )
    .execute()
)

print(result)

Reemplaza lo siguiente:

Valida los recursos importados

Tu app de Chat puede volver a leer y validar el contenido de un espacio del modo de importación llamando al método list en el recurso Message. Puedes leer los recursos Reaction y Attachment desde los campos emojiReactionSummaries y attachment de los mensajes que se muestran. Las apps de chat solo pueden llamar a este método en nombre de un usuario mediante la suplantación de identidad. Para obtener más información, consulta Autoriza apps de Chat.

Tu app de Chat también puede leer mensajes individuales para su validación llamando al método get en el recurso Message. Las apps de chat solo pueden llamar a este método para leer sus propios mensajes usando su propia autoridad. Para obtener más información, consulta Autoriza apps de Chat.

Las apps de chat también pueden enumerar membresías históricas si llamas al método list en el recurso Membership. Después de que el espacio sale del modo de importación, el método list ya no expone las membresías históricas. Las apps de chat solo pueden llamar a este método en nombre de un usuario a través de la suplantación. Para obtener más información, consulta Autoriza apps de Chat.

Para leer las propiedades de un espacio del modo de importación, llama al método get en el recurso Space. Las apps de Chat solo pueden llamar a este método usando su propia autoridad. Para obtener más información, consulta Autoriza apps de Chat.

Concilia las diferencias de los recursos importados de los datos de origen

Si algún recurso importado ya no coincide con la entidad original de la plataforma de mensajería de origen debido a cambios en la entidad original durante la importación, las apps de Chat pueden llamar a la API de Chat para modificar el recurso de chat importado. Por ejemplo, si un usuario edita un mensaje en la plataforma de mensajería de origen después de crearlo en Chat, las apps de Chat pueden actualizar el mensaje importado para que refleje el contenido actual del mensaje original.

Mensajes

Para actualizar los campos compatibles de un mensaje en un espacio del modo de importación, llama al método update en el recurso Message. Las apps de chat solo pueden llamar a este método con la misma autoridad que se usó durante la creación inicial del mensaje. Si utilizaste la suplantación de usuarios durante la creación inicial del mensaje, debes usar el mismo usuario suplantado para actualizar ese mensaje.

Para borrar un mensaje en un espacio del modo de importación, llama al método delete en el recurso Message. No es necesario que el creador de mensajes original borre los mensajes en un espacio en modo de importación. Para borrarlos, se suplanta la identidad de cualquier usuario en el dominio. Las apps de chat solo pueden borrar sus propios mensajes con su propia autoridad. Para obtener más información, consulta Autoriza apps de Chat.

Reacciones

Para borrar una reacción a un mensaje en un espacio del modo de importación, usa el método delete en el recurso reactions. Para obtener información sobre los métodos de recursos y los tipos de compatibilidad con la autenticación en espacios en modo de importación, consulta Autoriza apps de Chat.

Archivos adjuntos

Para actualizar archivos adjuntos de un mensaje en un espacio del modo de importación, usa el método upload en el recurso media. Para obtener información sobre los métodos de recursos y los tipos de compatibilidad de autenticación en espacios en modo de importación, consulta Autoriza apps de Chat.

Membresías históricas

Para borrar una membresía histórica en un espacio del modo de importación, usa el método delete en el recurso Membership. Después de que un espacio sale del modo de importación, el método delete ya no te permite borrar membresías históricas.

No puedes actualizar una membresía histórica en un espacio en modo de importación. Si deseas corregir una membresía histórica importada de forma incorrecta, primero debes borrarla y volver a crearla mientras el espacio aún esté en modo de importación.

Espacios

Para actualizar los campos compatibles en un espacio de modo de importación, usa el método patch en el recurso spaces.

Para borrar un espacio del modo de importación, usa el método delete en el recurso spaces.

Para obtener información sobre los métodos de recursos y los tipos de compatibilidad de autenticación en espacios en modo de importación, consulta Autoriza apps de Chat.

Completar modo de importación

Antes de llamar al método completeImport, debes asegurarte de que se hayan completado la validación y la conciliación de las diferencias de recursos. Salir de un espacio del modo de importación es un proceso irreversible y convierte el espacio del modo de importación en un espacio normal. No hay un indicador en Chat que atribuya estos espacios a una importación de datos.

Para completar el modo de importación y permitir que los usuarios accedan al espacio, la app de Chat puede llamar al método completeImport en el recurso Space. Las apps de chat solo pueden llamar a este método en nombre de un usuario a través de la suplantación. Para obtener más información, consulta Autoriza apps de Chat. El usuario suplantado se agrega al espacio como administrador del espacio una vez que se completa este método. Se debe llamar a este método dentro de los 30 días posteriores a la llamada al método create.space inicial. Si intentas llamar a este método una vez transcurridos los 30 días, la llamada generará fallas porque se borrará el espacio del modo de importación y la app de Chat ya no podrá acceder a él.

No es necesario que el usuario suplantado en el método completeImport sea el creador del espacio.

En el siguiente ejemplo, se muestra cómo completar el modo de importación:

Python

"""Complete import."""

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = service.spaces().completeImport(name=NAME).execute()

print(result)

Reemplaza lo siguiente:

Cómo crear recursos de membresía

Para agregar membresías de usuario a un espacio que completó el modo de importación, llama al método create en el recurso Membership. Las apps de chat pueden seguir usando el permiso chat.import y la suplantación de usuarios para llamar a este método dentro de los 30 días posteriores a la llamada inicial al método create.space. El usuario suplantado debe ser un administrador del espacio.

Una vez transcurridos los 30 días, las apps de Chat requieren permisos de membresía adicionales para llamar a este método.

Recomendamos que las apps de Chat creen recursos de membresía inmediatamente después de completar la importación, de modo que las apps de Chat puedan seguir usando el alcance chat.import para la creación de membresías y proporcionar a todos los miembros acceso al espacio importado.