Created
January 12, 2016 20:52
-
-
Save ccoenraets/fd3c960639805bcb1a11 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public with sharing class SlackOpportunityPublisher { | |
private static final String slackURL = 'YOUR_WEBHOOK_URL'; | |
public class Oppty { | |
@InvocableVariable(label='Opportunity Name') | |
public String opptyName; | |
@InvocableVariable(label='Stage') | |
public String stage; | |
} | |
@InvocableMethod(label='Post to Slack') | |
public static void postToSlack(List<Oppty> oppties) { | |
Oppty o = oppties[0]; // If bulk, only post first to avoid overloading Slack channel | |
Map<String,Object> msg = new Map<String,Object>(); | |
msg.put('text', 'The following opportunity has changed:\n' + o.opptyName + '\nNew Stage: *' + o.stage + '*'); | |
msg.put('mrkdwn', true); | |
String body = JSON.serialize(msg); | |
System.enqueueJob(new QueueableSlackCall(slackURL, 'POST', body)); | |
} | |
public class QueueableSlackCall implements System.Queueable, Database.AllowsCallouts { | |
private final String url; | |
private final String method; | |
private final String body; | |
public QueueableSlackCall(String url, String method, String body) { | |
this.url = url; | |
this.method = method; | |
this.body = body; | |
} | |
public void execute(System.QueueableContext ctx) { | |
HttpRequest req = new HttpRequest(); | |
req.setEndpoint(url); | |
req.setMethod(method); | |
req.setBody(body); | |
Http http = new Http(); | |
HttpResponse res = http.send(req); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment