Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titleSample Apex writeCallStatistics
@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;
    }
}

...