Raspberry Cars – Les Technos (4/4) – Communiquer avec Salesforce en Python
Accéder à SF avec des APIs
Dans le travail personnel précèdent, tous les programmes étaient dans Salesforce et communiqué avec les serveurs de Mercedes (les programmes Salesforce appelaient les API Mercedes).
Dans ce Travail personnel il faut développer des programmes qui tournent sur le Raspberry Pi et qui vont envoyer des donnés sur Salesforce. Ces programmes en Python vont devoir appeler le API Salesforce.
La librairie Simple Salesforce
Pour faciliter l’utilisation des API de Salesforce en Python, des développeurs on créer une librairie Python : Simple Salesforce
Simple Salesforce is a basic Salesforce.com REST API client built for Python 2.6, 2.7, 3.3, 3.4, 3.5, and 3.6. The goal is to provide a very low-level interface to the REST Resource and APEX API, returning a dictionary of the API JSON response.
Cette librairie est disponible sur le site suivant : https://pypi.org/project/simple-salesforce/
Pour trouver comment utiliser cette librairie cette article est aussi intéressant : https://towardsdatascience.com/using-python-to-get-salesforce-data-97bb5a7ef2cf
Pour installer la librairie Python sur le Raspberry il suffit de taper :
pip3 install simple-salesforce
Se connecter aux API Salesforce
Pour se connecter à Salesforce avec les API il faut : user ID, un mot de passe, mais aussi un token.
Pour obtenir ce token, il faut se connecter à la GUI Salesforce avec son utilisateur et son mot de passe, et aller dans les settings demander à recevoir le token par email.
On reçoit alors le token dans un email :
Von: « support@emea.salesforce.com » <support@emea.salesforce.com>
Datum: 11. Januar 2020 um 1:45:07 PM MEZ
An: « thibault.leblond@icloud.com » <thibault.leblond@icloud.com>
Betreff: Your new Salesforce security tokenWe’ve sent you a new Salesforce security token because you recently changed your password or requested to reset your security token. Use this updated security token with API or desktop clients that require it.
Username: thibault.leblond@wollef.org
Security token (case-sensitive): uEGXRLd…..Kef2mZANC
For more information on using your security token, see Reset Your Security Token at https://help.salesforce.com/HTViewHelpDoc?id=user_security_token.htm.
Pour se connecter depuis Python, on doit appeler la méthode de connexion avec ces informations :
sf = Salesforce(
username='thibault.leblond@wollef.org',
password=XXXXXXX,
security_token='uEGXRLdy…Kef2mZANC'
);
Voici le résultat dans l’IDE Python sur le Raspberry :
Lire les données
Dans le Travail précèdent on a vu comment interroger Salesforce pour trouver des données avec SOQL. Par exemple, pour connaitre la liste des voitures enregistrés dans la base, la requête SOQL est :
SELECT Id, Name, Car_Number__c FROM Car__c
Voici ce que donne la requête SOQL quand on la lance dans la console de Salesforce.
Ave la librairie simple Salesforce pour exécuter la requête SOQL depuis Python, on utilise le code suivant
cars= sf.query_all("SELECT Id, Name, Car_number__c FROM Car__c ");
Puis on peut afficher le résultat obtenu avec :
print(cars) ;
Voici le résultat dans l’IDE Python sur le Raspberry :
Le résultat n’est pas facile à lire, il faut donc trouver un moyen d’accéder aux informations de chaque voiture.
On récupère donc la réponse :
response= sf.query_all("SELECT Id, Name, Car_number__c FROM Car__c ");
On accède aux voitures (les records) dans la réponse :
cars = response['records']
On boucle sur les voitures et on affiche leur ID, leur nom, et leur numéro :
for car in cars:
print("ID", car["Id"] );
print("Name", car["Name"] );
print("Number", car["Car_number__c"] );
print('');
Voici le résultat dans l’IDE Python sur le Raspberry :
Ecrire des données
Dans le cadre du projet le programme Python devra également créer des données dans Salesforce.
Teston simplement comment créer une voiture (Custom object SF : Car__c) dans Salesforce avec l’API Simple Salesforce :
sf.Car__c.create({'Name':'My Raspberry Car !!!', 'Car_number__c':'RC 1234'})
Voici le résultat dans l’IDE Python sur le Raspberry :
Il ne se passe rien de visible ;-).
En effet, il faut retourner voir avec le programme précédent (la liste des voitures) si la nouvelle voiture est bien là ! Et c’est le cas !
On peut aussi aller vérifier dans la console Salesforce que l’objet a bien été créé par l’appel à l’API.
Ou même aller regarder dans la GUI utilisateur Salesforce :
Utilisation dans le projet de l’API simple salesforce
On a testé avec un objet simple qu’on peut lire et écrire depuis Python depuis le Raspberry PI. Pour le projet principale on devra manipuler beaucoup plus d’objet mais le principe restera le même.