Configurar Lookup para la búsqueda de registros en tiempo real

Support DQE
Support DQE
  • Actualización

Custom Settings

  1. Vaya a la sección Custom Settings. Está disponible un custom setting llamado DQE Unify Lookup.
DQE Unify Lookup custom setting
  1. Haga clic en Manage y cree una instancia a nivel de organización por defecto.
    Create DQE Unify Lookup custom setting instance
  2. Complete la información requerida.
    DQE Unify Lookup settings
  • Allow Skip: permite a los usuarios omitir las sugerencias de Unify Lookup y crear un nuevo registro.
  • App Named Cred: nombre de la named credential.
  • Displayed Fields: campos mostrados en la tabla de sugerencias.

Acceso a la app Record Lookup

Ahora puede ir a la app Lightning Record Lookup y hacer clic en Connect en la parte inferior de la pestaña Setup. Esto establece la conexión entre su org de Salesforce y su instancia de Unify Lookup Server.

Record Lookup app connection

Record Lookup

Una vez completada la instalación, configure la app Record Lookup siguiendo estos pasos:

  1. Conéctela a la named credential Customer_Dqe_one.
  2. Cargue su regla y seleccione el objeto que se va a indexar.

A continuación, siga los pasos indicados a continuación para sustituir el botón estándar New por el botón Record Lookup:

  1. Vaya a Salesforce Setup.
  2. Abra Object Manager.
  3. Seleccione el objeto correspondiente.
  4. Localice el botón New.
  5. Sustituya el botón por el botón Record Lookup.
DQE One Record Lookup button

Esta guía explica cómo configurar Record Lookup en Salesforce.

Ver demo en pantalla completa

Guía de la API

Esta sección describe las API expuestas por la app Record Lookup.

Federated Search

Descripción de OpenSearch

Salesforce proporciona un protocolo de integración para fuentes de datos externas. La documentación completa está disponible en Salesforce Federated Search documentation.

Para cumplir con este protocolo, la aplicación Unify Lookup expone una API XML-Atom en dos partes. La primera parte describe el formato.

  • Route: /api/openSearch.xml
  • Call:

    curl -X GET https://[YOUR APP URL]/api/openSearch.xml
  • Response:
    OpenSearch XML response

Dado que el formato debe ser único para todas las respuestas, la lista de campos es inmutable. Para cada tipo de registro indexado en la app Unify Lookup, puede mapear una dirección, un email, un número de teléfono, un nombre y un apellido.

El campo Source corresponde al tipo de registro. Por ejemplo, si la app indexa objetos de Salesforce, los valores posibles incluyen Lead, Account y Contact. En el caso de tablas PostgreSQL externas, la fuente lleva el nombre de la tabla.

Formato de OpenSearch

La segunda API de OpenSearch es la solicitud del recurso propiamente dicha.

Cuando esta API se utiliza desde la barra de búsqueda de fuentes externas de su org de Salesforce, los parámetros se transmiten automáticamente.

  • Route: /api/openSearch
  • Parameters:
    • search (string): términos de búsqueda
    • orgId (string): ID de la org de Salesforce
  • Call:

    curl -X GET https://[YOUR APP URL]/api/openSearch?search=Ms. Cha Fadner&orgId=[YOUR ORG ID]
  • Response:
    OpenSearch response

REST API

Además de las API XML utilizadas por su org de Salesforce, el servidor Unify Lookup expone API que permiten realizar búsquedas de preexistencia en tiempo real desde sistemas externos. Esta sección describe estas API y sus métodos de llamada.

Autenticación

Todas las API descritas a continuación están protegidas con Basic Auth. El nombre de usuario es el identificador de la organización de Salesforce registrada, y la contraseña es la clave de licencia proporcionada por DQE Software. Es la misma clave introducida en las variables de entorno de su aplicación.

Search

Esta API es un motor de autocompletado sobre una única línea de búsqueda. Devuelve una lista de posibles registros sugeridos que coinciden con los criterios de búsqueda.

Route: /api/searchRecords

Parameters:

  • search (string): términos de búsqueda

Estructura de la respuesta:

La respuesta es una lista de objetos estructurados con campos como Id, Source, FirstName, LastName, Phone, Email, Street, City, PostalCode, State y Country.

Ejemplo de llamada:

curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/searchRecords?search=Ms. Chantal Fadner

Ejemplo de respuesta:

[
  {
    "Id": "00Q0900000E3ded7FUEAZ",
    "Source": "Lead",
    "FirstName": "rerere",
    "LastName": "azazaza",
    "Phone": "0*****31",
    "Email": "*****@hotmail.fr",
    "Street": "R************NIERES",
    "City": "A**********X",
    "PostalCode": "12345",
    "State": "",
    "Country": "France"
  }
]

Lookup

Esta API realiza una búsqueda de preexistencia comparando un registro completo con todos los registros indexados.

Route: /api/lookupRecords

Parameters:

Puede proporcionar cualquier par clave/valor presente en su formulario, ya sea en el cuerpo de su consulta o en los parámetros de consulta. Las claves distinguen entre mayúsculas y minúsculas. Las claves que no se encuentren en los registros se ignoran.

Estructura de la respuesta:

La respuesta es una lista de objetos estructurados con campos como Id, Source, FirstName, LastName, Phone, Email, Street, City, PostalCode, State y Country.

Ejemplo de llamada:

curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/lookupRecords?Email=airelue.fc@laposte.net&PostalCode=77961&Phone=0695473336&Street=Rue du Clos Gillet&FirstName=Aurélie&LastName=FUALKNER

Ejemplo de respuesta:

[
  {
    "Phone": "**********",
    "City": "A*****LE",
    "FirstName": "Au****ei",
    "MobilePhone": "",
    "State": "",
    "PostalCode": "12345",
    "LastName": "F****ER",
    "Country": "France",
    "Email": "ai******@laposte.net",
    "Street": "Rue ********et",
    "Id": "00Q0900000E37F3EAJ",
    "Source": "Lead"
  }
]

Si no se han importado conjuntos de reglas de deduplicación en su aplicación:

{
  "status": "error",
  "error": "No rules set loaded yet"
}

Golden record

Esta API realiza una búsqueda de preexistencia comparando un registro completo con todos los registros indexados. A diferencia de la API anterior, solo devuelve el registro con la mejor puntuación de coincidencia.

Route: /api/lookupGolden

Parameters:

Puede proporcionar cualquier par clave/valor presente en su formulario, ya sea en el cuerpo de su consulta o en los parámetros de consulta. Las claves distinguen entre mayúsculas y minúsculas. Las claves que no se encuentren en los registros se ignoran.

Estructura de la respuesta:

La respuesta contiene la certeza de la coincidencia, la regla que coincidió con el registro y el registro con la mejor coincidencia.

Ejemplo de llamada GET:

curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/lookupGolden?Email=ai************.net&PostalCode=1234&Phone=*******&Street=Ru*********t&FirstName=A******&LastName=F*****

Ejemplo de llamada POST:

curl --location 'https://[YOUR APP URL]/api/lookupGolden' \
--header "Authorization: Basic {authorization_header}" \
--header 'Content-Type: text/plain' \
--data-raw '{
  "recordType": "PersonAccount",
  "FirstName": "S*****",
  "LastName": "T****",
  "PersonEmail": "s************id"
}'

Ejemplo de respuesta:

{
  "certainty": 0.05298333333333333335,
  "matched_by": "Address",
  "record": {
    "Phone": "***************",
    "City": "**********",
    "FirstName": "Au***********",
    "MobilePhone": "",
    "State": "",
    "PostalCode": "12345",
    "LastName": "*******************",
    "Country": "France",
    "Email": "******************.net",
    "Street": "Rue ****************et",
    "Id": "00Q0900000E37F3EAJ",
    "Source": "Lead"
  }
}

Si no se han importado conjuntos de reglas de deduplicación en su aplicación:

{
  "status": "error",
  "error": "No rules set loaded yet"
}

En cualquier otro caso:

{
  "status": "error",
  "error": "bad request"
}

Add record

Utilice esta API para añadir un registro a su registro de indexación sin reiniciar un proceso en toda la base de datos de Salesforce.

Route: /api/add

Parameters:

  • recordType: nombre de API del SObject, por ejemplo Lead, Account o Contact
  • Id: ID de Salesforce

También puede proporcionar cualquier par clave/valor presente en su registro en los parámetros de consulta. Las claves distinguen entre mayúsculas y minúsculas. Las claves que no se encuentren en los registros se ignoran.

Ejemplo de llamada GET:

curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/add?recordType=Lead&Email=a************e.net&PostalCode=12345&Phone=0************&Street=Rue*************&FirstName=A**********&LastName=F********R

Ejemplo de llamada POST:

curl --location 'https://[YOUR APP URL]/api/add' \
--header 'Authorization: Basic {authorization_header}' \
--header 'Content-Type: text/plain' \
--data-raw '{
  "0": {
    "Phone": "0***********6",
    "BillingStreet": "R***********t",
    "BillingPostalCode": "12345",
    "LastName": "*****",
    "PersonEmail": "a**************t",
    "BillingCity": "H*****************Y",
    "id": "[SALESFORCE ID]",
    "FirstName": "A****************e",
    "attributes": {"type":"PersonAccount"}
  }
}'

Respuesta correcta:

{
  "status": "success",
  "label": "Record added"
}

Si el nombre de API del objeto no es uno de los objetos actualmente permitidos para indexar:

{
  "status": "error",
  "label": "RecordType not mapped in your application"
}

En este caso, vaya a la app Lightning Unify Lookup y añada el objeto.

Si el registro no pudo añadirse porque la base de datos Redis se ha quedado sin espacio de almacenamiento:

{
  "status": "error",
  "label": "memory > max memory"
}

En cualquier otro caso:

{
  "status": "error",
  "error": "bad request"
}

Remove record

Utilice esta API para eliminar un registro de su registro de indexación sin reiniciar un proceso en toda la base de datos de Salesforce.

Route: /api/delete

Parameters:

  • recordType: nombre de API del SObject, por ejemplo Lead, Account o Contact
  • Id: ID de Salesforce

También puede proporcionar cualquier par clave/valor presente en su registro en los parámetros de consulta. Las claves distinguen entre mayúsculas y minúsculas. Las claves que no se encuentren en los registros se ignoran.

Eliminar un único registro:

curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/delete?Id=00DX00000DJ19Q&recordType=Lead&Email=a*********net

Eliminar varios registros:

curl -X POST https://[YOUR APP URL]/api/delete \
-H "Authorization: Basic {authorization_header}" \
-d "[JSON Data]"

El cuerpo JSON debe estructurarse de la siguiente manera:

{
  "recordId": {
    "attributes": {
      "type": "recordType"
    }
  }
}

Respuesta correcta:

{
  "status": "success",
  "label": "Record(s) removed"
}

En cualquier otro caso:

{
  "status": "error",
  "error": "Failed to remove record"
}

Index Database

Esta API inicia el proceso de indexación global sobre un objeto. El objeto ya debe haberse añadido a través de la interfaz a la lista de objetos, y debe haberse configurado un conjunto de reglas para él.

Route: /api/index

Parameters:

  • recordType: nombre de API del SObject, por ejemplo Lead, Account o Contact
  • target: URL de la org de Salesforce, con el formato https://xxx.my.salesforce.com
  • token: token de sesión de Salesforce válido
  • user: nombre de usuario de Salesforce asociado al token de sesión

Ejemplo de llamada:

curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/index?recordType=Lead&token=XXXXXXXXXX&user=myusername@test.com&target=mysforg.my.salesforce.com

Respuesta correcta:

{
  "status": "success",
  "label": "indexing by Bulk started"
}

Si el nombre de API del objeto no es uno de los objetos actualmente permitidos para indexar:

{
  "status": "error",
  "label": "RecordType not mapped in your application"
}

En este caso, vaya a la app Lightning Unify Lookup y añada el objeto.

En cualquier otro caso:

{
  "status": "error",
  "error": "bad request"
}

Apex REST resources

El paquete AppExchange Unify Lookup proporciona recursos como clases Apex que pueden invocarse desde sus clases Apex o a través de API.

Autenticación

Solo se puede acceder a los recursos de API descritos a continuación con un token de Salesforce válido obtenido a través de la API OAuth2. La variable {authorization_header} en los siguientes ejemplos representa este token de sesión.

UpdateDB

Para insertar o eliminar registros de la base de datos indexada, utilice este recurso REST. Proporcione los ID de los registros, el tipo de objeto y la operación a aplicar.

Route: [YOUR SALESFORCE DOMAIN]/services/apexrest/UnifyLookup/updateDB/

Parameters:

  • ids: ID de registros de Salesforce separados por comas
  • recordType: nombre de API del SObject, por ejemplo Lead, Account o Contact
  • action: Insert o Delete

Ejemplo de llamada:

curl -X GET https://[YOUR SALESFORCE DOMAIN]/services/apexrest/UnifyLookup/updateDB/?ids=0017R00002ryGbZQAU,0017R00002kqzFHQAY&sObjectName=Account&action=insert \
-H "Authorization: Bearer {authorization_header}"

Respuesta correcta:

{
  "status": "success",
  "label": "Record added"
}

Si se produce un error:

{
  "status": "error",
  "label": "Failed to add record"
}

Llamada desde una clase Apex

También puede llamar a las funciones directamente desde sus clases Apex, ya que las funciones Apex están definidas como globales (global).

deleteRecord

List<String> ids = new List<String>{'0017R00002ryGbZQAU', '0017R00002kqzFHQAY'};
String sObjectName = 'Account';
Map<String, String> res = UnifyLookup.DQE_Lookup_update_db.deleteRecord(ids, sObjectName);

insertRecord

List<String> ids = new List<String>{'0017R00002ryGbZQAU', '0017R00002kqzFHQAY'};
String sObjectName = 'Account';
Map<String, String> res = UnifyLookup.DQE_Lookup_update_db.insertRecord(ids, sObjectName);

Relacionada con

¿Fue útil este artículo?

Usuarios a los que les pareció útil: 0 de 0