Obtenir des prédictions avec des demandes REST
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Décrire ce qui est nécessaire pour accéder au service de prédiction Einstein à partir d’un client REST
- Créer une application connectée pour gérer l’authentification de vos demandes d’API REST
- Utiliser votre client REST pour interagir avec le service de prédiction Einstein
Introduction
Maintenant que votre modèle est déployé dans Salesforce, vous pouvez utiliser le service de prédiction Einstein pour obtenir des prédictions à l’aide de votre client REST préféré.
Avant de commencer
Votre organisation DE sur laquelle CRM Analytics est activé et à laquelle vous vous êtes inscrit dans l’unité précédente vous fournit tout ce dont vous avez besoin pour réaliser les étapes de cette unité.
Cependant, une fois ce module terminé, les prérequis suivants sont nécessaires pour interagir avec le service de prédiction Einstein à l’aide d’un client REST.
- La licence CRM Analytics Plus ou la licence Einstein Prediction, toutes deux disponibles moyennant un coût supplémentaire.
- Un compte utilisateur disposant de l’autorisation système Afficher les recommandations Einstein Discovery
- Votre client REST préféré pour soumettre des demandes et gérer les résultats. Dans cette unité, nous utilisons des instructions et des exemples de captures d’écran pour l’application Postman (version de bureau). Cependant, les tâches d’interaction avec les ressources du service de prédiction Einstein sont similaires pour la plupart des clients REST. Vous pouvez donc utiliser un outil différent et suivre des étapes comparables. Pour obtenir l’application de bureau Postman, accédez à www.postman.com, puis à la page de téléchargement de l’application Postman.
Remarque : les instructions données dans cette unité ont été testées avec la version de bureau de Postman. L’utilisation de la version en ligne de Postman, qui nécessite des instructions de configuration spéciales pour Salesforce, n’a pas été approuvée pour ce module Trailhead.
- Un accès à une application gérée dans Salesforce qui autorise les demandes d’API REST de votre client REST. Pour créer une application connectée dans Salesforce, votre compte utilisateur doit disposer de l’autorisation Gérer les applications connectées .
Remarque : dans votre organisation, votre administrateur Salesforce peut créer l’application gérée pour vous.
Étape 1 : Création d’une application connectée dans Salesforce
Commencez par créer une application connectée afin que votre client REST puisse se connecter en toute sécurité à votre organisation Salesforce. Pour en savoir plus, consultez le module Trailhead Concepts de base des applications connectées.
- Dans Setup (Configuration), dans la zone Quick Find (Recherche rapide), saisissez
apps
(applications), puis sélectionnez App Manager (Gestionnaire d’applications).
- Dans Lightning Experience App Manager (Gestionnaire d’applications Lightning Experience), cliquez sur New Connected App (Nouvelle application connectée). Ensuite, dans la page New Connected App (Nouvelle application connectée), indiquez les informations de base suivantes.
Paramètre
Description
Nom de l'application connectée
Saisissez un nom descriptif et facilement reconnaissable.
Nom de l’API
Utilisez la structure de nom d’API Salesforce.
E-mail du contact
Indiquez l’adresse e-mail associée à vos informations d’identification utilisateur.
- Ensuite, cochez la case Enable OAuth Settings (Activer les paramètres OAuth) et spécifiez les paramètres suivants.
Paramètre |
Description |
---|---|
URL de rappel |
Cet exemple utilise |
Selected OAuthScopes (Domaines OAuth sélectionnés) |
Ajoutez les domaines OAuth suivants :
|
- Enregistrez vos paramètres, puis cliquez sur Continue (Continuer) pour créer l’application connectée.
- Cliquez sur Manage Consumer Details (Gérer les détails du consommateur).
- Si vous y êtes invité, effectuez la vérification qui vous a été envoyée par e-mail, puis cliquez sur Verify (Vérifier).
Lors de la création de l’application connectée, Salesforce génère deux informations d’identification : une clé consommateur et un secret consommateur.
Il s’agit des informations d’identification dont vous aurez besoin ultérieurement lorsque vous vous connecterez à Salesforce à partir de votre client REST via cette application connectée.
- Votre clé consommateur vous servira d’ID client.
- Votre secret consommateur vous servira de secret client.
Gardez cette fenêtre ouverte afin de pouvoir copier la clé consommateur et le secret consommateur plus tard dans cette unité.
Étape 2 : Autorisation du flux mot de passe-nom d’utilisateur pour Oauth 2.0
Dans ce module, utilisez un flux mot de passe-nom d’utilisateur pour l’authentification.
- Dans Setup (Configuration), dans la zone Quick Find (Recherche rapide), saisissez
oauth
, puis cliquez sur Oauth and Open ID Connect Settings (Paramètres de connexion OAuth et OpenID).
- Vérifiez que Allow Oauth Username-Password Flows (Autoriser les flux nom d’utilisateur-mot de passe Oauth) est activé.
Étape 3 : Configuration de l’authentification dans le client REST
Configurons maintenant l’authentification dans votre client REST en utilisant les informations d’identification de l’application connectée que vous venez de créer. L’authentification est requise pour accéder au service de prédiction Einstein.
Remarque : les instructions suivantes utilisent le client Postman (application de bureau) comme exemple, mais vous pouvez utiliser n’importe quel client d’API REST avec des fonctionnalités similaires.
Dans Postman, créez un espace de travail si nécessaire. Ensuite, créez une collection (facultatif mais recommandé) en utilisant un nom descriptif. Une collection stocke toutes vos demandes de service de prédiction Einstein en un seul endroit.
- Sélectionnez la collection dans la liste, cliquez sur Add request (Ajouter une demande), puis renommez cette demande Authenticate (Authentifier).
- Ensuite, configurez les paramètres suivants pour la demande Authenticate (Authentifier).
Paramètre
Description
Type de demande
Passer à POST
URL de la requête
Indiquer
https://login.salesforce.com/services/oauth2/token
- Cliquez sur l’onglet Body (Corps), remplacez le type de corps par x-www-form-urlencoded, puis ajoutez les clés et valeurs suivantes.
Clé
Valeur
grant_type
Indiquez le
password
(mot de passe).client_id
Copiez et collez la clé consommateur de l’application connectée que vous avez créée précédemment.
client_secret
Copiez et collez le secret consommateur de l’application connectée que vous avez créée précédemment.
username
Indiquez le nom d’utilisateur du compte associé à votre organisation Trailhead DE.
password
Indiquez le mot de passe du compte associé à votre organisation Trailhead DE.
- Enregistrez la demande et cliquez sur Send (Envoyer). Si vous avez configuré vos paramètres correctement, vous devriez obtenir une réponse semblable à l’exemple suivant (notez que les informations de sécurité ont été intentionnellement masquées).
- Enfin, procédez comme suit :
- Copiez la chaîne
access_token
et collez-la quelque part pour en disposer plus tard. Vous en avez besoin pour exécuter des demandes d’API pour le service de prédiction Einstein.
- Copiez la chaîne
instance_URL
et collez-la quelque part pour en disposer plus tard. Vous en aurez besoin pour les demandes suivantes.
Vous êtes maintenant prêt à créer vos demandes d’API REST et à les envoyer au service de prédiction Einstein.
Étape 4 : Obtention de définitions de prédiction disponibles
Commençons par récupérer la liste de toutes les définitions de prédiction disponibles dans notre organisation.
- Créez une nouvelle demande GET et nommez-la Get Prediction Definitions (Obtenir des définitions de prédiction). Configurez la demande à l’aide des paramètres suivants.
Paramètre
Description
Type de demande
GET
URL de la requête
Indiquez
instance_URL
/services/data/v55.0/smartdatadiscovery/predictionDefinitions
, oùinstance_URL
a été renvoyé à partir de votre demande d’authentification. - Cliquez sur l’onglet Authorization (Autorisation) et configurez les paramètres suivants.
Paramètre
Description
Type d'autorisation
Choisissez OAuth2.0.
Set Access Token (Définir le jeton d’accès)
Collez le jeton d’accès que vous avez enregistré à l’étape précédente.
- Enregistrez la demande et cliquez sur Send (Envoyer). Si vous avez configuré correctement les paramètres de votre demande, vous devriez obtenir une réponse semblable à l’exemple suivant.
{ "nextPageUrl": null, "predictionDefinitions": [ { "countOfActiveModels": 1, "countOfModels": 1, "createdBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "createdDate": "2022-06-09T21:23:54.000Z", "id": "1ORB00000008RSROA2", "label": "Sales_per_Customer", "lastModifiedBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "lastModifiedDate": "2022-06-09T21:23:54.000Z", "modelsUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models", "name": "Sales_per_Customer", "outcome": { "goal": "Maximize", "label": "Sales per Customer", "name": "Sales_per_Customer" }, "predictionType": "Regression", "status": "Enabled", "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2" } ], "totalSize": 1, "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions?pageSize=25" }
Étape 5 : Obtention des métadonnées de la définition de prédiction
La réponse de l’étape 3 comprend l’URL permettant de récupérer les métadonnées de la définition de prédiction créée dans l’unité précédente. Elle devrait ressembler à l’exemple suivant.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
L’ID de prédiction correspond à celui que vous avez vu précédemment dans le gestionnaire de modèle.
- Ajoutez une nouvelle demande GET, nommez-la Get Prediction Definition (Obtenir la définition de la prédiction) et remplacez cette chaîne de demande dans l’URL. N’oubliez pas d’inclure l’élément
instance_Url
.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
- Configurez également les paramètres d’autorisation (type d’autorisation et jeton d’accès) comme précédemment. Cliquez sur Send (Envoyer) et examinez la réponse. Elle devrait ressembler à l’exemple suivant.
{ "countOfActiveModels": 1, "countOfModels": 1, "createdBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "createdDate": "2022-06-09T21:23:54.000Z", "id": "1ORB00000008RSROA2", "label": "Sales_per_Customer", "lastModifiedBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "lastModifiedDate": "2022-06-09T21:23:54.000Z", "modelsUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models", "name": "Sales_per_Customer", "outcome": { "goal": "Maximize", "label": "Sales per Customer", "name": "Sales_per_Customer" }, "predictionType": "Regression", "status": "Enabled", "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2" }
Étape 6 : Obtention de modèles associés à une prédiction
La réponse à l’étape 4 comprend l’URL permettant de récupérer les métadonnées du modèle déployé dans l’unité précédente. Elle devrait ressembler à l’exemple suivant.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- Ajoutez une nouvelle demande GET, nommez-la Get Models (Obtenir des modèles) et remplacez cette chaîne de demande dans l’URL. N’oubliez pas d’inclure l’élément
instance_Url
.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- Configurez également les paramètres d’autorisation (type d’autorisation et jeton d’accès) comme précédemment. Cliquez sur Send (Envoyer) et examinez la réponse. Elle devrait ressembler à l’exemple suivant.
{ "models": [ { "createdBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "createdDate": "2022-06-09T21:23:55.000Z", "fieldMappingList": [ { "modelField": { "label": "Quantity", "name": "Quantity", "type": "Number" } }, { "modelField": { "label": "Sub-Category", "name": "Sub_Category", "type": "Text" } }, { "modelField": { "label": "Category", "name": "Category", "type": "Text" } }, { "modelField": { "label": "Sales", "name": "Sales", "type": "Number" } }, { "modelField": { "label": "Profit per Order", "name": "Profit_per_Order", "type": "Number" } } ], "filters": [], "historyUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models/1ORB00000008RSROA2/histories", "id": "1Ot4W000000XezqSAC", "isRefreshEnabled": false, "label": "Sales_per_Customer", "lastModifiedBy": { "id": "your-account-id", "name": "your-name", "profilePhotoUrl": "https://xxx-instance-url-xxx/profilephoto/005/T" }, "lastModifiedDate": "2020-08-31T21:23:55.000Z", "model": { "id": "1OT4W000000LejUWAS" }, "modelType": "Regression", "name": "Sales_per_Customer", "predictionDefinitionUrl": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2", "prescribableFields": [ { "customDefinitions": [], "field": { "label": "Quantity", "name": "Quantity", "type": "Number" } } ], "sortOrder": 0, "status": "Enabled", "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models/1Ot4W000000XezqSAC" } ], "totalSize": 1, "url": "/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models" }
Notez l’élément fieldMappingList
, qui fournit la liste des champs du modèle. Nous utiliserons ces champs dans l’étape suivante.
Étape 7 : Obtention de prédictions
Maintenant que vous vous êtes entraîné à interagir avec le service de prédiction Einstein, essayons d’obtenir des prédictions.
- Ajoutez une nouvelle demande, nommez-la Get Predictions (Obtenir des prédictions) et configurez les paramètres suivants.
Paramètre
Description
Type de demande
Passer à POST
URL de la requête
Indiquez
instance_URL
/services/data/v55.0/smartdatadiscovery/predict
, oùinstance_URL
a été renvoyé à partir de votre demande d’authentification. - Configurez les paramètres d’autorisation (type d’autorisation et jeton d’accès) comme précédemment. Pour l’option Add Authorization Request To (Ajouter la demande d’autorisation à), veillez à sélectionner Request Headers (En-têtes de demande).
- Comme il s’agit d’un appel POST, nous devons spécifier le corps de la demande. Cliquez sur l’onglet Body (Corps) et sélectionnez les options suivantes.
Paramètre
Description
Body Type (Type de corps)
Sélectionner RAW
Body Type Request (Demande de type de corps)
Sélectionner JSON
- Ajoutez le corps de la demande au format JSON.
{ "predictionDefinition": " yourPredictionDefinitionId ", "type": "RawData", "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"], "rows": [ ["2","Furniture","Chairs","300","10"] ] }
- Remplacez
yourPredictionDefinitionId
par l’ID de prédiction que vous avez récupéré précédemment. Remarques à propos du corps de la demande.Élément
Notes
"type":"RawData"
L’utilisation du type
RawData
nous permet de spécifier des valeurs d’entrée brutes directement dans la demande de prédiction. Il existe deux autres types,Records
etRecordOverrides
, que vous pouvez utiliser lorsque la prédiction est associée à un objet Salesforce. Cependant, notre prédiction n’est pas liée à un objet Salesforce."columnNames"
Liste de noms, séparés par des virgules, attendus comme variables d’entrée par le modèle. Ils correspondent à l’élément
"modelField":"Name"
de la listefieldMappingList
renvoyée dans la réponse à l’étape 5."rows"
Liste de valeurs textuelles séparées par des virgules à envoyer au modèle. Il s’agit des variables d’entrée que le modèle utilise pour obtenir une prédiction.
- Enregistrez votre demande, cliquez sur Send (Envoyer) et examinez la réponse. Elle devrait ressembler à l’exemple suivant.
{ "predictionDefinition": "1ORB00000008RSR", "predictions": [ { "model": { "id": "1OtB00000008S34KAE" }, "prediction": { "middleValues": [], "total": 88.68177540182317 }, "prescriptions": [], "status": "Success" } ], "settings": { "maxMiddleValues": 0, "maxPrescriptions": 0, "prescriptionImpactPercentage": 0 } }
La valeur "prediction":"total"
est le chiffre d’affaires prédit par client que le modèle a calculé sur la base de vos valeurs d’entrée.
- Ensuite, copiez et collez le code suivant dans le corps de votre demande (en remplaçant ce qui s’y trouve actuellement). Ajoutez votre ID de prédiction, puis cliquez sur Send (Envoyer).
{ "predictionDefinition": "yourPredictionDefinitionId", "type": "RawData", "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"], "rows": [ ["2","Furniture","Chairs","262","42"], ["5","Office Supplies","Art","7","25"] ] }
La réponse devrait ressembler à l’exemple suivant (les valeurs de prédiction peuvent différer).
{ "predictionDefinition": "1ORB00000008RSR", "predictions": [ { "model": { "id": "1OtB00000008S34KAE" }, "prediction": { "middleValues": [], "total": 88.68177540182317 }, "prescriptions": [], "status": "Success" }, { "model": { "id": "1OtB00000008S34KAE" }, "prediction": { "middleValues": [], "total": -155.263449836085 }, "prescriptions": [], "status": "Success" } ], "settings": { "maxMiddleValues": 0, "maxPrescriptions": 0, "prescriptionImpactPercentage": 0 } }
L’ordre des prédictions dans la réponse correspond à l’ordre des valeurs d’entrée dans le corps de la demande.
- Enfin, récupérons également les principaux facteurs et améliorations de la réponse. Supprimez la deuxième ligne de données, ajoutez les lignes suivantes à votre demande, puis cliquez sur Send (Envoyer).
{ "predictionDefinition": "yourPredictionDefinitionId", "type": "RawData", "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"], "rows": [ ["2","Furniture","Chairs","262","42"] ], "settings": { "maxMiddleValues": 2, "maxPrescriptions": 2} }
Dans cette demande :
-
maxMiddleValues
permet de renvoyer les principaux facteurs (jusqu’à 2, dans cet exemple).
-
maxPrescriptions
permet de renvoyer des améliorations (jusqu’à 2, dans cet exemple).
La réponse devrait ressembler à l’exemple suivant.
{ "predictionDefinition": "1ORB00000008RSR", "predictions": [ { "model": { "id": "1OtB00000008S34KAE" }, "prediction": { "baseLine": 438.5059113062626, "middleValues": [ { "columns": [ { "columnLabel": "Sub-Category", "columnName": "Sub_Category", "columnValue": "Chairs" }, { "columnLabel": "Sales", "columnName": "Sales", "columnValue": "262" } ], "value": -730.8852909080902 }, { "columns": [ { "columnLabel": "Sales", "columnName": "Sales", "columnValue": "262" } ], "value": 244.82002630727217 } ], "other": 136.2411286963786, "smallTermCount": 3, "total": 88.68177540182317 }, "prescriptions": [], "status": "Success" } ], "settings": { "maxMiddleValues": 2, "maxPrescriptions": 2, "prescriptionImpactPercentage": 0 } }
Dans cette réponse :
-
total
représente la valeur de la prédiction.
-
middlevalues
décrit les deux principaux facteurs obtenus pour cette prédiction. Dans cet exemple :
- Lorsque la sous-catégorie correspond à « chairs » (chaises) et que les ventes correspondent à 262, l’effet est une réduction de la prédiction de près de 731 (-730,8852).
- Lorsque les ventes correspondent à 262, l’effet est une augmentation de la prédiction d’environ 245 (244,8200).
Pour plus d’informations sur les autres éléments de la réponse, consultez la rubrique Obtention de prédictions dans l’aide Salesforce.
Évaluation du suivi de l’utilisation
Einstein Discovery suit les statistiques d’utilisation en temps réel. Pour afficher les statistiques d’utilisation de votre organisation, dans Setup (Configuration), dans la zone Quick Find (Recherche rapide), saisissez discovery
(découverte), puis sélectionnez Usage (Utilisation).
Einstein suit les demandes d’API REST, ainsi que d’autres demandes de prédiction programmatique, sous Number of prediction API calls run today (Nombre de prédictions d’appels d’API exécutées aujourd’hui).
Ressources
- Aide Salesforce : Obtention de prédictions et d’améliorations avec le service de prédiction Einstein
- Aide Salesforce : Suivre les statistiques d’utilisation pour Einstein Discovery
- GitHub : API Salesforce pour Postman