Compartir a través de


Importar mensajes de plataformas de terceros a Teams con Microsoft Graph

Con Microsoft Graph, puede migrar el historial de mensajes y los datos existentes de los usuarios de un sistema externo a Teams. Los usuarios pueden continuar sus comunicaciones de forma fluida y continuar sin interrupciones habilitando la recreación de una jerarquía de mensajería de plataforma de terceros dentro de Teams.

Permissions

Nombre de ámbito Nombre para mostrar Descripción Tipo Se requiere el consentimiento del administrador Entidades o API cubiertas
Teamwork.Migrate.All Administrar la migración a Microsoft Teams Crear y administrar recursos para la migración a Teams. Aplicación solamente POST /team

Nota:

No se admite la autenticación delegada.

Tipos de canal y chat admitidos

Teams admite la migración de mensajes externos a los siguientes tipos de canal y chat:

  • Nuevo equipo y canal estándar: cree un nuevo equipo y sus canales estándar en modo de migración para importar contenido. Este enfoque le permite importar la estructura exacta del sistema externo en el nuevo canal. Para habilitar migrationMode un nuevo equipo y canal estándar, consulte Creación de un equipo y un canal estándar en modo de migración.

  • Canal o chat existente: use cualquier canal o chat que ya exista en Teams, independientemente de cuándo lo haya creado. Este enfoque le permite agregar contexto existente a los canales que ya están activos en Teams y mantiene la continuidad de las conversaciones en curso. Para habilitar el modo de migración en un canal o chat existente, consulte Migración de canales existentes.

Nota:

  • Solo se admiten canales estándar al crear un canal en modo de migración desde cero.
  • El contenido federado no se puede importar. Todo el contenido importado debe proceder del inquilino autenticado y solo una aplicación puede administrar un subproceso a la vez. Otra aplicación solo puede importar contenido después de que la primera aplicación complete la migración.

migrationMode es un estado especial que garantiza la integridad de los datos al impedir las siguientes operaciones durante la migración de datos.

  • Para nuevos equipos y canales estándar:
    • Restringe la recepción de nuevos mensajes
    • Impide agregar o quitar miembros
  • Para todos los canales y tipos de chat admitidos:
    • Permite importar mensajes históricos con marcas de tiempo personalizadas
    • Mantiene la estructura y la jerarquía de la conversación originales.

Ámbito de contenido para la importación

En la tabla siguiente se proporciona el ámbito de contenido de los canales y chats existentes.

Dentro del ámbito Fuera del ámbito
Equipo (general) Anuncios
Hora de creación del mensaje original Vídeos
Imágenes alineadas como parte del mensaje Fragmentos de código
Vínculos a archivos existentes en Microsoft 365 (Microsoft 365) SharePoint Online (SPO) o OneDrive (OD) Adhesivos
Mensajes con texto enriquecido Publicaciones cruzadas entre canales
Cadena de respuesta de mensajes Ofertas
Procesamiento de alto rendimiento
Mensajes de chat de grupo y 1:1
mensajes de canal Standard, privados y compartidos
Hasta 250 reacciones
@mentions y emojis

Requisitos previos

Análisis y preparación de datos de mensajes

  • Revise los datos de terceros para decidir qué migrar.
  • Extraiga los datos seleccionados del sistema de chat de terceros.
  • Asigne la estructura de chat de terceros a la estructura de Teams.
  • Convierta los datos de importación en el formato necesario para la migración.

Configurar el espacio empresarial de Microsoft 365.

  • Asegúrese de que existe un inquilino de Microsoft 365 para los datos de importación. Para obtener más información sobre cómo configurar un inquilino de Microsoft 365 para Teams, consulte Preparación del inquilino de Microsoft 365.
  • Asegúrese de que los miembros del equipo están en Microsoft Entra ID. Para obtener más información, vea Agregar un nuevo usuario a Microsoft Entra ID.

Importación de mensajes históricos en Teams

Puede importar mensajes históricos sin problemas en canales o chats existentes y recién creados realizando los pasos siguientes:

  1. Inicio de la migración
  2. Comprobación del estado de la migración
  3. Importar mensajes
  4. Completar el modo de migración
  5. Comprobación de la finalización del modo de migración

Paso 1: Iniciar la migración

Para empezar a migrar el historial de mensajes de un usuario desde cualquier plataforma de terceros a Teams, puede crear un nuevo equipo y canal estándar o usar un canal o chat existente. En función del escenario, elija una de las siguientes opciones:

Creación de un equipo y un canal estándar en modo de migración

En este escenario, cree un nuevo equipo y un canal estándar en migrationMode para continuar con la importación de mensajes existentes. migrationMode solo se admite para canales estándar.

Crear un nuevo equipo

  • Cree un nuevo equipo con una marca de tiempo back-in-time mediante la createdDateTime propiedad .
  • Coloque el nuevo equipo en estableciendo teamCreationModemigrationen migrationMode .

Nota:

El createdDateTime campo solo se rellena para los equipos o canales migrados. Si actualiza createdDateTime a una marca de tiempo anterior, no podrá volver a moverla a una marca de tiempo futura. migrationMode garantiza que se conservan las marcas de tiempo del mensaje original y evita que se envíen nuevos mensajes cuando la migración está en curso.

Solicitud (crear un equipo en modo de migración)
POST https://graph.microsoft.com/v1.0/teams
Content-Type:application/json

{
  "@microsoft.graph.teamCreationMode":"migration",
  "template@odata.bind":"https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
  "displayName":"My Sample Team",
  "description":"My Sample Team’s Description",
  "createdDateTime":"2020-03-14T11:22:17.043Z"
}
Respuesta
HTTP/1.1 202 Accepted
Location: /teams/{team-id}/operations/{operation-id}
Content-Location: /teams/{team-id}
Mensaje de error
400 Bad Request

Puede recibir el mensaje de error en los escenarios siguientes:

  • Si createdDateTime se establece para el futuro.
  • Si createdDateTime se especifica correctamente, pero teamCreationMode atributo de instancia falta o se establece en un valor no válido.

Creación de un nuevo canal

  • Cree un nuevo canal con una marca de tiempo back-in-time mediante la createdDateTime propiedad del recurso de canal.
  • Coloque el nuevo canal en modo de migración estableciendo channelCreationMode en migration.

Solicitud (crear un canal en modo de migración)

POST https://graph.microsoft.com/v1.0/teams/{team-id}/channels
Content-Type: application/json

{
  "@microsoft.graph.channelCreationMode":"migration",
  "displayName":"Architecture Discussion",
  "description":"This channel is where we debate all future architecture plans",
  "membershipType":"standard",
  "createdDateTime":"2020-03-14T11:22:17.047Z"
}

Respuesta

HTTP/1.1 202 Accepted

{
   "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#teams('team-id')/channels/$entity",
   "id":"id-value",
   "createdDateTime":null,
   "displayName":"Architecture Discussion",
   "description":"This channel is where we debate all future architecture plans",
   "isFavoriteByDefault":null,
   "email":null,
   "webUrl":null,
   "membershipType":null,
   "moderationSettings":null
}

Mensaje de error

400 Bad Request

Puede recibir el mensaje de error en los escenarios siguientes:

  • Si createdDateTime se establece para el futuro.
  • Si createdDateTime se especifica correctamente pero atributo de instancia channelCreationMode falta o se establece en un valor no válido.

Después de crear un nuevo equipo y un canal estándar, complete la migración con los pasos siguientes:

  1. Comprobación del estado de la migración
  2. Importar mensajes
  3. Completar el modo de migración
  4. Comprobación de la finalización del modo de migración

Inicio de la migración en canales y chats existentes

En canales o chats existentes, use la API para habilitar el startMigrationmodo de migración de canales o para habilitar el modostartMigration de migración de chat establece el estado de migración en InProgress e inicia el proceso de importación de mensajes. Para más información, vea:

Migración de canales existente

Para habilitar el modo de migración en canales existentes, use la startMigration API.

Solicitud (canal existente en modo de migración)
POST https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/startMigration
{
  "conversationCreationDateTime":"2024-01-01T00:00:00Z"
}

Sugerencia

Microsoft Graph usa DateTimeOffset para representar la fecha y la hora con un desplazamiento UTC para una zona horaria precisa. El conversationCreationDateTime valor debe ser mayor que el valor mínimo para DateTimeOffset y menor que el valor actual de .createdDateTime

Respuesta

Si la solicitud se realiza correctamente, el método devuelve una respuesta HTTP vacía.

HTTP/1.1 204 No Content
Ejemplo
POST https://graph.microsoft.com/beta/teams/57fb72d0-d811-46f4-8947-305e6072eaa5/channels/19:4b6bed8d24574f6a9e436813cb2617d8@thread.tacv2/startMigration
{
  "conversationCreationDateTime":"2024-01-01T00:00:00Z"
}

Migración de chat existente

Para habilitar el modo de migración en chats existentes, use la startMigration API.

Solicitud (chat existente en modo de migración)
POST https://graph.microsoft.com/beta/chats/{chat-id}/startMigration
{
  "conversationCreationDateTime":"2024-01-01T00:00:00Z"
}

Sugerencia

Microsoft Graph usa DateTimeOffset para representar la fecha y la hora con un desplazamiento UTC para una zona horaria precisa. conversationCreationDateTime debe ser mayor que el valor mínimo para DateTimeOffset y menor que el valor actual del chatcreatedDateTime.

Respuesta

Si la solicitud se realiza correctamente, el método devuelve una respuesta HTTP vacía.

HTTP/1.1 204 No Content
Ejemplo
POST https://graph.microsoft.com/beta/teams/57fb72d0-d811-46f4-8947-305e6072eaa5/chats/19:4b6bed8d24574f6a9e436813cb2617d8@thread.tacv2/startMigration 

{ 
  "conversationCreationDateTime":"2024-01-01T00:00:00Z" 
} 

Tenga en cuenta los siguientes puntos importantes:

  • Defina una marca de tiempo mínima para los mensajes que se van a migrar. La marca de tiempo proporcionada debe ser anterior a la actual createdDateTimedel canal o del chat. Esta marca de tiempo reemplaza al existente createdDateTime del canal. Si actualiza createdDateTime a una marca de tiempo anterior, no podrá volver a moverla a una marca de tiempo futura.
  • La creationDateTime propiedad es opcional en un cuerpo de solicitud. Si se omite, la startMigration API usa la fecha y hora actuales como marca de tiempo mínima.
  • La startMigration API inicia el proceso de migración de mensajes estableciendo el modo de migración en InProgress para un canal o chat especificado.

Paso 2: Comprobación del estado de la migración

Llame a Get channel o Get chat para confirmar que el migrationMode estado está establecido en InProgress. Para más información, vea:

Nota:

La migrationMode marca solo está disponible actualmente en la versión beta.

Paso 3: Importar mensajes

Ahora puede importar mensajes back-in-time mediante la inclusión de las createdDateTime claves y from en el cuerpo de la solicitud.

Nota:

  • La API no admite los mensajes importados con una fecha y hora de creación anteriores a para createdDateTime el subproceso de mensaje.
  • createdDateTime debe ser único en todos los mensajes del mismo subproceso.
  • createdDateTime admite marcas de tiempo con precisión de milisegundos. Por ejemplo, si el mensaje de solicitud entrante se ha createdDateTime establecido en 2020-09-16T05:50:31.0025302Z, la API lo convierte en 2020-09-16T05:50:31.002Z al ingerir el mensaje.

Solicitud (mensaje POST que es de solo texto)

POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/messages

{
   "createdDateTime":"2019-02-04T19:58:15.511Z",
   "from":{
      "user":{
         "id":"id-value",
         "displayName":"John Doe",
         "userIdentityType":"aadUser"
      }
   },
   "body":{
      "contentType":"html",
      "content":"Hello World"
   }
}

Respuesta

HTTP/1.1 200 OK

{
   "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#teams('team-id')/channels('channel-id')/messages/$entity",
   "id":"id-value",
   "replyToId":null,
   "etag":"id-value",
   "messageType":"message",
   "createdDateTime":"2019-02-04T19:58:15.58Z",
   "lastModifiedDateTime":null,
   "deleted":false,
   "subject":null,
   "summary":null,
   "importance":"normal",
   "locale":"en-us",
   "policyViolation":null,
   "from":{
      "application":null,
      "device":null,
      "conversation":null,
      "user":{
         "id":"id-value",
         "displayName":"Joh Doe",
         "userIdentityType":"aadUser"
      }
   },
   "body":{
      "contentType":"html",
      "content":"Hello World"
   },
   "attachments":[
   ],
   "mentions":[
   ],
   "reactions":[
   ]
}

Mensaje de error

Recibirá el siguiente mensaje de error si establece la createdDateTime propiedad en una fecha y hora futuras.

400 Bad Request

Solicitud (mensaje POST con una imagen insertada)

Nota:

  • No hay ningún ámbito de permiso especial en este escenario, ya que la solicitud forma parte de chatMessage.
  • Los ámbitos de chatMessage se aplican aquí.
POST https://graph.microsoft.com/v1.0/teams/team-id/channels/channel-id/messages

{
  "body": {
        "contentType":"html",
        "content": "<div><div>\n<div><span><img height=\"250\" src=\"../hostedContents/1/$value\" width=\"176.2295081967213\" style=\"vertical-align:bottom; width:176px; height:250px\"></span>\n\n</div>\n\n\n</div>\n</div>"
    },
    "hostedContents":[
        {
            "@microsoft.graph.temporaryId":"1",
            "contentBytes": "iVBORw0KGgoAAAANSUhEUgAAANcAAAExCAYAAADvFzeeAAAXjklEQVR4Ae2d/XNU1RnH+9e0FFrA0RCIyaS8hRA0HV5KbS1gHRgVpjMClY4GHJ3yYm1HCmXaWttaaZUZtIIFKYi8lFAkvOQ9u5vN225IARVBbX9/Os9NbrLZbMjmhCfJPX5+2Lmb3T25y3O+n/M599x7w9f+++UXwoMakIF7n4GvUdR7X1RqSk01A8CFuZm5GGUAuIwKi72wF3ABF+YyygBwGRUWc2Eu4AIuzGWUAeAyKizmwlzABVyYyygDwGVUWMyFuYALuDCXUQaAy6iwmAtzARdwfWXMdeuzT+TGxz3Sfb1LunrapL07IW3pePDQ5/qavqef0c+OdYAELuAac4jGGkLL9rdvfyo9N9ODQAqBGmmrwGlb/R0u3xG4gMspOC5hG882CoRaaCSA8n1ff9doIQMu4PIOrus3u+8ZVNnw6e/Od5AALuDKOyz5hmqiPnfnzi1J9bSbgRWCpvvQfY307wQu4BoxJCOFaDK8rwsQmQsUIQhWW93XSIsewAVckYdLQ24F0Ui/926AARdwRRounZ6Np7GyYdN9DzdFBC7gijRc43GMlQ1U9s/6HXJNjYELuHI<<-----Removed----->>>>",
            "contentType": "image/png"
        }
    ]
}

Respuesta

HTTP/1.1 200 OK

{
    "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#teams('team-id')/channels('channel-id')/messages/$entity",
    "id":"id-value",
    "replyToId":null,
    "etag":"id-value",
    "messageType":"message",
    "createdDateTime": "2019-02-04T19:58:15.511Z",
    "lastModifiedDateTime":null,
    "deleted":false,
    "subject":null,
    "summary":null,
    "importance":"normal",
    "locale":"en-us",
    "policyViolation":null,
    "from": {
        "application":null,
        "device":null,
        "conversation":null,
        "user": {
            "id":"id-value",
            "displayName":"John Doe",
            "userIdentityType":"aadUser"
        }
    },
      "body": {
        "contentType":"html",
        "content":"<div><div>\n<div><span><img height=\"250\" src=\"https://graph.microsoft.com/teams/teamId/channels/channelId/messages/id-value/hostedContents/hostedContentId/$value\" width=\"176.2295081967213\" style=\"vertical-align:bottom; width:176px; height:250px\"></span>\n\n</div>\n\n\n</div>\n</div>"
    },
    "attachments":[],
    "mentions":[],
    "reactions":[]
}

Paso 4: Completar el modo de migración

Use la completeMigration API para finalizar el proceso de migración de los canales y chats nuevos y existentes. Para más información, vea:

Completar la migración de nuevos equipos y canales

Use la completeMigration API para completar la migración para el nuevo equipo y canal Esta acción abre el equipo y canalizará los recursos para su uso general por parte de los miembros del equipo. La acción se enlaza a la instancia team. Antes de completar la migración de mensajes de equipo, debe completar la migración en todos los canales.

Solicitud (modo de migración de canal final)

POST https://graph.microsoft.com/beta/teams/team-id/channels/channel-id/completeMigration

Respuesta

HTTP/1.1 204 NoContent

Solicitud (finalizar el modo de migración del equipo)

POST https://graph.microsoft.com/beta/teams/team-id/completeMigration

Respuesta

HTTP/1.1 204 NoContent

Agregar miembros del equipo

Después de completar la migración de mensajes externos, puede agregar un único miembro a un equipo mediante la interfaz de usuario de Teams.

También puede usar Microsoft Graph para agregar un solo miembro o agregar miembros de forma masiva.

Solicitud (agregar miembro)

POST https://graph.microsoft.com/beta/teams/{team-id}/members
Content-type:application/json
Content-length:30

{
   "@odata.type":"#microsoft.graph.aadUserConversationMember",
   "roles":[],
   "user@odata.bind":"https://graph.microsoft.com/beta/users/{user-id}"
}

Respuesta

HTTP/1.1 204 No Content

Una vez completado el nuevo equipo y la migración del canal, compruebe la finalización del modo de migración.

Nota:

La migrationMode marca solo está disponible actualmente en la versión beta, no en la versión V1.

Completar la migración del canal o chat existente

Para los canales o chats existentes que ya están en modo de migración, use la completeMigration API para marcar el estado de migración como completado. Este proceso garantiza que el canal o el chat permanezcan permanentemente disponibles en lugar de quitarse después de la migración.

Solicitud (completar la migración del canal existente)

POST https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/completeMigration
 

Respuesta

HTTP/1.1 204 NoContent

Solicitud (completar la migración de chat existente)

POST https://graph.microsoft.com/beta/chats/{chat-id}/completeMigration 

Respuesta

HTTP/1.1 204 NoContent

Opcional: Actualizar el historial de miembros del chat de grupo después de la migración

Cuando complete la migración de mensajes en un chat de grupo, puede actualizar opcionalmente el historial de recursos compartidos de los miembros mediante la visibleHistoryStartDateTime propiedad de Microsoft Graph. Esta propiedad establece la primera vez que un miembro del chat puede ver mensajes en una conversación. Si los mensajes importados son anteriores al valor de la propiedad, no aparecen a menos que actualice la propiedad.

Para actualizar la visibleHistoryStartDateTime propiedad:

  1. Quite el miembro del chat.
  2. Vuelva a agregar el miembro con un nuevo visibleHistoryStartDateTime que incluya los mensajes importados.
Ejemplo

Considere un escenario en el que el chat original se creó a las 10 p. m., se actualizó a la 1 a. m., los mensajes se importaron a las 9 a. m. y el historial de recursos compartidos del miembro A comienza a las 10 a. m. Para asegurarse de que el miembro A pueda ver los mensajes importados a las 9:00:

  1. Quite el miembro A del chat.
  2. Agregue el miembro A con la propiedad establecida antes de las visibleHistoryStartDateTime 9 a. m.

Paso 5: Comprobación de la finalización del modo de migración

Llame a Get channel (Obtener canal ) o Get chat (Obtener chat ) para comprobar que está migrationMode marcado como Completed.

Sugerencias e información adicional

  • Después de llamar a completeMigration en un canal o chat existente, puede seguir importando mensajes mediante la startMigration API.

  • Solo puede agregar miembros del equipo a los nuevos Teams después de que la completeMigration solicitud devuelva una respuesta correcta. Esta regla solo se aplica al equipo recién creado y al canal estándar.

  • Limitación: los mensajes se importan a cinco RPS por canal.

  • Si necesita corregir los resultados de la migración, debe eliminar Teams, repetir los pasos para crear teams y canal y volver a migrar los mensajes.

Nota:

Las imágenes insertadas son el único tipo de medio compatible con el esquema de la API de mensaje de importación.

Ejemplo de código

Ejemplo de nombre Descripción Node.js C# Python
Migración de chat de Graph Esta aplicación de ejemplo se puede usar para migrar mensajes históricos de plataformas externas a Teams. View View ND

Consulte también