Obtener predicciones con solicitudes REST
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Describir lo que necesita un cliente REST para acceder a Einstein Prediction Service.
- Crear una aplicación conectada para gestionar la autenticación de sus solicitudes API de REST.
- Utilizar su cliente REST para interactuar con Einstein Prediction Service.
Introducción
Ahora que su modelo está implementado en Salesforce, ya puede utilizar Einstein Prediction Service para obtener predicciones utilizando su cliente REST favorito.
Antes de comenzar
La organización DE habilitada con CRM Analytics en la que usted se registró en la unidad anterior le ofrece todo lo necesario para seguir los pasos de esta unidad.
Sin embargo, después de completar este módulo, serán necesarios los siguientes requisitos previos para poder interactuar con Einstein Prediction Service utilizando un cliente REST.
- Licencia CRM Analytics Plus o Einstein Predictions, ambas disponibles por un coste extra.
- Una cuenta de usuario con el permiso del sistema View Einstein Discovery Recommendations (Ver recomendaciones de Einstein Discovery.
- Su cliente REST favorito para enviar solicitudes y gestionar resultados. En esta unidad, utilizamos instrucciones y capturas de pantalla de ejemplos para la aplicación Postman (versión de escritorio). No obstante, las tareas de interacción con los recursos de Einstein Prediction Service son parecidas en la mayoría de los clientes REST, por lo que puede utilizar una herramienta diferente y seguir los pasos comparables. Para obtener la aplicación de escritorio de Postman, vaya a www.postman.com y visite la página de descargas de la aplicación de Postman.
Nota: Las instrucciones de esta unidad se han probado con la versión de escritorio de Postman. La versión web de Postman, el cual requiere instrucciones de configuración especiales para Salesforce, no se ha aprobado para su uso con este módulo de Trailhead.
- Acceda a una aplicación gestionada en Salesforce que autorice las solicitudes API de REST de sus clientes REST. Para crear una aplicación conectada en Salesforce, su cuenta de usuario debe tener el permiso Manage Connected App (Gestionar aplicación conectada).
Nota: Es posible que el administrador de Salesforce de su organización pueda crear la aplicación gestionada por usted.
Paso 1: Crear una aplicación conectada en Salesforce
Empiece creando una aplicación conectada para que su cliente REST pueda conectarse de manera segura con su organización de Salesforce. Para obtener más información, consulte el módulo de Trailhead Fundamentos de las aplicaciones conectadas.
- En Setup (Configuración), en el cuadro Quick Find (Búsqueda rápida), introduzca
apps
(aplicaciones) y seleccione App Manager (Gestor de aplicaciones).
- En Lightning Experience App Manager (Gestor de aplicaciones de Lightning Experience), haga clic en New Connected App (Nueva aplicación conectada). Después, en la página New Connected App (Nueva aplicación conectada), indique la siguiente información básica.
Escenario
Descripción
Connected App Name (Nombre de la aplicación conectada)
Indique un nombre que sea descriptivo y fácil de distinguir.
API Name (Nombre de la API)
Utilice la estructura del nombre de API de Salesforce.
Contact Email (Correo electrónico de contacto)
Indique el correo electrónico de contacto asociado con sus credenciales de usuario.
- Para continuar, seleccione la casilla de verificación Enable OAuth Settings (Habilitar configuración de OAuth) y establezca los siguientes ajustes.
Escenario |
Descripción |
---|---|
Callback URL (URL de autenticación) |
Este ejemplo utiliza |
Selected OAuth Scopes (Rangos de OAuth seleccionados) |
Añada los siguientes rangos de OAuth:
|
- Guarde la configuración y haga clic en Continue (Continuar) para crear la aplicación conectada.
- Haga clic en Manage Consumer Details (Gestionar información del consumidor).
- Si se le solicita, proporcione la verificación que se le envió por correo electrónico y, a continuación, haga clic en Verify (Verificar).
Cuando se crea una aplicación conectada, Salesforce genera dos credenciales: una Consumer Key (Clave del consumidor) y un Consumer Secret (Secreto del consumidor).
Necesitará estas credenciales más tarde cuando se conecte desde su cliente REST a Salesforce a través de esta aplicación conectada.
- Su Consumer Key (Clave del consumidor) será su Id. de cliente.
- Su Consumer Secret (Secreto del consumidor) será su contraseña de cliente.
Mantenga abierta esta ventana para poder copiar estas credenciales más adelante en esta unidad.
Paso 2: Permitir el flujo de nombre de usuario y contraseña para OAuth 2.0
En este módulo, utilizará un flujo de nombre de usuario y contraseña para la autenticación.
- En Setup (Configuración), en el cuadro Quick Find (Búsqueda rápida), introduzca
oauth
y seleccione OAuth and Open ID Connect Settings (Configuración de conexión de OAuth y Open ID).
- Asegúrese de que la opción Allow OAuth Username-Password Flows (Permitir flujos de nombre de usuario y contraseña de OAuth) esté activada.
Paso 3: Configurar la autenticación en el cliente REST
Lo siguiente es configurar la autenticación en su cliente REST utilizando las credenciales de la aplicación conectada que acaba de crear. Es necesario autenticarse para acceder al servicio de predicción de Einstein.
Nota: Las siguientes instrucciones utilizan el cliente Postman (versión de escritorio) como ejemplo, pero puede utilizar cualquier cliente API de REST con funcionalidad comparable.
En Postman, cree un nuevo espacio de trabajo si es necesario. Después, cree una nueva colección (opcional, pero recomendable) utilizando un nombre descriptivo. Una colección almacena todas sus solicitudes de Einstein Prediction Service en un solo lugar.
- Seleccione la colección en el listado, haga clic en Add request (Agregar solicitud) y, a continuación, cambie el nombre de esta solicitud a Authenticate (Autenticar).
- Para continuar, configure los siguientes parámetros de la solicitud Authenticate (Autenticar).
Escenario
Descripción
Request Type (Tipo de solicitud)
Cámbielo a POST
Request URL (URL de solicitud)
Pegue
https://login.salesforce.com/services/oauth2/token
- Haga clic en la pestaña Body (Cuerpo), cambie el tipo de cuerpo a x-www-form-urlencoded y después añada las siguientes claves y valores.
KEY (Clave)
Valor
grant_type
Indique
password
(contraseña).client_id
Copie y pegue la Consumer Key (Clave del consumidor) de la aplicación conectada que creó previamente.
client_secret
Copie y pegue el Consumer Secret (Secreto del consumidor) de la aplicación conectada que creó previamente.
username
Especifique el nombre de usuario de la cuenta asociada con su organización DE de Trailhead.
password
Especifique la contraseña de la cuenta asociada con su organización DE de Trailhead.
- Guarde la solicitud y después haga clic en Send (Enviar). Si lo ha configurado de manera correcta, debería ver una pantalla parecida a la del siguiente ejemplo (tenga en cuenta que la información de seguridad se ha tapado intencionadamente).
- Por último, siga los siguientes pasos:
- Copie la cadena
access_token
y péguela en algún documento para volver a ella después. La necesitará para ejecutar solicitudes de API en Einstein Prediction Service.
- Copie la cadena
instance_URL
y péguela en algún documento para volver a ella después. La necesitará para las próximas solicitudes.
¡Ahora ya está preparado para crear y enviar solicitudes API de REST a Einstein Prediction Service!
Paso 4: Obtener definiciones de predicción disponibles
Empecemos recuperando el listado de definiciones de predicción disponibles en su organización.
- Cree una nueva solicitud GET y póngale el nombre Get Prediction Definitions (Obtener definiciones de predicción). Configure la solicitud utilizando los siguientes ajustes.
Escenario
Descripción
Request Type (Tipo de solicitud)
GET
Request URL (URL de solicitud)
Especifique
instance_URL
/services/data/v55.0/smartdatadiscovery/predictionDefinitions
, dondeinstance_URL
es el valor devuelto de la solicitud de autenticación. - Haga clic en la pestaña Authorization (Autorización) y configure los siguientes ajustes.
Escenario
Descripción
Authorization Type (Tipo de autorización)
Seleccione OAuth2.0.
Set Access Token (Configurar token de acceso)
Copie el token de acceso que guardó en el paso anterior.
- Guarde la solicitud y después haga clic en Send (Enviar). Si ha configurado su solicitud de manera correcta, debería ver una pantalla de respuesta parecida a la del siguiente ejemplo.
{ "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" }
Paso 5: Obtener los metadatos de la definición de predicción
La pantalla de respuesta del paso 3 incluye la URL para obtener los metadatos de la definición de predicción que creó en la unidad anterior. Debería tener un aspecto similar al del siguiente ejemplo.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
El Id. de predicción coincide con el que vimos anteriormente en Model Manager (Gestor de modelos).
- Agregue una nueva solicitud GET, póngale el nombre Get Prediction Definitions (Obtener definiciones de predicción) y sustituya esta cadena de solicitud en la URL. Recuerde incluir el
instance_Url
.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
- También configure los ajustes de autorización (Authorization Type [Tipo de autorización] y Access Token [Token de acceso]) tal como lo hemos hecho anteriormente. Haga clic en Send (Enviar) y revise la pantalla de respuesta. Debería tener un aspecto similar al del siguiente ejemplo.
{ "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" }
Paso 6: Obtener modelos asociados con una predicción
La pantalla de respuesta del paso 4 incluye la URL para obtener los metadatos del modelo que implementó en la unidad anterior. Debería tener un aspecto similar al del siguiente ejemplo.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- Agregue una nueva solicitud GET, asígnele el nombre Get Models (Obtener modelos) y sustituya esta cadena de solicitud en la URL. Recuerde incluir el
instance_Url
.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- También configure los ajustes de autorización (Authorization Type [Tipo de autorización] y Access Token [Token de acceso]) tal como lo hemos hecho anteriormente. Haga clic en Send (Enviar) y revise la pantalla de respuesta. Debería tener un aspecto similar al del siguiente ejemplo.
{ "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" }
Observe la fila fieldMappingList
; esta proporciona el listado de campos del modelo. Utilizaremos esto en el siguiente paso.
Paso 7: Obtener predicciones
Ahora que ha probado la interacción con Einstein Prediction Service, ¡obtengamos alguna predicción!
- Agregue una nueva solicitud, póngale el nombre Get Predictions (Obtener predicciones) y configure los siguientes parámetros.
Escenario
Descripción
Request Type (Tipo de solicitud)
Cámbielo a POST
Request URL (URL de solicitud)
Especifique
instance_URL
/services/data/v55.0/smartdatadiscovery/predict
, dondeinstance_URL
es el valor devuelto de la solicitud de autenticación. - Configure los ajustes de autorización (Authorization Type [Tipo de autorización] y Access Token [Token de acceso]) como lo hemos hecho anteriormente. En Add Authorization Request To (Añadir solicitud de autorización a), asegúrese de seleccionar Request Headers (Solicitar identificación).
- Como se trata de una llamada POST, necesitamos definir el cuerpo de la solicitud. Haga clic en la pestaña Body (Cuerpo) y seleccione las siguientes opciones.
Escenario
Descripción
Body Type (Tipo de cuerpo)
Seleccione RAW (Sin formato)
Body Type Request (Solicitud de tipo de cuerpo)
Seleccione JSON
- Agregue el cuerpo de la solicitud en formato JSON.
{ "predictionDefinition": " yourPredictionDefinitionId ", "type": "RawData", "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"], "rows": [ ["2","Furniture","Chairs","300","10"] ] }
- Sustituya
yourPredictionDefinitionId
por el ID de predicción que recuperó anteriormente. Algunas puntualizaciones sobre el cuerpo de esta solicitud.Elemento
Notas
"type":"RawData"
El uso del tipo
RawData
nos permite introducir directamente los valores de entrada sin formato en la solicitud de predicción. Existen otros dos tipos,Records
yRecordOverrides
, que puede utilizar cuando la predicción está asociada a un objeto de Salesforce. Sin embargo, nuestra predicción no está relacionada con ningún objeto de Salesforce."columnNames"
Listado de nombres separados por comas que el modelo espera como variables de entrada. Esto corresponde al elemento
"modelField":"Name"
enfieldMappingList
devuelta en la pantalla de respuesta en el paso 5."rows"
Listado de valores de texto separados por comas para enviar al modelo. Estas son las variables de entrada que el modelo utiliza para generar la predicción.
- Guarde su solicitud, haga clic en Send (Enviar) y revise la pantalla de respuesta. Debería tener un aspecto similar al del siguiente ejemplo.
{ "predictionDefinition": "1ORB00000008RSR", "predictions": [ { "model": { "id": "1OtB00000008S34KAE" }, "prediction": { "middleValues": [], "total": 88.68177540182317 }, "prescriptions": [], "status": "Success" } ], "settings": { "maxMiddleValues": 0, "maxPrescriptions": 0, "prescriptionImpactPercentage": 0 } }
El valor "prediction":"total"
son las predicciones de ventas por consumidor que el modelo calculó en base a sus valores de entrada.
- Para continuar, copie y pegue el siguiente código en el cuerpo de su solicitud (reemplazando lo que hay en ese momento). Añada su Id. de predicción y, a continuación, haga clic en Send (Enviar).
{ "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 pantalla de respuesta debería tener un aspecto similar al del siguiente ejemplo (es posible que los valores de predicción difieran).
{ "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 } }
El orden de las predicciones en esta pantalla coincide con el orden de los valores de entrada en el cuerpo de la solicitud.
- Para terminar, obtengamos también los principales factores y mejoras. Elimine la segunda fila de datos, agregue las siguientes líneas a su solicitud y luego haga clic en Send (Enviar).
{ "predictionDefinition": "yourPredictionDefinitionId", "type": "RawData", "columnNames": ["Quantity","Category","Sub_Category","Sales","Profit_per_Order"], "rows": [ ["2","Furniture","Chairs","262","42"] ], "settings": { "maxMiddleValues": 2, "maxPrescriptions": 2} }
En esta solicitud:
-
maxMiddleValues
permite que se devuelvan factores principales (hasta un máximo de dos en este ejemplo).
-
maxPrescriptions
permite que se devuelvan mejoras (hasta un máximo de dos en este ejemplo).
La pantalla de respuesta debería tener un aspecto similar al del siguiente ejemplo.
{ "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 } }
En esta solicitud:
- El valor de
total
representa el valor de la predicción.
- La sección
middlevalues
describe los dos factores principales que se devuelven para esta predicción. En este ejemplo:
- Cuando Sub Category (Subcategoría) es Chairs (Sillas) y Sales (Ventas) es 262, el efecto es la reducción de la predicción de casi 731 (-730,8852).
- Cuando Sales (Ventas) es 262, el efecto es un aumento en la predicción de aproximadamente 245 (244.8200).
Para obtener más información sobre otros elementos en la pantalla de respuesta, consulte Obtener predicciones en Ayuda de Salesforce.
Revisar el seguimiento de uso
Einstein Discovery hace un seguimiento de las estadísticas de uso en tiempo real. Para ver las estadísticas de uso de su organización, desde Setup (Configuración), en el cuadro Quick Find (Búsqueda rápida), escriba discovery
y, a continuación, seleccione Usage (Uso).
Einstein realiza un seguimiento de las solicitudes API de REST, además de otras solicitudes programáticas de predicción, en Number of prediction API calls run today (Número de llamadas API de predicción realizadas hoy).
Recursos
- Ayuda de Salesforce: Get Predictions and Improvements with Einstein Prediction Service (Obtener predicciones y mejoras con Einstein Prediction Service)
- Ayuda de Salesforce: Monitor Usage Statistics for Einstein Discovery (Revisar las estadísticas de uso de Einstein Discovery)
- GitHub: Salesforce APIs for Postman (API de Salesforce para Postman)