...
| Code Block | ||
|---|---|---|
| ||
@RestResource(urlMapping='/jtelACD/getEmailTasks')
global with sharing class JTELACD_GetEmailTasks {
// Class to decode the parameters
public class GenericQueryParams {
public String Param1;
public String Param2;
public String Param3;
public String Param4;
public String Query;
}
@HttpPost
global static Stringvoid doPost() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
res.addHeader('Content-Type', 'application/json');
//
Deserialize the JSON (not used in this example// -Deserialize just for illustration purposes)the JSON
GenericQueryParams genericQueryParams = (GenericQueryParams) System.JSON.deserialize( req.requestBody.toString(), GenericQueryParams.class );
//List<Task> Findtasks next task to schedule in jtel system.
// Note - the exact logic of this will be dependent on the Salesforce installation - this is JUST AN EXAMPLE.
List<Task> tasks = [= [
SELECT FIELDS(STANDARD),
TYPEOF Who
WHEN Lead THEN FirstName, LastName, Email
WHEN Contact THEN FirstName, LastName, Email
END
FROM Task
WHERE Status = 'Inbound Email'
WITH USER_MODE
LIMIT 1
LIMIT 1];
if ( tasks.size() >= 0 ) {
res.statusCode = 200;
res.responseBody return = Blob.valueOf(JSON.serialize( tasks[0] )));
return;
}
res.statusCode = 404;
return null res.responseBody = Blob.valueOf('{"error":"No task found"}');
}
} |
The second example sets Task objects to "In Progress" in Salesforce:
| Code Block | ||
|---|---|---|
| ||
@RestResource(urlMapping='/jtelACD/setEmailTaskStatus')
global with sharing class JTELACD_SetEmailTaskStatus {
// Class to decode the parameters
public class GenericQueryParams {
public String Param1;
public String Param2;
public String Param3;
public String Param4;
public String Query;
}
@HttpPost
global static Stringvoid doPost() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
res.addHeader('Content-Type', 'application/json');
// Deserialize the JSON
GenericQueryParams genericQueryParams = (GenericQueryParams) System.JSON.deserialize( req.requestBody.toString(), GenericQueryParams.class );
if (String.isBlank(genericQueryParams.Param1)) {
res.statusCode = 400;
Task task = [res.responseBody = Blob.valueOf('{"error":"Missing task id"}');
return;
}
if (String.isBlank(genericQueryParams.Param2)) {
res.statusCode = 400;
res.responseBody = Blob.valueOf('{"error":"Missing status"}');
return;
}
List<Task> tasks = [
SELECT FIELDS(STANDARD)
FROM Task
WHERE idId = :genericQueryParams.Param1
LIMIT 1
];
if (tasks.isEmpty()) {
res.statusCode = 404;
res.responseBody = genericQueryParams.Param1Blob.valueOf('{"error":"Task not found"}');
return;
}
Task task = tasks[0];
task.Status = genericQuerygenericQueryParams.Param2;
update task;
res.statusCode = 200;
res.responseBody return= SystemBlob.valueOf(JSON.serialize(task));
}
} |
CURL Test
First of all, obtain an OAUTH Token, see Testing with CURL.
...