

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à Freshdesk
<a name="connecting-to-data-freshdesk"></a>

Freshdesk est un logiciel de support client cloud qui est à la fois riche en fonctionnalités et facile à utiliser. Grâce aux multiples canaux d’assistance disponibles, notamment le chat en direct, le courrier électronique, le téléphone et les médias sociaux, vous pouvez aider les clients par le biais de leur méthode de communication préférée. Si vous êtes un utilisateur de Freshdesk, vous pouvez vous connecter AWS Glue à votre compte Freshdesk. Vous pouvez utiliser Freshdesk comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer des données de Freshdesk vers AWS des services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Freshdesk](freshdesk-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](freshdesk-configuring-iam-permissions.md)
+ [Configuration de Freshdesk](freshdesk-configuring.md)
+ [Configuration de connexions Freshdesk](freshdesk-configuring-connections.md)
+ [Lecture à partir d’entités Freshdesk](freshdesk-reading-from-entities.md)
+ [Options de connexion Freshdesk](freshdesk-connection-options.md)
+ [Restrictions et remarques relatives au connecteur Freshdesk](freshdesk-connector-limitations.md)

# AWS Glue support pour Freshdesk
<a name="freshdesk-support"></a>

AWS Glue prend en charge Freshdesk comme suit :

**Prise en charge en tant que source ?**  
Oui : synchrone et asynchrone. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Freshdesk.

**Prise en charge en tant que cible ?**  
Non.

**Versions de l’API Freshdesk prises en charge**  
Les versions d’API Freshdesk suivantes sont prises en charge :
+   v2

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="freshdesk-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

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

****  

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

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console.

# Configuration de Freshdesk
<a name="freshdesk-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Freshdesk, vous devez satisfaire aux exigences suivantes :

## Configuration requise
<a name="freshdesk-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Un compte Freshdesk. Vous pouvez choisir entre les éditions Free, Growth, Pro ou Enterprise.
+ Clé d’API d’un utilisateur de Freshdesk.

# Configuration de connexions Freshdesk
<a name="freshdesk-configuring-connections"></a>

Freshdesk prend en charge l’authentification personnalisée.

Pour consulter la documentation publique de Freshdesk sur la génération des clés d’API requises pour une authentification personnalisée, consultez [Freshdesk authentication](https://developer.freshdesk.com/api/#authentication).

Voici les étapes à suivre pour configurer la connexion Freshdesk :
+ Dans AWS Secrets Manager, créez un secret avec les informations suivantes :
  + Pour l’application connectée gérée par le client : le secret doit contenir la clé d’API de l’application connectée avec `apiKey` comme clé. Notez que vous devez créer un secret par connexion dans AWS Glue.
+ Dans le AWS Glue Studio, créez une connexion sous **Connexions de données** en suivant les étapes ci-dessous :
  + Lorsque vous sélectionnez une **source de données**, sélectionnez Freshdesk.
  + Indiquez l’`INSTANCE_URL` de l’instance Freshdesk à laquelle vous souhaitez vous connecter.
  + Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer les actions suivantes et qui dispose des autorisations nécessaires pour les actions suivantes :

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

****  

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

------
  + Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.
  + Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.
+ Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.
+ Dans la configuration de votre AWS Glue tâche, fournissez `connectionName` une **connexion réseau supplémentaire**.

# Lecture à partir d’entités Freshdesk
<a name="freshdesk-reading-from-entities"></a>

**Prérequis**

Un objet Freshdesk à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source de synchronisation** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Agents | Oui | Oui | Non | Oui | Oui | 
| Business Hours | Non | Oui | Non | Oui | Oui | 
| Société | Oui | Oui | Non | Oui | Oui | 
| Contacts | Oui | Oui | Non | Oui | Oui | 
| Conversations | Non | Oui | Non | Oui | Non | 
| Email Configs | Non | Oui | Non | Oui | Non | 
| Email Inboxes | Oui | Oui | Oui | Oui | Non | 
| Forum Categories | Non | Oui | Non | Oui | Non | 
| Forums | Non | Oui | Non | Oui | Non | 
| Groupes | Non | Oui | Non | Oui | Non | 
| Produits | Non | Oui | Non | Oui | Non | 
| Roles | Non | Oui | Non | Oui | Non | 
| Satisfaction Ratings | Oui | Oui | Non | Oui | Non | 
| Skills | Non | Oui | Non | Oui | Non | 
| Solutions | Oui | Oui | Non | Oui | Non | 
| Enquêtes | Non | Oui | Non | Oui | Non | 
| Tickets | Oui | Oui | Oui | Oui | Oui | 
| Time Entries | Oui | Oui | Non | Oui | Non | 
| Rubriques | Non | Oui | Non | Oui | Non | 
| Topic Comments | Non | Oui | Non | Oui | Non | 

**Entités prises en charge pour la source asynchrone** :


| Entité | Version de l’API | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | --- | 
| Companies |   v2 | Non | Non | Non | Non | Non | 
| Contacts |   v2 | Non | Non | Non | Non | Non | 

**Exemple :**

```
freshdesk_read = glueContext.create_dynamic_frame.from_options(
    connection_type="freshdesk",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v2"
    }
```

**Détails des entités et des champs Freshdesk** :


| Entité | Champ | 
| --- | --- | 
| Agents | https://developers.freshdesk.com/api/\$1list\$1all\$1agents | 
| Business-hours | https://developers.freshdesk.com/api/\$1list\$1all\$1business\$1hours | 
| Commentaires | https://developers.freshdesk.com/api/\$1comment\$1attributess | 
| Société | https://developers.freshdesk.com/api/\$1companies | 
| Contacts | https://developers.freshdesk.com/api/\$1list\$1all\$1contacts | 
| Conversations | https://developers.freshdesk.com/api/\$1list\$1all\$1ticket\$1notes | 
| Email-configs | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1configs | 
| Email-inboxes | https://developers.freshdesk.com/api/\$1list\$1all\$1email\$1mailboxes | 
| Forum-categories | https://developers.freshdesk.com/api/\$1category\$1attributes | 
| Forums | https://developers.freshdesk.com/api/\$1forum\$1attributes | 
| Groupes | https://developers.freshdesk.com/api/\$1list\$1all\$1groups | 
| Produits | https://developers.freshdesk.com/api/\$1list\$1all\$1products | 
| Roles | https://developers.freshdesk.com/api/\$1list\$1all\$1roles | 
| Satisfaction-rating | https://developers.freshdesk.com/api/\$1view\$1all\$1satisfaction\$1ratingss | 
| Skills | https://developers.freshdesk.com/api/\$1list\$1all\$1skills | 
| Solutions | https://developers.freshdesk.com/api/\$1solution\$1content | 
| Enquêtes | https://developers.freshdesk.com/api/\$1list\$1all\$1survey | 
| Tickets | https://developers.freshdesk.com/api/\$1list\$1all\$1tickets | 
| Time-entries | https://developers.freshdesk.com/api/\$1list\$1all\$1time\$1entries | 
| Rubriques | https://developers.freshdesk.com/api/\$1topic\$1attributes | 

## Requêtes de partitionnement
<a name="freshdesk-reading-partitioning-queries"></a>

**Partitionnement basé sur des filtres** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons le format d’horodatage Spark utilisé dans les requêtes SQL Spark.

  Exemples de valeurs valides :

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
freshDesk_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshdesk",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v2",
         "PARTITION_FIELD": "Created_Time"
         "LOWER_BOUND": " 2024-10-27T23:16:08Z“
         "UPPER_BOUND": " 2024-10-27T23:16:08Z"
         "NUM_PARTITIONS": "10"
     }
```

# Options de connexion Freshdesk
<a name="freshdesk-connection-options"></a>

Les options de connexion pour Freshdesk sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Freshdesk.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Freshdesk que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Une URL d’instance Freshdesk valide.
+ `TRANSFER_MODE`(Chaîne) - Utilisé pour indiquer si le type de traitement tel que `SYNC` ou `ASYNC` est défini sur `SYNC` par défaut. (Facultatif)

# Restrictions et remarques relatives au connecteur Freshdesk
<a name="freshdesk-connector-limitations"></a>

Voici les restrictions ou les remarques relatives au connecteur Freshdesk :
+ Les entités `Company`, `Contacts` et `Tickets` avec filtrage ont des limites de pagination. Elles ne renvoient que 30 enregistrements par page et la valeur de la page peut être définie jusqu’à 10 (pour un maximum de 300 enregistrements).
+ L’entité `Tickets` ne récupère pas les enregistrements datant de plus de 30 jours.
+ Les entités `Company`, `Contacts` et `Tickets` prennent en charge le type de données « Date » dans le filtrage. Vous devez sélectionner les fréquences de déclenchement « Quotidiennes » et suivantes pour ces trois entités. Si vous sélectionnez « Minutes » ou « Horaire », vous risquez de dupliquer les données. De plus, lors de la sélection de ces champs pour le filtrage, seule la valeur de date doit être sélectionnée, car elle ne prendra en compte que la partie Date de l’horodatage sélectionné.
+ Le nombre d’appels d’API par minute dépend de votre forfait. Cette limite est appliquée à l’ensemble du compte, indépendamment de facteurs tels que le nombre d’agents ou d’adresses IP utilisés pour passer les appels. Pour tous les utilisateurs de la version d’essai, la limite d’API par défaut est de 50 appels/minute. Pour plus d’informations, consultez [Freshdesk](https://developer.freshdesk.com/api/#ratelimit).
+ Pour chaque entité, un seul Export/Async Job est traité à la fois. Une nouvelle tâche ne sera traitée que lorsque la tâche existante aura abouti ou échoué. Pour plus d’informations, consultez [Freshdesk](https://developers.freshdesk.com/api/#export_contact).
+ Les champs suivants sont pris en charge pour les appels d'API de synchronisation, mais ne doivent pas supported/allowed être transmis dans le corps de la demande d'API asynchrone.
  + id
  + created\$1at
  + updated\$1at
  + updated\$1since
  + actif
  + company\$1id
  + other\$1companies
  + avatar
  + view\$1all\$1tickets
  + deleted
  + other\$1emails
  + state
  + balise
  + tags