ImplementationClassicTo create a new Apex class, access Setup in SalesForce, and type in "Apex" in the quick search box. Select "Build ... Develop ... Apex Classes".
LightningAccess Setup, and search for "Apex" in the search box.
Classic and LightningCreate a new class. Add the following code:
Translations Ignore |
---|
Code Block |
---|
language | java |
---|
title | Sample Apex getCallerInformation |
---|
| @RestResource(urlMapping='/jtelACD/createCallbackcreateVoiceMail')
global with sharing class JTELACD_CreateCallbackCreateVoiceMail {
public class JTELCallbackJTELVoiceMail {
public Integer ID;
public Integer AcdEventsID;
public String Caller;
public String ServiceNumbersNumber;
public String ServiceNumbersName;
public Integer CallbackNumber AcdGroupsID;
public String ServiceNumbersNumberAcdGroupsName;
public String ServiceNumbersNameAcdGroupsForeignSystemID;
public IntegerString AcdGroupsIDdtCallStart;
public String AcdGroupsNamedtCallEnd;
public String AcdGroupsForeignSystemIDSubject;
public String dtCallStartBody;
public String dtCallEndAttachment1;
public String SubjectAttachment2;
public String BodyAttachment3;
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
JTELCallbackJTELVoiceMail callbackvoiceMail = (JTELCallbackJTELVoiceMail) System.JSON.deserialize( req.requestBody.toString(), JTELCallbackJTELVoiceMail.class );
res.statusCode = 200;
Case newCase = new Case ( subject = callbackvoiceMail.Subject,
ContactId = callbackvoiceMail.SalesforceId,
Description = callbackvoiceMail.Body + '\r\nFile: ' + voiceMail.Attachment1,
SuppliedPhone = '+' + callbackvoiceMail.CallbackNumberCaller );
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 VoiceMail event data in JSON: Translations Ignore |
---|
Code Block |
---|
{
"ID": 2496,
"Body": "Caller: +4919998764321\nCall Start: 2021-11-07 18:38:19.031\nACD Group: Group 1 - BigShoes\nCallbacknVoice Reason:Mail Hangupleft inby queuecaller",
"Caller": "+4919998764321",
"Subject": "ACD: automaticvoice callbackmail (hangup in queue) forfrom caller +4919998764321",
"Attachment1": "https://myjtelserver/CarrierPortal/ResourceDispatcher/clients/1/recordings/vm_anewfilename.wav",
"dtCallEnd": "2021-11-07T18:38:32",
"AcdEventsID": 2496,
"AcdGroupsID": 235,
"dtCallStart": "2021-11-07T18:38:19",
"SalesforceId": "00Q1n00000LSL4WEAX",
"AcdGroupsName": "Group 1 - BigShoes",
"TargetUsersID": null,
"CallbackNumber": "+4919998764321",
"TargetUsersUID": null,
"CreatingUsersID": null,
"CreatingUsersUID": null,
"ServiceNumbersName": "Big Shoes Hotline",
"TargetUsersNickName": null,
"ServiceNumbersNumber": "49199510",
"CreatingUsersNickName": null,
"SalesforceQueryResult": 1,
"AcdGroupsForeignSystemID": null
} |
|
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/createCallback"createVoiceMail" |
|
Warning |
---|
Note: it will not be possible to download the voicemail file from this example. In a real voice-mail example, the file will have a different name. Also, note that it is necessary to be logged into jtel from within the salesforce instance otherwise the jtel portal will not allow downloading of the file. |
|