

# Conexión a Microsoft Teams
<a name="connecting-to-microsoft-teams"></a>

 Microsoft Teams es un espacio de trabajo colaborativo dentro de Microsoft 365 que funciona como un centro para conversaciones laborales, trabajo en equipo, videollamadas y uso compartido de documentos, todo diseñado para mejorar la productividad con un conjunto unificado de herramientas. 

**Topics**
+ [Compatibilidad de AWS Glue con Microsoft Teams](microsoft-teams-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](microsoft-teams-configuring-iam-permissions.md)
+ [Configuración de Microsoft Teams](microsoft-teams-configuring.md)
+ [Configuración de las conexiones de Microsoft Teams](microsoft-teams-configuring-connections.md)
+ [Lectura de entidades de Microsoft Teams](microsoft-teams-reading-from-entities.md)
+ [Referencia de opciones de conexión de Microsoft Teams](microsoft-teams-connection-options.md)
+ [Limitaciones](microsoft-teams-connector-limitations.md)
+ [Cómo crear una nueva cuenta de Microsoft Teams:](#microsoft-teams-account-creation)

# Compatibilidad de AWS Glue con Microsoft Teams
<a name="microsoft-teams-support"></a>

AWS Glue es compatible con Microsoft Teams de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Microsoft Teams.

**¿Es compatible como destino?**  
No.

**Versiones de la API de Microsoft Teams compatibles**  
 v1. Para conocer la compatibilidad de entidades por versión específica, consulte Entidades compatibles para el origen. 

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="microsoft-teams-configuring-iam-permissions"></a>

 En el siguiente ejemplo de política se describen los permisos de AWS necesarios para crear y utilizar conexiones. Si va a crear un nuevo rol, cree una política que contenga lo siguiente: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, CloudWatch Logs y Amazon EC2. Si aplica la convención de nomenclatura en los recursos especificados en esta política, los procesos de AWS Glue tienen los permisos necesarios. Normalmente, esta política se asocia a los roles que se especifican a la hora de definir rastreadores, trabajos y puntos de conexión de desarrollo. 
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acceso total a los recursos de AWS Glue cuando una identidad a la que está asociada la política utiliza la consola de administración de AWS. Si sigue la convención de nomenclatura para los recursos especificados en esta política, los usuarios dispondrán de todas las funciones de la consola. Esta política se suele adjuntar a los usuarios de la consola AWS Glue. 

# Configuración de Microsoft Teams
<a name="microsoft-teams-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Microsoft Teams, deberá cumplir estos requisitos:

## Requisitos mínimos
<a name="microsoft-teams-configuring-min-requirements"></a>
+  Tener una cuenta de desarrollador de Microsoft Teams con correo electrónico y contraseña. Para obtener más información, consulte [Cómo crear una nueva cuenta de Microsoft Teams:](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 
+  Haber configurado una aplicación OAuth2 en la cuenta de Microsoft que proporcione las credenciales de ID y secreto de cliente que AWS Glue utiliza para acceder a los datos de forma segura cuando hace llamadas autenticadas a la cuenta. Para obtener más información, consulte [Cómo crear una nueva cuenta de Microsoft Teams:](connecting-to-microsoft-teams.md#microsoft-teams-account-creation). 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Microsoft Teams. Si se trata de una conexión típica, no necesita hacer nada más en Microsoft Teams. 

# Configuración de las conexiones de Microsoft Teams
<a name="microsoft-teams-configuring-connections"></a>

Microsoft Teams admite los siguientes dos tipos de mecanismos de autenticación:

1.  Autenticación OAuth: Microsoft Teams admite el tipo de concesión AUTHORIZATION\$1CODE para OAuth2. 
   +  Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. El usuario que crea una conexión puede, de forma predeterminada, confiar en una aplicación conectada propiedad de AWS Glue en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Microsoft Teams. La consola de AWS Glue redirigirá al usuario a Microsoft Teams, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a su instancia de Microsoft Teams. 
   +  Los usuarios aún pueden optar por crear una aplicación conectada propia en Microsoft Teams y proporcionar un ID y secreto de cliente propios al crear conexiones a través de la consola de AWS Glue. En este escenario, aún serán redirigidos a Microsoft Teams para iniciar sesión y autorizar a AWS Glue para que acceda a los recursos. 
   +  Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso permanecerá válido durante una hora y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 
   +  Para consultar la documentación pública de Microsoft Teams sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte \$1 Microsoft Learn. [Registre una aplicación en la plataforma de identidades de Microsoft: Microsoft Graph](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 

Para configurar una conexión a Microsoft Teams:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para la autenticación OAuth: 
      +  En el caso de aplicaciones conectadas administradas por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con USER\$1MANAGED\$1CLIENT\$1APPLICATION\$1CLIENT\$1SECRET como clave. 

1. En AWS Glue Studio, cree una conexión en **Conexiones de datos** según los pasos que se indican a continuación: 

   1.  En Conexiones de datos, elija **Crear conexión**. 

   1. Al seleccionar un **Origen de datos**, seleccione Microsoft Teams.

   1. Proporcione el **ID de inquilino** de Microsoft Teams.

   1.  Seleccione el rol de IAM que AWS Glue pueda asumir y que tenga permisos para las siguientes acciones: 

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  Proporcione el ID de cliente de la aplicación cliente administrada por el usuario de la aplicación Microsoft Teams. 

   1.  Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens. 

   1.  Seleccione las opciones de red si quiere usar su red. 

1.  Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`. Elija **Siguiente**. 

1.  En la configuración de su trabajo de AWS Glue, proporcione `connectionName` como **Conexión de red adicional**. 

# Lectura de entidades de Microsoft Teams
<a name="microsoft-teams-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Microsoft Teams desde el que desea leer. Necesitará el nombre del objeto, como equipo o channel-message. En la siguiente tabla se muestran las entidades admitidas. 

 **Entidades admitidas para el origen** 

 Todas las entidades se admiten con la versión 1.0 de la API. 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Equipos | No | No | No | Sí | No | 
| Miembros del equipo | Sí | Sí | No | Sí | Sí | 
| Grupos | Sí | Sí | Sí | Sí | Sí | 
| Miembro del grupo | Sí | Sí | No | Sí | No | 
| Canales | Sí | No | No | Sí | Sí | 
| Mensaje del canal | No | Sí | No | Sí | No | 
| Respuestas a los mensajes del canal | No | Sí | No | Sí | No | 
| Pestañas de canales | Sí | No | No | Sí | No | 
| Chats | Sí | Sí | Sí | Sí | Sí | 
| Eventos del calendario | Sí | Sí | Sí | Sí | Sí | 

 **Ejemplo** 

```
MicrosoftTeams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "company",
        "API_VERSION": "v1.0"
    }
```

## Detalles de entidades y campos de Microsoft Teams
<a name="microsoft-teams-entity-and-field-details"></a>

 Lista de entidades: 
+  Equipo: [ https://docs.microsoft.com/en-us/graph/api/user-list-joinedteams?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/user-list-joinedteams?view=graph-rest-1.0) 
+  Miembro del equipo: [ https://docs.microsoft.com/en-us/graph/api/team-list-members?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/team-list-members?view=graph-rest-1.0) 
+  Grupo: [ https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0) 
+  Miembro del grupo: [ https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0) 
+  Canal: [ https://docs.microsoft.com/en-us/graph/api/channel-list?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/channel-list?view=graph-rest-1.0) 
+  Mensaje del canal: [ https://docs.microsoft.com/en-us/graph/api/channel-list-messages?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/channel-list-messages?view=graph-rest-1.0) 
+  Respuesta a mensaje del canal: [ https://docs.microsoft.com/en-us/graph/api/chatmessage-list-replies?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/chatmessage-list-replies?view=graph-rest-1.0) 
+  Pestaña del canal: [ https://docs.microsoft.com/en-us/graph/api/channel-list-tabs?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/channel-list-tabs?view=graph-rest-1.0) 
+  Chat: [ https://docs.microsoft.com/en-us/graph/api/chat-list?view=graph-rest-1.0 ]( https://docs.microsoft.com/en-us/graph/api/chat-list?view=graph-rest-1.0) 
+  Evento del calendario: [ https://docs.microsoft.com/en-us/graph/api/group-list-events?view=graph-rest-1.0 ](https://docs.microsoft.com/en-us/graph/api/group-list-events?view=graph-rest-1.0) 

 **Consultas de partición** 

 Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente. 
+  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
+  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

   Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
+  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`: el número de particiones. 

 Los detalles de compatibilidad del campo de partición por entidad se muestran en la siguiente tabla: 


| Nombre de la entidad | Campos de partición | Tipo de datos | 
| --- | --- | --- | 
| Miembros del equipo | visibleHistoryStartDateTime | DateTime | 
| Grupos | createdDateTime | DateTime | 
| Canales | createdDateTime | DateTime | 
| Chats | createdDateTime, lastModifiedDateTime | DateTime | 
| Eventos del calendario | createdDateTime, lastModifiedDateTime, originalStart | DateTime | 

 **Ejemplo** 

```
microsoftteams_read = glueContext.create_dynamic_frame.from_options(
    connection_type="MicrosoftTeams",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "group",
        "API_VERSION": "v1.0",
        "PARTITION_FIELD": "createdDateTime"
        "LOWER_BOUND": "2022-07-13T07:55:27.065Z"
        "UPPER_BOUND": "2022-08-12T07:55:27.065Z"
        "NUM_PARTITIONS": "2"
    }
```

# Referencia de opciones de conexión de Microsoft Teams
<a name="microsoft-teams-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Microsoft Teams:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Microsoft Teams. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Microsoft Teams que desea utilizar. Ejemplo: v1.0. 
+  `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto. 
+  `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL. 
+  `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 

# Limitaciones
<a name="microsoft-teams-connector-limitations"></a>

El conector de Microsoft Teams presenta las siguientes limitaciones:
+  La API de Microsoft Teams devuelve una cantidad de registros inferior a la especificada para las entidades de chat y miembros del equipo. Se ha informado de este problema a Microsoft Teams Support y está en proceso de investigación. 

## Cómo crear una nueva cuenta de Microsoft Teams:
<a name="microsoft-teams-account-creation"></a>

1.  Vaya a la página de inicio de Microsoft Teams, [https://account.microsoft.com/account/](https://account.microsoft.com/account/), y elija **Iniciar sesión**. 

1.  Elija **Crear una**. 

1.  Ingrese la información requerida para la creación de la cuenta y cree una nueva cuenta. 

1.  Vaya al sitio web de Microsoft Teams: [https://www.microsoft.com/en-in/microsoft-teams/log-in](https://www.microsoft.com/en-in/microsoft-teams/log-in). 

1.  Regístrese con la cuenta de Microsoft que acaba de crear. 

1.  Después de registrarse correctamente en Teams, vaya a [https://account.microsft.com/services](https://account.microsft.com/services). 

1.  Elija **Probar Microsoft 365**. 

1.  Active una de las siguientes suscripciones de Microsoft 365 o Microsoft Teams para acceder a todas las características necesarias del conector de Microsoft Teams: 
   + Microsoft Teams Essentials
   + Microsoft 365 Business
   + Microsoft 365 Business Basic
   + Microsoft 365 Business Standard
   + Microsoft 365 Business Premium

**Cómo crear una aplicación cliente administrada:**

1.  Para crear una aplicación administrada, debe registrar una nueva aplicación OAuth en Microsoft Entra (anteriormente Azure Active Directory): 

1.  Inicie sesión en el [Centro de administración de Microsoft Entra](https://entra.microsoft.com). 

1.  Si tiene acceso a varios inquilinos, utilice el icono de Configuración en el menú superior para cambiar al inquilino en el que desea registrar la aplicación desde el menú Directorios \$1 suscripciones. 

1.  Vaya a Identidad > Aplicaciones > Registros de aplicaciones y seleccione **Nuevo registro**. 

1. Ingrese un Nombre de visualización para la aplicación.

1.  Especifique quién puede usar la aplicación en la sección Tipos de cuenta admitidos. Para que esta aplicación sea global, seleccione “Cuentas en cualquier directorio organizacional” o “Cuentas en cualquier directorio organizacional y cuentas personales de Microsoft”. 

1.  Ingrese el URI de redirección `https://{region}.console.aws.amazon.com/appflow/oauth`. Por ejemplo, en el caso de `us-west-2 region`, agregue `https://us-west-2.console.aws.amazon.com/appflow/oauth`. Puede agregar varias URL para las diferentes regiones que desea utilizar.

1.  Registre la aplicación. 

1.  Anote el ID de cliente para usarlo más adelante. 

1.  Seleccione **Agregar un certificado o secreto** en la sección Esenciales. 

1.  Seleccione **Nuevo secreto de cliente**. 

1.  Ingrese la descripción y la duración del vencimiento. 

1.  Copie y guarde el secreto de cliente para usarlo después. 

1.  En la lista del menú lateral izquierdo, seleccione **Permisos de API**. 

1.  Elija **Agregar un permiso**. 

1.  Seleccione “Microsoft Graph”. 

1.  Seleccione “Permisos delegados”. 

1.  Marque todos los permisos que aparecen a continuación: 
   + User.Read
   + Offline\$1access
   + User.Read.All
   + User.ReadWrite.All
   + TeamsTab.ReadWriteForTeam
   + TeamsTab.ReadWriteForChat
   + TeamsTab.ReadWrite.All
   + TeamsTab.Read.All
   + TeamSettings.ReadWrite.All
   + TeamSettings.Read.All
   + TeamMember.ReadWrite.All
   + TeamMember.Read.All
   + Team.ReadBasic.All
   + GroupMember.ReadWrite.All
   + GroupMember.Read.All
   + Group.ReadWrite.All
   + Group.Read.All
   + Directory.ReadWrite.All
   + Directory.Read.All
   + Directory.AccessAsUser.All
   + Chat.ReadWrite
   + Chat.ReadBasic
   + Chat.Read
   + ChannelSettings.ReadWrite.All
   + ChannelSettings.Read.All
   + ChannelMessage.Read.All
   + Channel.ReadBasic.All

1.  Elija **Añadir permisos**. La aplicación se ha configurado correctamente. Puede utilizar el ID de cliente y el secreto de cliente para crear una nueva conexión. Para obtener más información, consulte [https://learn.microsoft.com/en-us/graph/auth-register-app-v2](https://learn.microsoft.com/en-us/graph/auth-register-app-v2). 