...
| Code Block | ||||
|---|---|---|---|---|
| ||||
@RestResource(urlMapping='/jtelACD/writeCallStatistics')
global with sharing class JTELACD_WriteCallStatistics {
public class JTELCallStatistics {
public String SalesForceID;
public String AgentUID;
public Integer bOutbound;
public String CallerID;
public String ServiceNumber;
public String ServiceName;
public String AcdAgentGroupsName;
public String AcdConfigurationGroupsName;
public DatetimeString dtCallStart;
public DatetimeString dtCallAlert;
public DatetimeString dtCallConnected;
public DatetimeString dtCallEnd;
public Integer nDuration;
public Integer CONNRES;
public Integer Cause;
public String TransactionCodeExportKey;
}
@HttpPost
global static String doPost() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
try {
// Deserialize the JSON
JTELCallStatistics callStatistics = (JTELCallStatistics) System.JSON.deserialize( req.requestBody.toString(), JTELCallStatistics.class );
// Create a new task, and full some of the fields
if( ( callStatistics.CONNRES == 1 ) && ( callStatistics.dtCallConnected.length() > 0 ) ) {
Datetime dtConnected = Datetime.parse( callStatistics.dtCallConnected );
Task task = new Task();
task.ActivityDate = callStatistics.dtCallStartdtConnected.date();
task.CallDisposition = 'Completed';
task.Subject = 'Call with Agent ' + callStatistics.AgentUID;
task.Description = 'Agent Group ' + callStatistics.AcdAgentGroupsName +
'\r\nConfiguration ' + callStatistics.AcdConfigurationGroupsName;
task.CallType = callStatistics.bOutbound <> 0 ? 'Outbound' : 'Inbound';
task.CallDurationInSeconds = callStatistics.nDuration;
task.Status = 'Completed';
task.Type = 'Call';
// Link to sales force record
task.WhoId = callStatistics.SalesForceID;
// Insert
insert task;
}
}
catch( Exception e ) {
res.statusCode = 500; // Internal server error
return e.getMessage();
}
// All OK
res.statusCode = 200;
return null;
}
} |
...