Intégration de Salesforce avec des API externes

Partagez cet article

Objectifs

  • Comprendre les bases de l’intégration de Salesforce avec des API externes.
  • Apprendre à configurer une connexion sécurisée avec une API externe.
  • Apprendre à effectuer des appels API REST depuis Salesforce.
  • Comprendre comment gérer les réponses API et manipuler les données dans Salesforce.

Prérequis

  • Un compte Salesforce. Vous pouvez en créer un gratuitement sur Salesforce Developer.
  • Connexion à votre compte Salesforce.
  • Connaissance de base des concepts API REST et du langage Apex.

1. Introduction à l’intégration avec des API externes

L’intégration de Salesforce avec des API externes permet aux entreprises de connecter Salesforce à d’autres systèmes, applications ou services pour échanger des données et automatiser des processus. Les intégrations peuvent être utilisées pour synchroniser des données, envoyer des notifications, récupérer des informations externes, etc.

2. Configuration d’une connexion sécurisée

Utilisation de Named Credentials

Les Named Credentials simplifient la gestion des identifiants pour les appels externes en stockant les informations d’authentification dans Salesforce.

  1. Créer un Named Credential :
  • Accédez à Setup dans Salesforce.
  • Dans la barre de recherche rapide, tapez “Named Credentials” et sélectionnez Named Credentials.
  • Cliquez sur New Named Credential.
  • Remplissez les informations requises :
    • Label : API_External
    • Name : API_External
    • URL : Entrez l’URL de base de l’API externe (par exemple, https://api.example.com).
    • Identity Type : Per User ou Named Principal en fonction de votre cas d’utilisation.
    • Authentication Protocol : Sélectionnez le protocole d’authentification approprié (par exemple, OAuth 2.0).
  • Cliquez sur Save.

3. Effectuer des appels API REST depuis Salesforce

Exemple de classe Apex pour un appel API REST

  1. Créer une classe Apex :
  • Dans Setup, tapez “Apex Classes” dans la barre de recherche rapide et sélectionnez Apex Classes.
  • Cliquez sur New pour créer une nouvelle classe Apex.
  • Nom de la classe : ExternalApiIntegration
  • Code de la classe :
public class ExternalApiIntegration {
    private static final String namedCredential = 'API_External';

    public static String makeGetRequest(String endpoint) {
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint(namedCredential + endpoint);
        request.setMethod('GET');

        HttpResponse response = http.send(request);
        if (response.getStatusCode() == 200) {
            return response.getBody();
        } else {
            System.debug('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
            return null;
        }
    }
}
  1. Enregistrer la classe : Cliquez sur Save.
A lire aussi :  Utilisation de Test Classes et couverture de code dans Salesforce

4. Gérer les réponses API et manipuler les données

Exemple de gestion des réponses JSON

  1. Modifier la classe Apex pour traiter les réponses JSON :
  • Ajoutez une méthode pour désérialiser la réponse JSON et insérer les données dans un objet Salesforce.
  • Code mis à jour de la classe :
public class ExternalApiIntegration {
    private static final String namedCredential = 'API_External';

    public class ApiResponse {
        public String id;
        public String name;
        public String phone;
    }

    public static String makeGetRequest(String endpoint) {
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint(namedCredential + endpoint);
        request.setMethod('GET');

        HttpResponse response = http.send(request);
        if (response.getStatusCode() == 200) {
            return response.getBody();
        } else {
            System.debug('Error: ' + response.getStatusCode() + ' - ' + response.getStatus());
            return null;
        }
    }

    public static void syncDataFromApi() {
        String jsonResponse = makeGetRequest('/data');
        if (jsonResponse != null) {
            List<ApiResponse> apiResponses = (List<ApiResponse>) JSON.deserialize(jsonResponse, List<ApiResponse>.class);
            List<Contact> contactsToInsert = new List<Contact>();

            for (ApiResponse apiResponse : apiResponses) {
                Contact contact = new Contact();
                contact.External_Id__c = apiResponse.id;  // Assuming External_Id__c is a custom field
                contact.LastName = apiResponse.name;
                contact.Phone = apiResponse.phone;
                contactsToInsert.add(contact);
            }

            if (contactsToInsert.size() > 0) {
                insert contactsToInsert;
            }
        }
    }
}
  1. Enregistrer la classe : Cliquez sur Save.

5. Déclenchement de l’intégration

Utilisation d’un bouton ou d’un processus pour déclencher l’intégration

  1. Créer un bouton personnalisé sur l’objet Contact pour déclencher l’intégration.
  • Allez sur l’objet Contact dans Setup.
  • Sélectionnez Buttons, Links, and Actions.
  • Cliquez sur New Button or Link.
  • Nom : Sync Contacts
  • Behavior : Execute JavaScript
  • Content Source : OnClick JavaScript
  • Body : {!REQUIRESCRIPT("/soap/ajax/29.0/connection.js")} {!REQUIRESCRIPT("/soap/ajax/29.0/apex.js")} sforce.apex.execute("ExternalApiIntegration", "syncDataFromApi", {}); alert("Sync Started!");
  • Cliquez sur Save.
  1. Ajouter le bouton à la mise en page Contact :
  • Allez dans Page Layouts sous l’objet Contact.
  • Ajoutez le bouton Sync Contacts à la section appropriée de la mise en page.
  • Enregistrez les modifications.

Conclusion

Vous avez maintenant appris à intégrer Salesforce avec des API externes en utilisant les fonctionnalités des Named Credentials pour sécuriser les connexions, en effectuant des appels API REST depuis Apex, en gérant les réponses JSON, et en déclenchant l’intégration via un bouton personnalisé. Ces compétences vous permettent de connecter Salesforce à divers systèmes externes et de synchroniser les données de manière efficace.

A lire aussi :  Empêcher la Suppression des Tâches pour le Profil "Commercial"

Partagez cet article

Publications similaires