Implementation
Classic
To create a new Apex class, access Setup in SalesForce, and type in "Apex" in the quick search box.
Select "Build ... Develop ... Apex Classes".
Lightning
Access Setup, and search for "Apex" in the search box.
Classic and Lightning
Create a new class. Add the following code:
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.
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 Test
First 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:
@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
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"