Domanda

Sono nuovo di sviluppo Apex e sto iniziando a lavorare sul mio progetto in Apex. Vorrei fare seguente:


utilizzando un servizio di posta elettronica // Ho pensato che questa parte
ottenere emailAddress da una e-mail // sapere come fare questo
se c'è già exisiting piombo o il contatto con lo stesso emailAddress
  aggiornare le sue informazioni
altro
  creare nuovi lead


Vorrei kow come posso cercare il mio database (lead e contatti di Saleforce) e di aggiornamento esistente informazioni dell'utente.

È stato utile?

Soluzione

Si dovrebbe eseguire una query sul conduttore e il contatto utilizzando l'indirizzo di posta elettronica come i criteri per la tua ricerca. Se restituisce 0 record per il piombo e 0 record per il contatto, quindi è necessario creare un nuovo piombo.

La vostra richiesta potrebbe restituire più di 1 record per entrambi piombo o di contatto, in modo da avere a sviluppare una strategia per gestire questo caso. Indirizzo e-mail non è richiesto di essere unico.

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.');
    }
}

}

L'altra opzione è quella di eseguire una ricerca che limita il campo di applicazione ai campi di posta elettronica.

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.');
    }
}

}

Altri suggerimenti

Nel Salesforce built-in aiuto si può trovare un po ' informazioni circa l'oggetto InboundEmail . La pagina contiene anche 2 esempi su come lavorare con contatti e cavi in ??base all'indirizzo di posta elettronica estratti dal messaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top