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 de espacios 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 modo de importación y, luego, importa datos a esos espacios. Cuando el proceso se complete correctamente, estos espacios se convertirán en espacios estándar de Chat.

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

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 Compila una app de Google Chat)

  • Autorización configurada para la app de Chat. La app de Chat debe delegar la autoridad 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 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 y determina 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 preservar el tiempo de creación de la entidad de espacio equivalente desde la plataforma de mensajería de origen, puedes configurar el createTime del espacio. Este createTime se debe configurar en un valor entre el 1 de enero de 2000 y el presente.

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 pueden 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 sigue en modo de importación, se borrará automáticamente, no se podrá acceder a él y será irrecuperable. Para planificar con anticipación, revisa los límites de uso de tu app de Chat y asegúrate de que todos los recursos programados se puedan importar a Chat dentro de este período.

En el siguiente ejemplo, se muestra cómo crear un espacio en 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: Es la dirección de correo electrónico de la cuenta de usuario que suplantas con autoridad en todo el dominio.

Importa recursos

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

Mensajes

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

Los mensajes en el mismo espacio no pueden contener el mismo createTime, incluso si se borraron los mensajes anteriores con ese tiempo.

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

Cuando creas los mensajes en modo de importación, los espacios no notifican 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 en 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 a través de la API de Chat. 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.

Archivos adjuntos

Tu app de Chat puede subir archivos adjuntos con la API de Chat. 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. Sin embargo, te recomendamos que uses la API de Google Drive para subir archivos adjuntos como archivos de Google Drive y que vincules los URI de los archivos a los mensajes correspondientes en los espacios en modo de importación para importar archivos adjuntos desde otras plataformas de mensajería y evitar alcanzar el límite interno de Google Chat para la carga de archivos adjuntos.

Historial de membresías

Las membresías históricas son aquellas creadas para los usuarios que ya dejaron la entidad del espacio original de la plataforma de mensajería de origen, pero que deseas retener sus datos en Chat. Para obtener información sobre cómo agregar miembros nuevos después de que el espacio ya no esté en modo de importación, consulta Crea 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, deseas conservar los datos (como los mensajes y las reacciones) creados por 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. La hora de salida debe ser precisa, ya que afecta qué datos se conservará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 establece, createTime se calcula de forma automática 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 formas en las que un usuario puede unirse a un espacio y abandonarlo en la plataforma de mensajería de origen (a través de invitaciones, unirse por su cuenta, agregar otro usuario), esas acciones se representan en los campos históricos createTime y deleteTime de la membresía a medida que se agregan o quitan.

En el siguiente ejemplo, se muestra cómo crear una membresía histórica en un espacio en 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 en modo de importación llamando al método list en el recurso Message. Puedes leer los recursos Reaction y Attachment de los campos emojiReactionSummaries y attachment de cualquier mensaje que se muestre. Las apps de chat solo pueden llamar a este método en nombre de un usuario mediante el robo de identidad. Para obtener más información, consulta Autoriza apps de Chat.

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

Las apps de chat también pueden enumerar las membresías históricas llamando al método list en el recurso Membership. Una vez 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 mediante el robo de identidad. Para obtener más información, consulta Autoriza apps de Chat.

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

Conciliar las diferencias de recursos importados con 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 de 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 usaste la suplantación de usuarios durante la creación inicial del mensaje, debes usar el mismo usuario que suplantó para actualizar ese mensaje.

Para borrar un mensaje en un espacio de modo de importación, llama al método delete en el recurso Message. No es necesario que el creador del mensaje original borre los mensajes en un espacio de modo de importación, ya que se puede borrar suplantando la identidad de cualquier usuario del 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 de un mensaje en un espacio de 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 de autenticación en espacios en modo de importación, consulta Autoriza apps de Chat.

Archivos adjuntos

Para actualizar los archivos adjuntos de un mensaje en un espacio de 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 con la autenticación en los espacios en modo de importación, consulta Autoriza apps de Chat.

Historial de membresías

Para borrar una membresía histórica en un espacio de 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 las 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, luego, 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 con la autenticación en los espacios en modo de importación, consulta Autoriza apps de Chat.

Completar el 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. En Chat, no hay un indicador que atribuya estos espacios a una importación de datos.

Para completar el modo de importación y que los usuarios puedan acceder 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 mediante el robo de identidad. 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 en un plazo de 30 días desde la llamada inicial al método create.space. Si intentas llamar a este método después de que transcurran los 30 días, la llamada fallará porque se borra el espacio en modo de importación y la app de Chat ya no puede acceder a él.

El usuario suplantado en el método completeImport no necesita ser 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:

Crea recursos de membresía

Para agregar membresías de usuario a un espacio en el que se completó el modo de importación, llama al método create en el recurso Membership. Las apps de chat pueden seguir usando el permiso de chat.import y la suplantación de usuario para llamar a este método en un plazo de 30 días a partir de la llamada inicial al método create.space. El usuario suplantado debe ser 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 que se complete la importación, de modo que las apps de Chat puedan seguir usando el permiso chat.import para la creación de membresías y proporcionar a todos los miembros acceso al espacio importado.