ImplementationClassicTo create a new Apex class, access Setup in SalesForce, and type in "Apex" in the quick search box. Select "Build ... Develop ... Apex Classes". ![](/download/attachments/73498628/image2018-3-16%2016%3A55%3A53.png?version=1&modificationDate=1660068156000&api=v2)
LightningAccess Setup, and search for "Apex" in the search box. ![](/download/thumbnails/73498628/image2019-3-16_18-14-41.png?version=1&modificationDate=1660068156000&api=v2)
Classic and LightningCreate a new class. Add the following code:
Translations Ignore |
---|
Code Block |
---|
language | java |
---|
title | Sample Apex getCallerInformation |
---|
| @RestResource(urlMapping='/jtelACD/createVoiceMail')
global with sharing class JTELACD_CreateVoiceMail {
public class JTELVoiceMail {
public Integer ID;
public Integer AcdEventsID;
public String Caller;
public String ServiceNumbersNumber;
public String ServiceNumbersName;
public Integer AcdGroupsID;
public String AcdGroupsName;
public String AcdGroupsForeignSystemID;
public String dtCallStart;
public String dtCallEnd;
public String Subject;
public String Body;
public String Attachment1;
public String Attachment2;
public String Attachment3;
public Integer CreatingUsersID;
public String CreatingUsersUID;
public String CreatingUsersNickName;
public String TargetUsersID;
public String TargetUsersUID;
public String TargetUsersNickName;
public String SalesforceId;
public Integer SalesforceQueryResult;
}
@HttpPost
global static void doPost() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
try {
// Deserialize the JSON
JTELVoiceMail voiceMail = (JTELVoiceMail) System.JSON.deserialize( req.requestBody.toString(), JTELVoiceMail.class );
res.statusCode = 200;
Case newCase = new Case ( subject = voiceMail.Subject,
ContactId = voiceMail.SalesforceId,
Description = voiceMail.Body + '\r\nFile: ' + voiceMail.Attachment1,
SuppliedPhone = '+' + voiceMail.Caller );
insert newCase;
res.responseBody = Blob.valueOf( System.JSON.serialize( newCase ) );
}
catch( Exception e ) {
res.statusCode = 500; // Internal server error
res.responseBody = Blob.valueOf( e.getMessage() );
}
}
} |
|
This sample class will create a Case object, and attach it to the supplied ContactId provided in the SalesforceId field. The telephone number will be added to the field SuppliedPhone. Warning |
---|
Note: this will NOT work if the SalesforceId field is not a valid contact in your Salesforce instance. Please bear this in mind, when executing the examples below. |
CURL TestFirst of all, obtain an OAUTH Token, see Testing with CURL. Next, create a file on your local disk, containing the following example Callback event data in JSON: Translations Ignore |
---|
Code Block |
---|
@RestResource(urlMapping='/jtelACD/createVoiceMail')
global with sharing class JTELACD_CreateVoiceMail {
public class JTELVoiceMail {
public Integer ID;
public Integer AcdEventsID;
public String Caller;
public String ServiceNumbersNumber;
public String ServiceNumbersName;
public Integer AcdGroupsID;
public String AcdGroupsName;
public String AcdGroupsForeignSystemID;
public String dtCallStart;
public String dtCallEnd;
public String Subject;
public String Body;
public String Attachment1;
public String Attachment2;
public String Attachment3;
public Integer CreatingUsersID;
public String CreatingUsersUID;
public String CreatingUsersNickName;
public String TargetUsersID;
public String TargetUsersUID;
public String TargetUsersNickName;
public String SalesforceId;
public Integer SalesforceQueryResult;
}
@HttpPost
global static void doPost() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
try {
// Deserialize the JSON
JTELVoiceMail voiceMail = (JTELVoiceMail) System.JSON.deserialize( req.requestBody.toString(), JTELVoiceMail.class );
res.statusCode = 200;
Case newCase = new Case ( subject = voiceMail.Subject,
ContactId = voiceMail.SalesforceId,
Description = voiceMail.Body + '\r\nFile: ' + voiceMail.Attachment1,
SuppliedPhone = '+' + voiceMail.Caller );
insert newCase;
res.responseBody = Blob.valueOf( System.JSON.serialize( newCase ) );
}
catch( Exception e ) {
res.statusCode = 500; // Internal server error
res.responseBody = Blob.valueOf( e.getMessage() );
}
}
} |
|
The following CURL command can be used to test this API, assuming the file created above was named: c:\temp\eventJSONData.json Translations Ignore |
---|
Code Block |
---|
title | CURL - getCallerInformation Test |
---|
| curl.exe -L --post302 --silent -i -X POST -d '@C:\temp\eventJSONData.json' --header "Content-Type: application/json" --header "Authorization: Bearer <OAUTH_TOKEN>" --header "Connection: Close" "https://<SALES_FORCE_INSTANCE_URL>/services/apexrest/jtelACD/createVoiceMail" |
|
|