Intégration avec Salesforce: Déclencheurs d'Apex personnalisés

Si vous ne souhaitez pas utiliser notre connecteur Salesforce ou si vous avez besoin de mettre en place une intégration rapide sans passer par votre équipe informatique, vous pouvez configurer des déclencheurs Apex personnalisés pour pousser les nouvelles inscriptions de membres de la campagne (CampaignMember ) vers votre événement InEvent.

Pour accomplir cette tâche, nous avons créé deux classes Apex :

PushLeadToInEventTrigger.apxt

Il s'agit d'un déclencheur Apex qui s'exécute chaque fois qu'une nouvelle entrée de CampaignMember est ajoutée à votre compte Salesforce. Comme le déclencheur est universel, nous devons filtrer uniquement les entrées qui sont ajoutées à notre campagne, (Campaign), et qui sont définies par notre variable SF_CAMPAIGN_ID . Nous devons également définir à quel événement nous voulons pousser ces pistes, et cela est défini par notre variable IN_EVENT_ID . Dans cet exemple, nous avons les valeurs suivantes :

  • SF_CAMPAIGN_ID = '7015G000000SZIUQA4' il s'agit du code Campaign sur Salesforce;
  • IN_EVENT_ID = '69442441' voici notre code Event sur InEvent;

Voici le code source complet de ce déclencheur:

trigger PushLeadToInEventTrigger on CampaignMember (after insert) {
// Your settings variables
String SF_CAMPAIGN_ID = '7015G000000SZIUQA4'; // Your Salesforce CampaignId
String IN_EVENT_ID = '69442441'; // Your InEvent eventID

for (CampaignMember cm: Trigger.new) {
// Skip other campaigns
if (cm.CampaignId != SF_CAMPAIGN_ID) continue;

// If you need more fields or custom fields, you can check our API documentation
Map<String, String> body = new Map<String, String>();
body.put('firstName', cm.FirstName);
body.put('lastName', cm.LastName);
body.put('username', cm.Email);
body.put('email', cm.Email);
body.put('password', ''); // leave empty if using block password tool
body.put('role', cm.Title);
body.put('company', cm.CompanyOrAccount);
body.put('telephone', cm.Phone);
body.put('feedbackContent', '[]'); // custom fields would go here (required, even if empty, expects a serialized JSON)

PushLeadToInEvent.push(IN_EVENT_ID, body);
}
}

// MIT License

PushLeadToInEvent.apxc

Cette classe a la future méthode qui pousse les contenus reçus de notre Déclencheurs d'Apex vers InEvent. Il suffit d'y apporter des modifications si vous souhaitez ajouter des champs supplémentaires ou si vous voulez vous synchroniser avec un autre terminal sur InEvent.

Ce code crée un nouveau participant sur InEvent, il consommera donc un crédit d'inscription par soumission.

Voici le code source complet pour cette classe:

public class PushLeadToInEvent {
@future (callout=true)
public static void push(String eventID, Map<String, String> body) {

// Our HTTP request configuration
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setMethod('POST');
request.setHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');

// Our query string builder
Map<String, String> query = new Map<String, String>();
query.put('action', 'form.respondRegistration');
query.put('version', '2');
query.put('eventID', eventID);

String cQuery = '';
for (String key : query.keySet()) {
if (String.isEmpty(cQuery)) {
cQuery += '?' + key + '=' + query.get(key);
} else {
cQuery += '&' + key + '=' + query.get(key);
}
}

String cBody = '';
for (String key : body.keySet()) {
String val = body.get(key);
if (val == null) val = '';
val = EncodingUtil.urlEncode(val, 'UTF-8');

if (String.isEmpty(cBody)) {
cBody += key + '=' + val;
} else {
cBody += '&' + key + '=' + val;
}
}

request.setEndpoint('https://app.inevent.com/api/' + cQuery);
request.setBody(cBody);

HttpResponse response = http.send(request);

System.debug('Calling [POST] ' + 'https://app.inevent.com/api/' + cQuery);
System.debug('Body: ' + cBody);

// Parse the JSON response
if (response.getStatusCode() >= 400) {
System.debug('The status code returned was not expected: ' +
response.getStatusCode() + ' ' + response.getStatus() + ' ' + response.getBody());
} else {
System.debug(response.getBody());
}
}
}

// MIT License


Comment ça a été?