Importar mensajes de plataformas de terceros a Teams con Microsoft Graph

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

Nota:

En el futuro, Microsoft puede solicitarle a usted o a sus clientes que paguen tarifas adicionales en función de la cantidad de datos que se importen.

Introducción a la importación

En un nivel alto, el proceso de importación consta de lo siguiente:

  1. Crear un equipo con una marca de tiempo back-in-time.
  2. Crear un canal con una marca de tiempo back-in-time.
  3. Importar mensajes externos con fecha de back-in-time.
  4. Completar el proceso de migración de equipos y canales.
  5. Agregar miembros del equipo.

Requisitos previos

Análisis y preparación de datos de mensajes

  • Revise los datos de terceros para decidir qué se 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 identificador.

Paso 1: Crear un equipo

Puesto que está migrando datos ya existentes, mantener las marcas de tiempo de los mensajes originales y evitar la actividad de mensajería durante el proceso de migración es clave para volver a crear el flujo de mensajes ya existente del usuario en Teams. Esto se consigue de la siguiente manera:

Cree un nuevo equipo con una marca de tiempo back-in-time mediante la propiedad createdDateTime de recursos de equipo. Coloque el nuevo equipo en migration mode, un estado especial que restringe a los usuarios de la mayoría de las actividades dentro del equipo hasta que se complete el proceso de migración. Incluya el atributo de instancia teamCreationMode con el valor migration en la solicitud POST para identificar explícitamente el nuevo equipo como creado para la migración.

Nota:

El campo createdDateTime solo se rellenará para las instancias de un equipo o canal que se han migrado.

Permiso

ScopeName DisplayName Descripción Tipo ¿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 /teams

Solicitud (crear un equipo en estado 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.

Paso 2: Crear un canal

La creación de un canal para los mensajes importados es similar al escenario de creación de equipo:

Cree un nuevo canal con una marca de tiempo de back-in-time mediante la propiedad createdDateTime de recursos del canal. Coloque el nuevo canal en migration mode, un estado especial que restringe a los usuarios de la mayoría de las actividades de chat dentro del canal hasta que se complete el proceso de migración. Incluya el atributo de instancia channelCreationMode con el valor migration en la solicitud POST para identificar explícitamente el nuevo equipo como creado para la migración.

Permiso

ScopeName DisplayName Descripción Tipo ¿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 /teams

Solicitud (crear un canal en estado 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.

Paso 3: Importar mensajes

Una vez creado el equipo y el canal, puede empezar a enviar mensajes en tiempo atrás mediante las createdDateTime claves y from en el cuerpo de la solicitud.

Nota:

  • No se admiten los mensajes importados con createdDateTime anteriores al subproceso de mensaje createdDateTime.
  • 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 tiene el valor de createdDateTime establecido como 2020-09-16T05:50:31.0025302Z, se convertiría a 2020-09-16T05:50:31.002Z cuando se ingiera 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":"Joh 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

400 Bad Request

Solicitud (PUBLICAR un mensaje con imagen alineada)

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": "Joh 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

Una vez completado el proceso de migración de mensajes, tanto el equipo como el canal se quitan del modo de migración mediante el completeMigration método . Este paso abre los recursos del equipo y del canal para que los usen los miembros del equipo con carácter general. La acción se enlaza a la instancia team. Antes de que el equipo finalice, todos los canales deben completarse fuera del modo de migración.

Solicitud (modo de migración de canal final)

POST https://graph.microsoft.com/v1.0/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/v1.0/teams/team-id/completeMigration

Respuesta

HTTP/1.1 204 NoContent

Acción llamada en team o channel que no esté en migrationMode.

Paso 5: Agregar miembros del equipo

Puede agregar un miembro a un equipo mediante la interfaz de usuario de Teams o la API de Microsoft Graph agregar miembros:

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

Sugerencias e información adicional

  • Una vez realizada la solicitud de completeMigration, no podrá importar más mensajes al equipo.

  • Solo puede agregar miembros del equipo al nuevo equipo después de que la solicitud de completeMigration haya devuelto una respuesta correcta.

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

  • Si necesita realizar una corrección en los resultados de la migración, debe eliminar el equipo, repetir los pasos para crear el equipo y el canal y volver a migrar los mensajes.

Nota:

Actualmente, las imágenes alineadas son el único tipo de medios admitidos por el esquema de la API de mensajes de importación.

Importar ámbito de contenido

En la tabla siguiente se proporciona el ámbito de contenido:

Dentro del ámbito Actualmente fuera del ámbito
Mensajes de equipo y canal Mensajes de chat de grupo y 1:1
Hora de creación del mensaje original Canales privados
Imágenes alineadas como parte del mensaje En menciones
Vínculos a archivos ya existentes en SPO o OneDrive Reacciones
Mensajes con texto enriquecido Vídeos
Cadena de respuesta de mensajes Anuncios
Procesamiento de alto rendimiento Fragmentos de código
Adhesivos
Emojis
Ofertas
Publicaciones cruzadas entre canales
Canales compartidos

Consulte también