diff --git a/src/main/java/com/iemr/common/controller/cti/ComputerTelephonyIntegrationController.java b/src/main/java/com/iemr/common/controller/cti/ComputerTelephonyIntegrationController.java index 711019eb..b9e94650 100644 --- a/src/main/java/com/iemr/common/controller/cti/ComputerTelephonyIntegrationController.java +++ b/src/main/java/com/iemr/common/controller/cti/ComputerTelephonyIntegrationController.java @@ -21,7 +21,6 @@ */ package com.iemr.common.controller.cti; - import javax.ws.rs.core.MediaType; import org.slf4j.Logger; @@ -522,4 +521,23 @@ public String getIVRSPathDetails(@Param("{\"agent_id\":\"Integer\"}") @RequestBo logger.info("getIVRSPathDetails sending response " + response); return response.toString(); } + + @Operation(summary = "Get disposition count for campaign") + @RequestMapping(value = "/getDispositionCount", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON, headers = "Authorization") + public String getDispositionCount(@RequestBody String request, HttpServletRequest serverRequest) { + OutputResponse response = new OutputResponse(); + logger.info("getDispositionCount received a request " + request); + try { + String remoteAddress = serverRequest.getHeader("X-FORWARDED-FOR"); + if (remoteAddress == null || remoteAddress.trim().length() == 0) { + remoteAddress = serverRequest.getRemoteAddr(); + } + logger.info("Remote Address: " + remoteAddress); + response = ctiService.getDispositionCount(request, remoteAddress); + } catch (Exception e) { + logger.error("getDispositionCount failed with error " + e.getMessage(), e); + response.setError(e); + } + return response.toString(); + } } diff --git a/src/main/java/com/iemr/common/data/cti/DispositionCountRequest.java b/src/main/java/com/iemr/common/data/cti/DispositionCountRequest.java new file mode 100644 index 00000000..cb77bbd1 --- /dev/null +++ b/src/main/java/com/iemr/common/data/cti/DispositionCountRequest.java @@ -0,0 +1,11 @@ +package com.iemr.common.data.cti; +import lombok.Data; + +@Data +public class DispositionCountRequest { + private String transaction_id = "CTI_GET_DISP_COUNT"; + private String campaign_id; + private String disposition; + private String date; + private String enc_flag; +} \ No newline at end of file diff --git a/src/main/java/com/iemr/common/data/cti/DispositionCountResponse.java b/src/main/java/com/iemr/common/data/cti/DispositionCountResponse.java new file mode 100644 index 00000000..59439163 --- /dev/null +++ b/src/main/java/com/iemr/common/data/cti/DispositionCountResponse.java @@ -0,0 +1,41 @@ +package com.iemr.common.data.cti; +import lombok.Data; +import com.google.gson.annotations.Expose; +import java.util.List; + +@Data +public class DispositionCountResponse { + @Expose + private CTIResponse response; + + @Expose + private Integer count; + + @Expose + private String campaign_id; + + @Expose + private String disposition; + + @Expose + private String date; + + @Expose + private List dispositionData; + + @Expose + private String encryptedData; // for enc_flag = "1" + + // Inner class for detailed disposition data + @Data + public static class DispositionData { + @Expose + private String disposition; + + @Expose + private Integer count; + + @Expose + private String date; + } +} \ No newline at end of file diff --git a/src/main/java/com/iemr/common/service/cti/CTIService.java b/src/main/java/com/iemr/common/service/cti/CTIService.java index cef53ebf..e980cc4c 100644 --- a/src/main/java/com/iemr/common/service/cti/CTIService.java +++ b/src/main/java/com/iemr/common/service/cti/CTIService.java @@ -94,4 +94,6 @@ public interface CTIService OutputResponse getIVRSPathDetails(String request, String remoteAddress)throws Exception; OutputResponse getVoiceFileNew(String request, String remoteAddr) throws IEMRException, JSONException; + + OutputResponse getDispositionCount(String request, String ipAddress) throws IEMRException, JSONException, JsonMappingException, JsonProcessingException; } diff --git a/src/main/java/com/iemr/common/service/cti/CTIServiceImpl.java b/src/main/java/com/iemr/common/service/cti/CTIServiceImpl.java index 81d8953a..031cf503 100644 --- a/src/main/java/com/iemr/common/service/cti/CTIServiceImpl.java +++ b/src/main/java/com/iemr/common/service/cti/CTIServiceImpl.java @@ -52,6 +52,8 @@ import com.iemr.common.data.cti.CampaignRole; import com.iemr.common.data.cti.CampaignSkills; import com.iemr.common.data.cti.CustomerLanguage; +import com.iemr.common.data.cti.DispositionCountRequest; +import com.iemr.common.data.cti.DispositionCountResponse; import com.iemr.common.data.cti.TransferCall; import com.iemr.common.repository.callhandling.BeneficiaryCallRepository; import com.iemr.common.repository.callhandling.IEMRCalltypeRepositoryImplCustom; @@ -962,7 +964,9 @@ public OutputResponse customerPreferredLanguage(CustomerLanguage custLang, Strin @Override public String callPostUrl(String urlRequest, String Json) { + logger.info("From call post URL method.. URL: " + urlRequest + " Json: " + Json); String result = httpUtils.post(urlRequest, Json); + logger.info("From call post URL method.. result: " + result); return result; } @@ -1084,4 +1088,32 @@ public OutputResponse getIVRSPathDetails(String request, String remoteAddress) t return result; } + + @Override +public OutputResponse getDispositionCount(String request, String ipAddress) throws IEMRException, JSONException, JsonMappingException, JsonProcessingException { + + OutputResponse output = new OutputResponse(); + ObjectMapper objectMapper = new ObjectMapper(); + String ctiURI = ConfigProperties.getPropertyByName("get-disposition-count-URL"); + String serverURL = ConfigProperties.getPropertyByName("cti-server-ip"); + logger.info("Request="+request + ":: CTI URL="+ ctiURI + ":: Server URL="+ serverURL); + DispositionCountRequest dispositionRequest = objectMapper.readValue(request, DispositionCountRequest.class); + + ctiURI = ctiURI.replace("CTI_SERVER", serverURL); + + logger.info("calling disposition count URL: " + ctiURI); + logger.info("disposition Request="+dispositionRequest.toString()); + String response = this.callPostUrl(ctiURI, dispositionRequest.toString()); + logger.info("disposition count API returned: " + response); + + DispositionCountResponse result = objectMapper.readValue(response, DispositionCountResponse.class); + CTIResponse ctiResponse = result.getResponse(); + + if (ctiResponse.getResponse_code().equals(CUSTOM_API_SUCCESS)) { + output.setResponse(result.toString()); + } else { + output.setError(OutputResponse.GENERIC_FAILURE, ctiResponse.getReason(), ctiResponse.getStatus()); + } + return output; +} } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 868ab464..0437282d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -71,6 +71,9 @@ get-agent-summary-report-URL=http://CTI_SERVER/apps/customize_apps/piramil_repor ## agent summary report API get-details-call-report-URL=http://CTI_SERVER/apps/customize_apps/piramil_reports.php?report_type=acd&format=json&end_date=END_DATE&start_date=START_DATE +##1097 abandoned call report API +get-disposition-count-URL=http://CTI_SERVER/apps/CZUtilAPI.php + #============================================================================ # Configure Main Scheduler Properties #============================================================================ @@ -189,8 +192,8 @@ km-guest-user=guest km-guest-password=guest # CTI Config -cti-server-ip=10.208.122.99 -cti-logger_base_url=http://10.208.122.99/logger +cti-server-ip=192.168.45.55 +cti-logger_base_url=http://192.168.45.55/logger sms-gateway-url = #Encryption passphrase used by AESUtil for decrypting CTI passwords.