Obtener predicciones con las solicitudes de REST
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Describir los requisitos para acceder al Servicio de predicción de Einstein desde un cliente de REST.
- Crear una aplicación conectada para administrar la autenticación para sus solicitudes de la API de REST.
- Usar su cliente de REST para interactuar con el Servicio de predicción de Einstein.
Introducción
Ahora que su modelo está implementado en Salesforce, puede usar el Servicio de predicción de Einstein para obtener predicciones con su cliente de REST favorito.
Antes de comenzar
La organización de Developer Edition habilitada con CRM Analytics a la que se registró en la unidad anterior otorga todo lo que necesita para realizar los pasos de esta unidad.
Sin embargo, después de completar este módulo, los siguientes requisitos previos son necesarios para interactuar con el Servicio de predicción de Einstein con un cliente de REST.
- Licencia de CRM Analytics Plus o de Einstein Predictions, ambas disponibles por un costo adicional.
- Una cuenta de usuario con el permiso del sistema View Einstein Discovery Recommendations (Ver recomendaciones de Einstein Discovery).
- Su cliente de REST favorito para enviar solicitudes y manejar resultados. En esta unidad, usamos instrucciones y capturas de pantalla de ejemplo para la aplicación Postman (versión de escritorio). No obstante, las tareas para interactuar con los recursos del Servicio de predicción de Einstein son similares en la mayoría de los clientes de REST, de modo que puede usar una herramienta diferente y seguir el procedimiento con pasos comparables. Para obtener la aplicación Postman de escritorio, vaya a www.postman.com y diríjase a la página de descarga de la aplicación Postman.
Nota: Las instrucciones que se describen en esta unidad fueron probadas con la versión de escritorio de Postman. Para este módulo de Trailhead, no se aprobó el uso de Postman web, que requiere instrucciones de configuración especiales para Salesforce.
- Acceda a una aplicación en Salesforce que autorice solicitudes de la API de REST desde su cliente de REST. Para crear una aplicación conectada en Salesforce, su cuenta de usuario debe tener el permiso Manage Connected App (Gestionar aplicaciones conectadas).
Nota: En su organización, su administrador de Salesforce puede crear una aplicación administrada.
Paso 1: Crear una aplicación conectada en Salesforce
Comience creando una aplicación conectada para que el cliente de REST pueda conectarse de forma segura a su Salesforce org. Para obtener más información, consulte el módulo de Trailhead Aspectos básicos de las aplicaciones conectadas.
- Desde Setup (Configuración), en el cuadro de búsqueda rápida, ingrese
apps
(aplicaciones) y, luego, haga clic en 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). A continuación, en la página New Connected App (Nueva aplicación conectada), especifique la siguiente información básica.
Configuración
Descripción
Connected App Name (Nombre de aplicación conectada)
Especifique un nombre que sea descriptivo y de fácil distinción.
API Name (Nombre de la API)
Use la estructura de Nombre de la API de Salesforce.
Contact Email (Email de contacto)
Especifique una dirección de email asociada a sus credenciales de usuario.
- A continuación, seleccione la casilla Enable OAuth Settings (Activar configuración de OAuth) y especifique la siguiente configuración.
Configuración |
Descripción |
---|---|
Callback URL (URL de devolución de llamada) |
En este ejemplo, se usa |
Selected OAuthScopes (OAuthScopes seleccionados) |
Agregue los siguientes ámbitos de Oauth:
|
- Guarde la configuración, luego, haga clic en Continue (Continuar) para crear la aplicación conectada.
- Haga clic en Manage Consumer Details (Gestionar detalles de consumidor).
- Si se le solicita, proporcione la verificación que se le envió por email, luego, haga clic en Verify (Verificar).
Al crear la aplicación conectada, Salesforce genera dos credenciales: una Consumer Key (Clave de consumidor) y una Consumer Secret (Pregunta secreta de consumidor).
Estas son las credenciales que va a necesitar más adelante cuando conecte su cliente de REST a Salesforce a través de esta aplicación conectada.
- La clave de consumidor funcionará como su Id. de cliente.
- La pregunta secreta de consumidor funcionará como su pregunta secreta de cliente.
Mantenga abierta esta ventana para que pueda copiar la clave de consumidor y la pregunta secreta de consumidor más adelante en esta unidad.
Paso 2: Habilitar el flujo Nombre de usuario-Contraseña para Oauth 2.0
En este módulo, utilizará un flujo Nombre de usuario-Contraseña para la autenticación.
- Desde Setup (Configuración), en el cuadro de búsqueda rápida, ingrese
oauth
y, luego, haga clic en Oauth and Open ID Connect Settings (Configuración de Oauth e ID Connect abierto).
- Asegúrese de que la opción Allow Oauth Username-Password Flows (Permitir flujos de contraseña-nombre de usuario de OAuth) esté activada.
Paso 3: Configurar la autenticación en el cliente de REST
A continuación, configuremos la autenticación en su cliente de REST con las credenciales de la aplicación conectada que acaba de crear. La autenticación es obligatoria para acceder al Servicio de predicción de Einstein.
Nota: En las siguientes instrucciones se usa el cliente Postman (aplicación de escritorio) como ejemplo, pero puede usar cualquier cliente de la API de REST con funcionalidades similares.
En Postman, cree un nuevo espacio de trabajo, de ser necesario. Luego, cree una recopilación nueva (opcional, pero recomendada) con un nombre descriptivo. Una recopilación almacena todas las solicitudes del Servicio de predicción de Einstein en un solo lugar.
- Seleccione la recopilación en la lista, haga clic en Add request (Agregar solicitud) y, luego, cámbiele el nombre a la solicitud Authenticate (Autenticar).
- A continuación, configure los siguientes parámetros para la solicitud de autenticación.
Configuración
Descripción
Request Type (Tipo de solicitud)
Cambie a POST (PUBLICAR)
Request URL (URL de solicitud)
Especifique
https://login.salesforce.com/services/oauth2/token
- Haga clic en la ficha Body (Cuerpo), cambie Body Type (Tipo de cuerpo) a x-www-form-urlencoded, luego, agregue los siguientes valores y claves.
Clave
Valor
grant_type
Especifique
password
(contraseña).client_id
Copie y pegue la clave de consumidor de la aplicación conectada que creó anteriormente.
client_secret
Copie y pegue la pregunta secreta de consumidor de la aplicación conectada que creó anteriormente.
username
Especifique el nombre de usuario para la cuenta asociada a su organización de Trailhead de Developer Edition.
password
Especifique la contraseña para la cuenta asociada a su organización de Trailhead de Developer Edition.
- Guarde la solicitud, a continuación, haga clic en Send (Enviar). Si realizó la configuración correctamente, verá una respuesta que es similar al siguiente ejemplo (tenga en cuenta que la información de seguridad se opacó de forma intencional).
- Por último, realice los siguientes pasos:
- Copie la cadena
access_token
y péguela en algún lugar para usarla más adelante. La necesitará para ejecutar solicitudes de la API para el Servicio de predicción de Einstein.
- Copie la cadena
instance_URL
y péguela en algún lugar para usarla más adelante. La necesitará para las siguientes solicitudes.
Ahora está todo listo para crear y enviar sus solicitudes de la API de REST al Servicio de predicción de Einstein.
Paso 4: Obtener definiciones de predicciones disponibles
Comencemos por recuperar la lista de todas las definiciones de predicciones disponibles.
- Cree una nueva solicitud GET y nómbrela Get Prediction Definitions (Obtener definiciones de predicciones). Configure la solicitud con estos parámetros.
Configuración
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 su solicitud de autenticación. - Haga clic en la ficha Authorization (Autorización) y configure los siguientes parámetros.
Configuración
Descripción
Authorization Type (Tipo de autorización)
Seleccione OAuth2.0.
Set Access Token (Establecer token de acceso)
Pegue el token de acceso que guardó en el paso anterior.
- Guarde la solicitud, a continuación, haga clic en Send (Enviar). Si configuró los parámetros de solicitud correctamente, debería ver una respuesta similar al 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 metadatos de definiciones de predicciones
La respuesta del paso 3 incluye la URL para recuperar los metadatos de la definición de predicciones que creó en la unidad anterior. Debería ser similar al siguiente ejemplo.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
La Id. de la predicción coincide con la que vio anteriormente en el Gestor de modelos.
- Agregue una solicitud GET, nómbrela Get Prediction Definition (Obtener definición de predicción) y reemplace esta cadena de solicitud en la URL. Recuerde incluir
instance_Url
.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2
- Asimismo, configure los parámetros de autorización (Authorization Type [Tipo de autorización] y Access Token [Token de acceso]) como antes. Haga clic en Send (Enviar) y revise la respuesta. Debería ser similar al 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 a una predicción
La respuesta del paso 4 incluye la URL para recuperar los metadatos del modelo que implementó en la unidad anterior. Debería ser similar al siguiente ejemplo.
/services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- Agregue una nueva solicitud GET, nómbrela Get Models (Obtener modelos) y reemplace esta cadena de solicitud en la URL. Recuerde incluir
instance_Url
.instance_Url /services/data/v55.0/smartdatadiscovery/predictiondefinitions/1ORB00000008RSROA2/models
- Asimismo, configure los parámetros de autorización (Authorization Type [Tipo de autorización] y Access Token [Token de acceso]) como antes. Haga clic en Send (Enviar) y revise la respuesta. Debería ser similar al 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 fieldMappingList
, que proporciona la lista de campos en el modelo. Los usaremos en el siguiente paso.
Paso 7: Obtener predicciones
Ahora que practicó interactuar con el Servicio de predicción de Einstein, obtengamos algunas predicciones.
- Agregue una nueva solicitud, nómbrela Get Predictions (Obtener predicciones) y configure los siguientes parámetros.
Configuración
Descripción
Request Type (Tipo de solicitud)
Cambie a POST (PUBLICAR)
Request URL (URL de solicitud)
Especifique
instance_URL
/services/data/v55.0/smartdatadiscovery/predict
, dondeinstance_URL
es el valor devuelto de su solicitud de autenticación. - Configure los parámetros de autorización (Authorization Type [Tipo de autorización] y Access Token [Token de acceso]) como antes. En Add Authorization Request To (Agregar solicitud de autorización para), asegúrese de seleccionar Request Headers (Solicitar encabezados).
- Dado que esta es una solicitud POST, debemos especificar el cuerpo de la solicitud. Haga clic en la ficha Body (Cuerpo) y seleccione las siguientes opciones.
Configuración
Descripción
Body Type (Tipo de cuerpo)
Seleccione RAW (Sin procesar)
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"] ] }
- Reemplace
yourPredictionDefinitionId
por la Id. de la predicción que recuperó anteriormente. Algunas notas sobre el cuerpo de la solicitud:Elemento
Notas
"type":"RawData"
El tipo
RawData
permite especificar los valores de entrada sin procesar directamente en la solicitud de predicción. Hay otros dos tipos,Records
yRecordOverrides
, que puede usar cuando la predicción está asociada al objeto de Salesforce. No obstante, nuestra predicción no está afiliada a un objeto de Salesforce."columnNames"
Lista de nombres separados por coma que el modelo espera como variables de entrada. Estos corresponden al elemento
"modelField":"Name"
en el valorfieldMappingList
devuelto en la respuesta del paso 5."rows"
Lista separada por comas de los valores de texto para enviar al modelo. Estas son las variables de entrada que el modelo usa para obtener una predicción.
- Guarde la solicitud, haga clic en Send (Enviar) y revise la respuesta. Debería ser similar al 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"
representa las ventas predichas por cliente que el modelo calculó en función de los valores de entrada.
- A continuación, copie y pegue el siguiente código en el cuerpo de la solicitud (reemplace lo que se encuentre allí). Agregue su Id. de predicción y 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 predicción debería ser similar al siguiente ejemplo (los valores de predicción pueden variar).
{ "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 la respuesta coincide con el orden de los valores de entrada en el cuerpo de la solicitud.
- Por último, recuperemos también los factores principales y las mejoras en la respuesta. Elimine la segunda línea de datos, agregue las siguientes líneas a la solicitud 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"] ], "settings": { "maxMiddleValues": 2, "maxPrescriptions": 2} }
En esta solicitud:
-
maxMiddleValues
permite la devolución de los factores principales (hasta 2, en este ejemplo).
-
maxPrescriptions
permite la devolución de mejoras (hasta 2, en este ejemplo).
La respuesta debería ser similar al 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 respuesta:
-
total
representa el valor de predicción.
- La sección
middlevalues
describe los dos factores principales que devuelve esta predicción. En este ejemplo:
- Cuando el valor Sub Category (Subcategoría) es igual a chairs (sillas) y Sales (Ventas) es 262, el resultado es una reducción en la predicción de aproximadamente 731 (-730.8852).
- Cuando Sales (Ventas) es 262, el resultado es un aumento en la predicción de aproximadamente 245 (244.8200).
Para obtener más información sobre otros elementos de la respuesta, consulte Obtener predicciones en la ayuda de Salesforce.
Revisar la supervisión de uso
Einstein Discovery supervisa 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 de búsqueda rápida, ingrese discovery
(detección) y seleccione Usage (Uso).
Einstein realiza un seguimiento de las solicitudes de la API de REST, junto con otras solicitudes de predicciones programáticas, en Number of prediction API calls run today (Número de llamadas de API de predicciones ejecutadas hoy).
Recursos
- Ayuda de Salesforce: Obtener predicciones y mejoras del Servicio de predicción de Einstein
- Ayuda de Salesforce: Supervisar las estadísticas de uso para Einstein Discovery
- GitHub: API de Salesforce para Postman