Custom Settings
- Gehen Sie zum Bereich Custom Settings. Eine benutzerdefinierte Einstellung namens DQE Unify Lookup ist verfügbar.
- Klicken Sie auf Manage und erstellen Sie eine Instanz auf der Standardebene Ihrer Organisation.
- Füllen Sie die erforderlichen Angaben aus.
- Allow Skip: ermöglicht es Nutzern, Unify Lookup-Vorschläge zu überspringen und einen neuen Datensatz zu erstellen.
- App Named Cred: Name des Named Credential.
- Displayed Fields: in der Vorschlagstabelle angezeigte Felder.
Zugriff auf die Record Lookup App
Sie können nun zur Lightning-App Record Lookup gehen und unten im Setup-Tab auf Connect klicken. Dadurch wird die Verbindung zwischen Ihrer Salesforce-Org und Ihrer Unify Lookup Server-Instanz hergestellt.
Record Lookup
Sobald die Installation abgeschlossen ist, konfigurieren Sie die Record Lookup App anhand der folgenden Schritte:
- Verbinden Sie sie mit dem Named Credential Customer_Dqe_one.
- Laden Sie Ihre Regel hoch und wählen Sie das zu indexierende Objekt aus.
Führen Sie anschließend die folgenden Schritte aus, um die Standard-Schaltfläche New durch die Record Lookup-Schaltfläche zu ersetzen:
- Gehen Sie zu Salesforce Setup.
- Öffnen Sie den Object Manager.
- Wählen Sie das gewünschte Objekt aus.
- Suchen Sie die Schaltfläche New.
- Ersetzen Sie die Schaltfläche durch die Record Lookup-Schaltfläche.
Diese Anleitung erklärt, wie Sie Record Lookup in Salesforce einrichten.
API-Leitfaden
Dieser Abschnitt beschreibt die APIs, die von der Record Lookup App bereitgestellt werden.
Federated Search
OpenSearch-Beschreibung
Salesforce bietet ein Integrationsprotokoll für externe Datenquellen. Die vollständige Dokumentation finden Sie in der Salesforce Federated Search-Dokumentation.
Um diesem Protokoll zu entsprechen, stellt die Unify Lookup-Anwendung eine XML-Atom-API in zwei Teilen bereit. Der erste Teil beschreibt das Format.
- Route: /api/openSearch.xml
-
Aufruf:
curl -X GET https://[YOUR APP URL]/api/openSearch.xml - Antwort:
Da das Format für alle Antworten einheitlich sein muss, ist die Feldliste unveränderlich. Für jeden in der Unify Lookup App indexierten Datensatztyp können Sie eine Adresse, E-Mail-Adresse, Telefonnummer, Vorname und Nachname zuordnen.
Das Feld Source entspricht dem Datensatztyp. Wenn die App beispielsweise Salesforce-Objekte indexiert, sind mögliche Werte Lead, Account und Contact. Bei externen PostgreSQL-Tabellen wird die Quelle nach der Tabelle benannt.
OpenSearch-Format
Die zweite OpenSearch-API ist die Anfrage nach einer Ressource selbst.
Wenn diese API über die Suchleiste für externe Quellen in Ihrer Salesforce-Org verwendet wird, werden die Einstellungen automatisch übergeben.
- Route: /api/openSearch
-
Parameter:
- search (string): Suchbegriffe
- orgId (string): Salesforce-Org-ID
-
Aufruf:
curl -X GET https://[YOUR APP URL]/api/openSearch?search=Ms. Cha Fadner&orgId=[YOUR ORG ID] - Antwort:
REST API
Zusätzlich zu den XML-APIs, die von Ihrer Salesforce-Org verwendet werden, stellt der Unify Lookup-Server APIs bereit, mit denen Sie Echtzeit-Vorab-Existenzprüfungen von externen Systemen aus durchführen können. Dieser Abschnitt beschreibt diese APIs und ihre Aufrufmethoden.
Authentifizierung
Alle im Folgenden beschriebenen APIs sind mit Basic Auth gesichert. Der Benutzername ist die Kennung der registrierten Salesforce-Organisation, und das Passwort ist der von DQE Software bereitgestellte Lizenzschlüssel. Dies ist derselbe Schlüssel, der in den Umgebungsvariablen Ihrer Anwendung eingetragen ist.
Suche
Diese API ist eine Autovervollständigungs-Engine für eine einzelne Suchzeile. Sie gibt eine Liste vorgeschlagener potenzieller Datensätze zurück, die den Suchkriterien entsprechen.
Route: /api/searchRecords
Parameter:
- search (string): Suchbegriffe
Antwortstruktur:
Die Antwort ist eine Liste von Objekten mit Feldern wie Id, Source, FirstName, LastName, Phone, Email, Street, City, PostalCode, State und Country.
Beispielaufruf:
curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/searchRecords?search=Ms. Chantal Fadner
Beispielantwort:
[
{
"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
Diese API führt eine Vorab-Existenzprüfung durch, indem ein vollständiger Datensatz mit allen indexierten Datensätzen verglichen wird.
Route: /api/lookupRecords
Parameter:
Sie können jedes in Ihrem Formular vorhandene Schlüssel/Wert-Paar angeben, entweder im Body Ihrer Anfrage oder in den Query-Parametern. Schlüssel unterscheiden zwischen Groß- und Kleinschreibung. Schlüssel, die in den Datensätzen nicht gefunden werden, werden ignoriert.
Antwortstruktur:
Die Antwort ist eine Liste von Objekten mit Feldern wie Id, Source, FirstName, LastName, Phone, Email, Street, City, PostalCode, State und Country.
Beispielaufruf:
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
Beispielantwort:
[
{
"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"
}
]
Wenn keine Deduplizierungs-Regelsets in Ihre Anwendung importiert wurden:
{
"status": "error",
"error": "No rules set loaded yet"
}
Golden Record
Diese API führt eine Vorab-Existenzprüfung durch, indem ein vollständiger Datensatz mit allen indexierten Datensätzen verglichen wird. Im Gegensatz zur vorherigen API gibt sie nur den Datensatz mit dem besten Übereinstimmungswert zurück.
Route: /api/lookupGolden
Parameter:
Sie können jedes in Ihrem Formular vorhandene Schlüssel/Wert-Paar angeben, entweder im Body Ihrer Anfrage oder in den Query-Parametern. Schlüssel unterscheiden zwischen Groß- und Kleinschreibung. Schlüssel, die in den Datensätzen nicht gefunden werden, werden ignoriert.
Antwortstruktur:
Die Antwort enthält die Übereinstimmungssicherheit, die Regel, die auf den Datensatz zutraf, und den am besten passenden Datensatz.
Beispiel-GET-Aufruf:
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*****
Beispiel-POST-Aufruf:
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"
}'
Beispielantwort:
{
"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"
}
}
Wenn keine Deduplizierungs-Regelsets in Ihre Anwendung importiert wurden:
{
"status": "error",
"error": "No rules set loaded yet"
}
In allen anderen Fällen:
{
"status": "error",
"error": "bad request"
}
Datensatz hinzufügen
Verwenden Sie diese API, um einen Datensatz zu Ihrem Indexierungsregister hinzuzufügen, ohne einen Prozess für die gesamte Salesforce-Datenbank neu zu starten.
Route: /api/add
Parameter:
- recordType: SObject-API-Name, zum Beispiel Lead, Account oder Contact
- Id: Salesforce-ID
Sie können außerdem jedes in Ihrem Datensatz vorhandene Schlüssel/Wert-Paar in den Query-Parametern angeben. Schlüssel unterscheiden zwischen Groß- und Kleinschreibung. Schlüssel, die in den Datensätzen nicht gefunden werden, werden ignoriert.
Beispiel-GET-Aufruf:
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
Beispiel-POST-Aufruf:
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"}
}
}'
Erfolgreiche Antwort:
{
"status": "success",
"label": "Record added"
}
Wenn der Objekt-API-Name keinem der aktuell für die Indexierung zugelassenen Objekte entspricht:
{
"status": "error",
"label": "RecordType not mapped in your application"
}
Gehen Sie in diesem Fall zur Lightning Unify Lookup App und fügen Sie das Objekt hinzu.
Wenn der Datensatz nicht hinzugefügt werden konnte, weil der Speicherplatz der Redis-Datenbank nicht ausreicht:
{
"status": "error",
"label": "memory > max memory"
}
In allen anderen Fällen:
{
"status": "error",
"error": "bad request"
}
Datensatz entfernen
Verwenden Sie diese API, um einen Datensatz aus Ihrem Indexierungsregister zu entfernen, ohne einen Prozess für die gesamte Salesforce-Datenbank neu zu starten.
Route: /api/delete
Parameter:
- recordType: SObject-API-Name, zum Beispiel Lead, Account oder Contact
- Id: Salesforce-ID
Sie können außerdem jedes in Ihrem Datensatz vorhandene Schlüssel/Wert-Paar in den Query-Parametern angeben. Schlüssel unterscheiden zwischen Groß- und Kleinschreibung. Schlüssel, die in den Datensätzen nicht gefunden werden, werden ignoriert.
Einen einzelnen Datensatz löschen:
curl -X GET \
-H "Authorization: Basic {authorization_header}" \
https://[YOUR APP URL]/api/delete?Id=00DX00000DJ19Q&recordType=Lead&Email=a*********net
Mehrere Datensätze löschen:
curl -X POST https://[YOUR APP URL]/api/delete \
-H "Authorization: Basic {authorization_header}" \
-d "[JSON Data]"
Der JSON-Body sollte wie folgt strukturiert sein:
{
"recordId": {
"attributes": {
"type": "recordType"
}
}
}
Erfolgreiche Antwort:
{
"status": "success",
"label": "Record(s) removed"
}
In allen anderen Fällen:
{
"status": "error",
"error": "Failed to remove record"
}
Datenbank indexieren
Diese API startet den globalen Indexierungsprozess für ein Objekt. Das Objekt muss bereits über die Oberfläche zur Objektliste hinzugefügt worden sein, und für dieses Objekt muss ein Regelset konfiguriert sein.
Route: /api/index
Parameter:
- recordType: SObject-API-Name, zum Beispiel Lead, Account oder Contact
-
target: Salesforce-Org-URL, im Format
https://xxx.my.salesforce.com - token: gültiges Salesforce-Session-Token
- user: Salesforce-Benutzername, der mit dem Session-Token verknüpft ist
Beispielaufruf:
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
Erfolgreiche Antwort:
{
"status": "success",
"label": "indexing by Bulk started"
}
Wenn der Objekt-API-Name keinem der aktuell für die Indexierung zugelassenen Objekte entspricht:
{
"status": "error",
"label": "RecordType not mapped in your application"
}
Gehen Sie in diesem Fall zur Lightning Unify Lookup App und fügen Sie das Objekt hinzu.
In allen anderen Fällen:
{
"status": "error",
"error": "bad request"
}
Apex-REST-Ressourcen
Das AppExchange-Paket Unify Lookup stellt Ressourcen als Apex-Klassen bereit, die von Ihren Apex-Klassen oder über APIs aufgerufen werden können.
Authentifizierung
Auf die im Folgenden beschriebenen API-Ressourcen kann nur mit einem gültigen Salesforce-Token zugegriffen werden, das über die OAuth2-API abgerufen wurde. Die Variable {authorization_header} in den folgenden Beispielen steht für dieses Session-Token.
UpdateDB
Verwenden Sie diese REST-Ressource, um Datensätze aus der indexierten Datenbank einzufügen oder zu entfernen. Geben Sie die Datensatz-IDs, den Objekttyp und den anzuwendenden Vorgang an.
Route: [YOUR SALESFORCE DOMAIN]/services/apexrest/UnifyLookup/updateDB/
Parameter:
- ids: durch Kommas getrennte Salesforce-Datensatz-IDs
- recordType: SObject-API-Name, zum Beispiel Lead, Account oder Contact
- action: Insert oder Delete
Beispielaufruf:
curl -X GET https://[YOUR SALESFORCE DOMAIN]/services/apexrest/UnifyLookup/updateDB/?ids=0017R00002ryGbZQAU,0017R00002kqzFHQAY&sObjectName=Account&action=insert \
-H "Authorization: Bearer {authorization_header}"
Erfolgreiche Antwort:
{
"status": "success",
"label": "Record added"
}
Wenn ein Fehler auftritt:
{
"status": "error",
"label": "Failed to add record"
}
Aufruf aus einer Apex-Klasse
Sie können die Funktionen auch direkt aus Ihren Apex-Klassen aufrufen, da die Apex-Funktionen als global definiert sind.
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);
Verknüpfung mit