Wie eine neue Führung und Aktualisierung eines bestehenden Vorsprung in Salesforce hinzufügen

StackOverflow https://stackoverflow.com/questions/3775654

  •  04-10-2019
  •  | 
  •  

Frage

Ich bin neu in Apex Entwicklung und ich fange an meinem Projekt in Apex an der Arbeit. Ich möchte folgendes tun:


einen E-Mail-Dienst // Ich dachte, diesen Teil
erhalten emailaddress aus einer E-Mail // wissen, wie diese
tun wenn bereits vorhandenes Blei oder Kontakt mit der gleichen
emailaddress aktualisiert seine Informationen
sonst
schafft neue Führung


Ich möchte kow, wie ich meine Datenbank (die Leads und Kontakte Salesforce) suchen und aktualisieren bestehende Benutzer-Info.

War es hilfreich?

Lösung

Sie sollten eine Abfrage auf der Leitung und Kontakt mit der E-Mail-Adresse als Kriterien ausführen für Sie Abfrage. Wenn es gibt 0 Datensätze für den Lead und 0 Datensätze für den Kontakt, dann würden Sie ein neues Blei erstellen.

Ihre Anfrage konnte zurückkehren, um mehr als 1 Datensatz für beide Blei oder Kontakt, so dass Sie eine Strategie entwickeln müssen, um diesen Fall zu behandeln. E-Mail-Adresse ist nicht eindeutig sein.

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<Lead> leads = [select id, email from Lead where email = :email];
    List<Contact> contacts = [select id, email from Contact where email = :email];
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

Die andere Option ist eine Suche Einschränkung des Umfangs auf E-Mail-Felder auszuführen.

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<List<SObject>> searchResults = [FIND :email IN Email Fields RETURNING 
                Lead(Id, FirstName, LastName), 
                Contact(Id, FirstName, LastName)];
    List<Lead> leads = ((List<Lead>)searchResults[0]);
    List<Contact> contacts = ((List<Contact>)searchResults[1]);
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

Andere Tipps

In der Salesforce integrierte Hilfe können Sie einige Informationen über das Objekt InboundEmail . Die Seite enthält auch zwei Beispiele zum Arbeiten mit Kontakten und Leads basierend auf E-Mail-Adresse aus der Nachricht extrahiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top