

# Conexión a Zendesk
<a name="connecting-to-data-zendesk"></a>

Zendesk es una solución de administración de centro de ayuda basada en la nube que ofrece herramientas personalizables para crear un portal de atención al cliente, una base de conocimientos y comunidades en línea.

**Topics**
+ [Compatibilidad de AWS Glue con Zendesk](zendesk-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](zendesk-configuring-iam-permissions.md)
+ [Configuración de Zendesk](zendesk-configuring.md)
+ [Configuración de las conexiones a Zendesk](zendesk-configuring-connections.md)
+ [Lectura desde entidades de Zendesk](zendesk-reading-from-entities.md)
+ [Opciones de conexión a Zendesk](zendesk-connection-options.md)
+ [Limitaciones](zendesk-limitations.md)

# Compatibilidad de AWS Glue con Zendesk
<a name="zendesk-support"></a>

AWS Glue es compatible con Zendesk de la siguiente manera:

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

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

**Versiones compatibles de la API de Zendesk**  
Las siguientes versiones de la API de Zendesk son compatibles
+ v2

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

En el siguiente ejemplo de política se describen los permisos de AWS IAM 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": "*"
    }
  ]
}
```

------

Si no desea utilizar el método anterior, puede utilizar las siguientes políticas de IAM administradas:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): da acceso a recursos que precisan 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): otorga 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 Zendesk
<a name="zendesk-configuring"></a>

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

## Requisitos mínimos
<a name="zendesk-configuring-min-requirements"></a>

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Zendesk. Para obtener más información, consulte [Creación de una cuenta de Zendesk](#zendesk-configuring-creating-account).
+ La cuenta de Zendesk debe estar habilitada para el acceso de la API.
+ Su cuenta de Zendesk le permite instalar aplicaciones conectadas.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Zendesk.

## Creación de una cuenta de Zendesk
<a name="zendesk-configuring-creating-account"></a>

Para crear una cuenta de Zendesk:

1. Vaya a https://www.zendesk.com/in/register/

1. Introduzca los detalles, como su correo electrónico laboral, nombre, apellido, número de teléfono, cargo, nombre de la empresa, número de empleados de la empresa, contraseña e idioma preferido. A continuación, elija **Completar la inscripción de prueba**.

1. Después de que se cree la cuenta, complete el enlace de verificación que recibió para verificar su dirección de correo electrónico.

1. Una vez verificada la dirección de correo electrónico laboral, se le redirigirá a su cuenta de Zendesk. Elija la **opción Comprar Zendesk** para el plan de su elección. Nota: para el conector de Zendesk, se recomienda comprar el plan Suite Enterprise.

## Creación de una aplicación cliente y credenciales de OAuth 2.0
<a name="zendesk-configuring-creating-client-app"></a>

Para crear una aplicación cliente y credenciales de OAuth 2.0:

1. Inicie sesión en su cuenta de Zendesk donde desea que se cree la aplicación OAuth 2.0: https://www.zendesk.com/in/login/

1. Haga clic en el ícono del engranaje. Elija el enlace **Ir al centro de administración** para abrir la página del centro de administración.

1. Elija **Aplicaciones e integraciones** en la barra lateral izquierda y seleccione **API**>**API de Zendesk**.

1. En la página de la API de Zendesk, seleccione la pestaña **Clientes de OAuth**.

1. Elija **Añadir cliente de OAuth** en el lado derecho.

1. Complete los siguientes campos para crear un cliente:

   1. Nombre de cliente: especifique un nombre para la aplicación. Este es el nombre que verán los usuarios cuando se les pida que otorguen acceso a su aplicación y cuando consulten la lista de aplicaciones de terceros que tienen acceso a su cuenta de Zendesk.

   1. Descripción: opcional. Una breve descripción de la aplicación que los usuarios verán cuando se les pida que concedan acceso a ella.

   1. Empresa: opcional. El nombre de la empresa que verán los usuarios cuando se les pida que concedan acceso a su aplicación. La información les puede ayudar a entender a quién están concediendo el acceso.

   1. Logotipo: opcional. El logotipo que verán los usuarios cuando se les pida que concedan acceso a su aplicación. La imagen puede ser JPG, GIF o PNG. Para obtener mejores resultados, cargue una imagen cuadrada. Se ajustará el tamaño para adaptarlo a la página de autorización.

   1. Identificador único: el campo se completa automáticamente con una versión reformateada del nombre que introdujo para la aplicación. Si lo desea, puede cambiarlo.

   1. URL de redireccionamiento: introduzca la URL o las URL que Zendesk debe usar para enviar la decisión del usuario de conceder el acceso a su aplicación.

      Por ejemplo: https://us-east-1.console.aws.amazon.com/gluestudio/oauth

1. Haga clic en **Guardar**.

1. Cuando la página se actualice, aparecerá un nuevo campo **Secreto** completado previamente en la parte inferior. Es el valor “client\$1secret” especificado en la especificación de OAuth2. Copie el valor Secreto en su portapapeles y guárdelo en un lugar seguro. Nota: Es posible que los caracteres sobrepasen el ancho del cuadro de texto, así que asegúrese de seleccionarlos todos antes de copiarlos.

1. Haga clic en **Guardar**.

# Configuración de las conexiones a Zendesk
<a name="zendesk-configuring-connections"></a>

El conector de Zendesk admite el tipo de concesión Código de autorización.
+ Este tipo de concesión se considera un OAuth de “tres vías”, ya que se basa en redirigir a los usuarios a un 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 (aplicación cliente administrada por AWS Glue) en la que no necesita proporcionar ninguna información relacionada con OAuth, excepto la URL de la instancia de Zendesk. La consola de AWS Glue redirigirá al usuario a Zendesk, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Zendesk.
+ Aún puede optar por crear una aplicación conectada propia en Zendas 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 se abrirá Zendesk 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 acceso. El token de acceso nunca caduca.

Si desea consultar la documentación pública de Zendesk sobre la creación de una aplicación conectada para el flujo Authorization Code OAuth, consulte [Tokens OAuth para tipos de concesión](https://developer.zendesk.com/api-reference/ticketing/oauth/grant_type_tokens/).

Para configurar una conexión a Freshdesk:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para el tipo de concesión AuthorizationCode: en el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`.

   1. Nota: Debe crear un secreto por cada conexión en AWS Glue.

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

   1. Al seleccionar un **Tipo de conexión**, elija Zendesk.

   1. Proporcione la INSTANCE\$1URL del Zendesk al que se desea conectar.

   1. Proporcione el entorno de Zendesk.

   1. Seleccione el rol de AWS 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. 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`.

# Lectura desde entidades de Zendesk
<a name="zendesk-reading-from-entities"></a>

**Requisito previo**

Un objeto de Zendesk desde el que desea leer. Necesitará el nombre del objeto, como el ticket, el usuario o el artículo, tal y como se indica en la siguiente tabla.


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Ticket | Y | Y | Y | Y | N | 
| Usuario | Y | Y | Y | Y | N | 
| Organización | Y | Y | Y | Y | N | 
| Artículo | Y | Y | N | Y | N | 
| Evento de ticket | Y | Y | N | Y | N | 
| Evento de métrica de tickets | Y | Y | N | Y | N | 
| Comentario de tickets | Y | Y | Y | Y | N | 
| Campo de tickets | Y | Y | N | Y | N | 
| Métrica de tickets | Y | Y | N | Y | N | 
| Actividad de tickets | Y | Y | N | Y | N | 
| Omisión de tickets | N | Y | N | Y | N | 
| Grupo | Y | Y | Y | Y | N | 
| Pertenencia a grupos | N | Y | Y | Y | N | 
| Calificación de satisfacción | Y | Y | N | Y | N | 
| Visualización | Y | Y | Y | Y | N | 
| Desencadenador | Y | Y | Y | Y | N | 
| Categoría de activación | N | Y | Y | Y | N | 
| Macro | Y | Y | Y | Y | N | 
| Automatización | N | Y | Y | Y | N | 

**Ejemplo:**

```
Zendesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="Zendesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "Account",
        "API_VERSION": "v2"
    }
```

**Detalles de las entidades y los campos de Zendesk**:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/zendesk-reading-from-entities.html)

**nota**  
Los tipos de datos de estructura y lista se convierten en tipos de datos de cadena en respuesta al conector.

## Consultas de partición
<a name="zendesk-reading-partitioning-queries"></a>

Zendesk no admite particiones.

# Opciones de conexión a Zendesk
<a name="zendesk-connection-options"></a>

Existen las siguientes opciones para establecer conexión con Zendesk:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Zendesk.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de REST de Zendesk que desea usar. Por ejemplo: v2.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto. Por ejemplo: id, name, url, created\$1at
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL. Por ejemplo: group\$1id = 100
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL. Por ejemplo: “SELECT id,url FROM users WHERE role=\$1"end-user\$1"”
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. El campo predeterminado es `update_at` para las entidades que admiten la API de exportación incremental (`created_at` para `ticket-events` y `time` para `ticket-metric-events`).
+ `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. Opcional; el conector gestionará esta opción si no se incluye en la opción de trabajo. Valor predeterminado: 2024-05-01T20:55:02.000Z
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. Opcional; el conector gestionará esta opción si no se incluye en la opción de trabajo. Valor predeterminado: 1.
+ `IMPORT_DELETED_RECORDS`(cadena): predeterminado: FALSO. Se usa para leer. Para obtener los registros eliminados durante la consulta.
+ `ACCESS_TOKEN`: token de acceso que se utilizará en la solicitud.
+ `INSTANCE_URL`: URL de la instancia en la que el usuario quiere ejecutar las operaciones. Por ejemplo, https://\$1subdomain\$1/.zendesk.com

# Limitaciones
<a name="zendesk-limitations"></a>

El conector de Zendesk presenta las siguientes limitaciones:
+ La paginación basada en el desplazamiento limita el número de páginas que se pueden solicitar a 100, pero no se recomienda, ya que el número total de registros que se pueden solicitar es de 10 000. Sin embargo, la paginación basada en el cursor que se implementa para el conector de Zendesk supera esta limitación. La API de Zendesk solo admite el operador de filtro EQUAL\$1TO.

  Debido a esta limitación, el conector de Zendesk no admite la partición.
+ Para la entidad “Evento de ticket”, el límite de frecuencia es de 10 solicitudes por minuto. Al ejecutar un trabajo de ETL de AWS Glue, es posible que reciba un error 429 (demasiadas solicitudes).